作业帮 > 综合 > 作业

给一个整数 N,生成一个 N*N 的矩阵,矩阵中元素取值为1-N2,1 在左上 角,其余各数按顺时针方向旋转前进

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/29 03:42:16
给一个整数 N,生成一个 N*N 的矩阵,矩阵中元素取值为1-N2,1 在左上 角,其余各数按顺时针方向旋转前进
,依次递增放置,如 N=4,则生成矩阵 如下
1\x052\x053\x054
12\x0513\x0514\x055
11\x0516\x0515\x056
10 \x059 \x058 \x057
要求输入 N,输出矩阵
C语言编程的哦
算法为边走边看能否继续前行,如果不能前行,就右转弯
#include
#include
main()
{
int **a,i,j,x,y,n;
printf("input the N:");
scanf("%d",&n);
a = (int**) malloc(sizeof(int*)*n);
for(i=0; i
再问: 你用的是指针的吧,虽然我看不懂,但是能够运行,要是只用数组的就好了有用
再答: 你的题目是“给一个正整数N,生成 N*N 的矩阵”这题意要求的是动态生成的。所以我只好这么做。 其实算法很简单。你可以把N*N的矩阵看成是个迷宫,x,y表示你走到的坐标,向右走就是由x,y走到x,y+1 向下走就是由x,y 走到x+1,y 同理向上走和向左走。明白了? 比如3阶矩阵,走的全路程为a[0][0]->a[0][1]->a[0][2]->到边了转向下->a[1][2]->a[2][2]->到边了转向左->a[2][1]->a[2][0]->到边了转向上->a[1][0]->下一个a[0][0]已经走过了转向右->a[1][1]->全走完了。 每走一步赋一个值而已。 简单吧。 至于你硬是不想要动态数组,那可以定一个足够大的二维数组,比如int a[20][20]; 把我程序前面的分配空间的部分删了,就行了。 把这个理解了后,拿去交差,估计你的同学们都会仰视你的。