c语言高手帮忙

来源:百度知道 编辑:UC知道 时间:2024/05/15 03:02:45
输入数N,打印N*N的方阵
规律如下,例如输入3,
4 2 1
7 5 3
9 8 6

1楼的胡扯了吧,人家要的是N*N,你就给了个3*3
#include<stdio.h>
main()
{int i=0,j=1,k=1,l=0,a[100][100]={0};
scanf("%d",&i);
l=i;\*输入行列数*\
while(1)
{a[j][l]=k++;\*将第j行第l列标为k,k初始值为1*\
if(l==i&&j!=i)\*当数字在右上半边的时候,如果l=i,j!=i,即碰到右边,将位置调回最上面*\
{l=i-j;j=1;}
else
if(j==i)\*如果j=i,即位置在下底边,将位置调至左边第一列*\
{j=i-l+2;l=1;}
else
if(l<i&&j<i)\*如果l<i&&j<i,即未触边,l++,j++*\
{l++;j++;}
if(j>i) break;}\*退出*\
for(j=1;j<=i;j++)
{for(k=1;k<=i;k++)
printf("%3d",a[j][k]);\*打印输出*\
printf("\n"); }
}
LZ试试看,可以的话给我加点分哦,呵呵,不行的话我再调试下
ps:昨天夜里写的这个,困毙,所以没写注释,呵呵,本来想用公式的,后来发现推公式比吃早饭还麻烦,所以就用无聊方法做的了

main()
{int str[3][3]={4,2,1,7,5,3,9,8,6};
int N,i=0;scanf("%d",&N);
for(i=0;i<10;i++)
{if(N!=3)break;
pr