Ⅰ 用c语言编程,输入整数n,输出相应方阵,比如n为5可得到下面方阵
#include <stdio.h>
#include <stdlib.h>
int main() {
int i,j,n;
printf("请输入整数n:");
scanf("%d",&n);
for(i=0; i<n; i++) {
for(j=0; j<n; j++) {
if(i==j) printf("%d ", 1);
else printf("%d ", 0);
}
printf("
");
}
}
Ⅱ 怎样用C语言输出矩阵
定义二维数组作为矩阵,然后用两个for循环打印出每个元素即可。
例如一个10x10的矩阵;
#define m 10
#define m 10
int a[m][n];
for(i = 0; i <m; i++){
for(j = 0; j < n; j++)
printf("%d",a[i][j]);
printf("\n");
}
Ⅲ 用C语言设计算法输出一个5*5阶的螺旋方阵
我在ACM上写了一个N*N阶螺旋阵的题,
代码给你了,可能有点长。
输入5即有结果。
#include <stdio.h>
int main()
{
int n,k,a[30][30]={0},x=0,y=0,w[5]={1,1,1,1,1};
scanf("%d",&n);
k=2;
a[0][0]=1;
while(k<=n*n){
if(w[1]&&(x>0&&a[x-1][y]==0)) {
a[x-1][y]=k;
k++;
x--;
if(x>0&&a[x-1][y]==0)
w[1]=1,w[2]=0,w[3]=0,w[4]=0;
else w[1]=0,w[2]=1,w[3]=1,w[4]=1;
}
else if(w[2]&&(y<n-1&&a[x][y+1]==0)){
a[x][y+1]=k;
k++;
y++;
if(y<n-1&&a[x][y+1]==0)
w[1]=0,w[2]=1,w[3]=0,w[4]=0;
else w[1]=1,w[2]=0,w[3]=1,w[4]=1;
}
else if(w[3]&&(x<n-1&&a[x+1][y]==0)){
a[x+1][y]=k;
k++;
x++;
if(x<n-1&&a[x+1][y]==0)
w[1]=0,w[2]=0,w[3]=1,w[4]=0;
else w[1]=1,w[2]=1,w[3]=0,w[4]=1;
}
else if(w[4]&&(y>0&&a[x][y-1]==0)){
a[x][y-1]=k;
k++;
y--;
if(y>0&&a[x][y-1]==0)
w[1]=0,w[2]=0,w[3]=0,w[4]=1;
else w[1]=1,w[2]=1,w[3]=1,w[4]=0;
}
}
for(k=0;k<n;k++){
int t=1;
for(x=0;x<n;x++){
if(t){
if(n<=3) printf("%-d",a[k][x]);
else if(n<=9) printf("%-2d",a[k][x]);
else printf("%-3d",a[k][x]);
t=0;
}
else {
if(x==n-1) printf(" %-d",a[k][x]);
else {
if(n<=3) printf(" %-d",a[k][x]);
else if(n<=9) printf(" %-2d",a[k][x]);
else printf(" %-3d",a[k][x]);
}
}
}
printf("\n");
}
return 0;
}
Ⅳ c语言输出魔方阵
#include<stdio.h>
main()
{
int a[16][16]={0};
int b,c,d,e,f;
printf("请输入魔方阵的阶数:");
scanf("%d",&b);
e=b/2;
d=0;
for(c=1;c<=b*b;c++)
{
a[d][e]=c;
if(a[(d-1+b)%b][(e+1+b)%b]==0)
{
d=(d-1+b)%b;
e=(e+1+b)%b;
}
else
{
d=(d+1+b)%b;
e=e%b;
}
}
for(d=0;d<b;d++)
{
for(f=0;f<b;f++)
printf("%d\t",a[d][f]);
printf("\n");
}
}
Ⅳ 求助C语言高手,关于魔方矩阵的问题
#include <stdio.h>
#include <conio.h>
#define N 15
void main()
{
int iArr[N][N] = {0}; /*魔法阵数组*/
/*定义变量,i,j为循环控制变,iNum表示数组的行数列数,iPox、iPoy分别代表数组的行数、列数,iPosx、iPosy分别代表保存数组行数变量,保存数组列数变量*/
int i = 0, j = 0, iNum = 0, iPosx = 0, iPosy = 0, iPox = 0, iPoy = 0;
printf("input the number:\n"); /*输入数组的行数列数*/
scanf("%d",&iNum);
if (iNum % 2 == 0 || iNum > 15 || iNum <= 0) /*判断iNum是否为奇数*/
{
printf("ERROR!"); /*偶数,输出错误提示*/
}
else
{ /*为奇数,进行处理*/
iPox = 0;
iPoy = iNum / 2; /*算出1所在的位置*/
for (i=1; i<=iNum*iNum; i++)
{
iArr[iPox][iPoy] = i;
iPosx = iPox;
iPosy = iPoy;
if (iPox == 0) /*如果上一个数的行数为第一行,则下一个数的行数为最下一行,列数同样加1;*/
{
if (iPoy != iNum-1) /*上一个数是第一行最后一列时,则把下一个数放在上一个数的下面*/
{
iPox = iNum-1;
}
else
{ /*每一个数存放的行比前一个数的行数减1,列数加1(右上方)*/
iPox++;
iPoy--;
}
}
else
{
iPox--;
}
if (iPoy == iNum-1) /*当上一个数的列数为最后一列时,下一个数的列数应为第一列,行数减去1;*/
{
iPoy = 0;
}
else
{
iPoy++;
}
if (iArr[iPox][iPoy] != 0) /*如果按上面规则确定的位置上已有数时,则把下一个数放在上一个数的下面*/
{
iPox = iPosx+1;
iPoy = iPosy;
}
}
printf("The array is :\n");
for (i=0; i<iNum; i++) /*输出该数组*/
{
for (j=0; j<iNum; j++)
{
printf("%3d",iArr[i][j]);
}
printf("\n");
}
}
getch();
}
Ⅵ 用c语言输出一个矩形旋转的数字方阵
#include <stdio.h>
#define N 5 //阶数
int main(void)
{
int a[N][N];
int i,j,m,t;
t=1;
for(m=1;m<=(N+1)/2;m++)
{
i=m-1;
for(j=m-1;j<(N-m);j++)
a[i][j]=t++;
for(i=m-1;i<(N-m);i++)
a[i][j]=t++;
for(j=N-m;j>m-1;j--)
a[i][j]=t++;
for(i=N-m;i>m-1;i--)
a[i][j]=t++;
}
if(N%2==1) a[N/2][N/2]=t;
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
printf("%4d",a[i][j]);
printf("\n");
}
getchar();
}
Ⅶ 用C语言如何编程打印出由1到n^2的自然数构成的魔方阵,
奇数魔方阵就是将数字排列在nxn(n为奇数)的方阵上,要求满足各行、各列与各对角线的和相同。如下图所示,是n=5的奇数魔方阵。
一般程序语言的阵列多由0开始,为了计算方便,我们利用索引1到n的部份,而在计算是向右(左)上或向下时,我们可以将索引值除以n值,如果得到余数为1就向下,否则就往右(左)上。
Ⅷ 用C语言输出“魔方阵”
这个是17以内奇数阶和四阶的!!!
#include<stdio.h>
void main()
{
int x,i,j,fl,k=0,a[18][18]={0};
printf("请输入层数:");
scanf("%d",&x);
if((x!=4)&&(x%2==0)||(x<0)&&(x>18))
fl=0;
else if(x==4)
{
for(i=0;i<x;i++)
{
for(j=0;j<x;j++)
{
k+=1;
a[i][j]=k;
}
}
for(i=0;i<x;i++)
for(j=0;j<x;j++)
{
if(((i==j)&&(i<2))||((j==x-i-1)&&(j>2)))
{
k=a[i][j];a[i][j]=a[x-i-1][x-j-1];a[x-i-1][x-j-1]=k;
}
}
}
else
{
i=0;
j=x/2;
a[0][j]=1;
for(k=2;k<=x*x;k++)
{
i=i-1;
j=j+1;
if(i<0&&j>x-1)
{
i=i+1;
j=j-1;
}
else
{
if(i<0)i=x-1;
if(j>x-1)j=0;
}
if(a[i][j]==0)
a[i][j]=k;
else
{
i=i+2;
j=j-1;
a[i][j]=k;
}
}
}
if(fl==0)
printf("无此魔方阵!\n");
else
{
for(i=0;i<x;i++)
{
for(j=0;j<x;j++)
printf("%4d",a[i][j]);
printf("\n");
}
}
}
Ⅸ 求 c语言 输出 1到n^2的自然数构成的魔方阵。
魔方阵是用来锻炼学生的对二维数组元素的精确控制能力的。算法如下
魔方阵的排列规律如下:
⑴将1放在第一行中间一列;
⑵从2开始直到n×n止各数依次按下列规则存放;每一个数存放的行比前一个数的行数减1,列数加1(例如三阶魔方阵,5在4的上一行后一列);
⑶如果上一个数的行数为1,则下一个数的行数为n(指最下一行);例如1在第一行,则2应放在最下一行,列数同样加1;
⑷当上一个数的列数为n时,下一个数的列数应为1,行数减去1。例如2在第3行最后一列,则3应放在第二行第一列;
⑸如果按上面规则确定的位置上已有数,或上一个数是第一行第n列时,则把下一个数放在上一个数的下面。例如按上面的规定,4应该放在第1行第2列,但该位置已经被占据,所以4就放在3的下面;
Ⅹ 请编程达人用c语言编写一个程序输出魔方阵
#include <stdio.h>
#define N 16 //这里可以修改N的值
int main()
{
int a[N][N],i,j,k,p,m,n;
p=1;
while(p==1) /*要求阶数为1~15的商数*/
{ printf("Enter n(n=1~15):"); //可以输入小于等于N-1的整数
scanf("%d",&n);
if((n!=0)&&(n<=N-1)&&(n%2!=0)) p=0;
}
for(i=1;i<=n;i++) /*初始化*/
for(j=1;j<=n;j++) a[i][j]=0;
j=n/2+1; /*建立魔方阵*/
a[1][j]=1;
for(k=2;k<=n*n;k++)
{ i=i-1;
j=j+1;
if((i<1)&&(j>n))
{ i=i+2;
j=j-1;
}
else
{ if(i<1) i=n;
if(j>n) j=1;
}
if(a[i][j]==0) a[i][j]=k;
else
{ i=i+2;
j=j-1;
a[i][j]=k;
}
}
for(i=1;i<=n;i++) /*输出魔方阵*/
{ for(j=1;j<=n;j++)
printf("%4d",a[i][j]);
printf("\n");
}
return 0;
}