大佬快来救命啊~
void createMatrix(int n);//声明一个void 类型的函数他包含一个int型参数void createMatrix(int n)//假设n为3
{
int i, j, oi, oj, num, max;//定义6个int型变量
// 创建一个存放矩阵的二维数组
int matrix;//int matrix n 1 n n n n n n 0
// 填充为0
max = n * n;//max=3*3==9
memset(matrix, 0, max * sizeof(int));//memset(matrix,0,9*sizeof(int)==36)
// 将1存放到第0行的中间位置
matrix = 1;//matrix==1
// 记录当前的行号和列号
i = 0;
j = n / 2;//j=1
for (num = 2; num <= max; num++)//1 num=2 2 num=3 3 num=4 4 num=5 5 num=6 6 num=7 7 num=8
{
// 记住当前位置
oi = i;//1 oi=0 2 oi=1 3 oi=2 4 oi=3 5 oj=4 6 oj=5 7 oj =6
oj = j;//1 oj=1 2 oj=1 3 oj=1 4 oj=1
// 向右上角走一步
i = i - 1;//1 i=-1 2 i=0 3 i=1 4 i=2 5 i=3 6 i=4 7 i=5
j = j + 1;//1 j=22 j=2 4 j=2 4 j=2 5 j=2 6 i=2 7 j=2
if (i < 0)
{
i = n - 1;//1 i=2
}
if (j > n - 1)
{
j = 0;
}
if (matrix != 0)
{
i = oi + 1;// 1 i=0+1=12 i=2 3 i=3 4 i=4 5 i=5 6 i=6 7 i=7
j = oj;//1 j=1 2 j=1 3 j=1 4 j=1 5 j=1 6 j=1 7 j=1
}
matrix = num;
}
// 打印结果
for (i = 0; i < n; i++)//1 i=7
{
for (j = 0; j < n; j++)//1 j=1 2 j=2
{
printf("%2d ", matrix);//1 matrix2 matrix
}
putchar('\n');
}
}
int main(void)
{
int n;
printf("请输入一个奇数:");
scanf("%d", &n);
while (!(n % 2) || n < 3)
{
printf("输入错误,必须是一个大于2的奇数!\n");
printf("请重新输入:");
scanf("%d", &n);
}
createMatrix(n);
return 0;
}
大佬 这个void createMatrix(int n)函数内的定义我看不懂啊。。有没有谁帮忙逐条分析下的 尤其是for循环内的 。。。。。。。嗯~ o(* ̄▽ ̄*)o? 人呐 注释不重要 那只是我自己琢磨时候写的 直接看代码就是 啥题目啊,发出来看一下 欸嘿嘿搞定了
假设n=3
0 0 00 1 0
0 0 00 0 0
0 0 00 0 0
i=0
j=1
1次循环 Num=2
oi=i=0
0j=j=1
i=i-1=-1
j=j+1=2
if(i<0) 执行 备注if 1
{i=n-1==3-1=2}
if(j>n-1) 不执行 备注if 2
{j=0}
if(matrix!=0)不执行备注if 3
{i=oi+1; j=oj;}
matrix=2
0 1 0
0 0 0
0 0 2
二次 num=3
oi=i=2
oj=j=2
i=i-1=1
j=j+1=3
if1不执行 i=1
if2执行 j=0
if3不执行
matrix=3
0 1 0
3 0 0
0 0 2
三次 num=4
oi=i=1
oj=j=0
i=i-1=0
j=j+1=1
if1不执行 i=0
if2不执行 j=1
if3执行 i=oi+1==1+1=2;j=oj=0;
matrix=4
0 1 0
3 0 0
4 0 2
四次 num=5
2
0
1
1
不 i=1
不 j=1
不
matrix=5
0 1 0
3 5 0
4 0 2
5次 num=6
1
1
0
2
不 i=0
不 j=2
不
matrix=6
0 1 6
3 5 0
4 0 2
6次 num=7
0
2
-1
3
是 i=2
是 j=0
是 i=1;j=2
matrix=7
0 1 6
3 5 7
4 0 2
7次循环 num=8
1
2
0
3
不 i=0
是 j=0
不
matrix=8
8 1 6
3 5 7
4 0 2
9次循环 num=9
0
0
-1
1
是 i=2
不 j=1
不
matirx=9
8 1 6
3 5 7
4 9 2
页:
[1]