作业帮 > 综合 > 作业

C语言初学者 求1道填空题1道改错题的详解

来源:学生作业帮 编辑:百度作业网作业帮 分类:综合作业 时间:2024/05/25 07:20:40
C语言初学者 求1道填空题1道改错题的详解
填空题:
给定程序中,函数fun的功能是建立一个N×N的矩阵.矩阵元素的构成规律是:最外层元素的值全部为1;从外向内第2层元素的值全部为2;第3层元素的值全部为3,……依此类推.例如,若N=5,生成的矩阵为:
1 1 1 1 1
1 2 2 2 1
1 2 3 2 1
1 2 2 2 1
1 1 1 1 1
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果.
注意:部分源程序在文件BLANK1.C中.
不得增行或删行,也不得更改程序的结构!

#include
#define N 7
//
printf("%d",aa[i]);
}
main()
{
int b,n;
printf("\nPlease enter a number and a base:\n");
scanf("%d%d",&n,&b);
fun(n,b);
printf("\n ");
}
C语言初学者 求1道填空题1道改错题的详解
第一题:(1)[] ; (2) i ; (3) i+1
第二题:(1)将“void fun(int m,int k);”最后的分号去掉
(2)将aa[i]=m/k改为aa[i]=m%k
(3)将for(;i;i--)改为for(i-=1;i>=0;i--)
再问: 我这边有答案 我是想知道为什么这么填这么该
再答: 第一空解释:因为要打印的图形刚好对应一个二维数组,所以函数fun()的参数应该表示一个二维数组,在此处,int(*a)[]和a[][]的含义是一样的。第二、三空解释:要想填这两空就要先理解这段程序是如何绘制这个方阵的。我的理解是,由外至内一圈一圈地绘制。所以一共需要绘制N/2(N为奇数)或N/2+1(N为偶数)圈。这对应着最外层循环for(i=0; i<m; i++)对于每一圈,先绘制顶和低,对应着语句for(j=i; j<N-i; j++)
    a[i][j]=a[N-i-1][j]=i+1;然后再绘制左侧和右侧,对应着语句for(k=i+1; k<N-i; k++)
    a[k][i]=a[k][N-i-1]=i+1;