C语言初学者 求1道填空题1道改错题的详解
来源:学生作业帮 编辑:搜狗做题网作业帮 分类:综合作业 时间:2024/08/18 16:00:58
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 ");
}
填空题:
给定程序中,函数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道改错题的详解](/uploads/image/z/2936810-2-0.jpg?t=C%E8%AF%AD%E8%A8%80%E5%88%9D%E5%AD%A6%E8%80%85+%E6%B1%821%E9%81%93%E5%A1%AB%E7%A9%BA%E9%A2%981%E9%81%93%E6%94%B9%E9%94%99%E9%A2%98%E7%9A%84%E8%AF%A6%E8%A7%A3)
第一题:(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;
第二题:(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;