1、二级 C 语言-400 及答案解析(总分:100.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:30.00)1.下列给定程序中,函数 fun 的功能是:在形参 s 所指字符串中的每个数字字符之后插入一个*号。例如,形参 s 所指的字符串为“def35adh3kjsdf7”,执行后结果为“def3*5*adh3*kjsdf7*”。 请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。 注意:部分源程序给出如下。 不得增行或删行,也不得更改程序的结构! 试题程序: #includestdio.h void fun(char*s) int i,j,n; for(i=
2、0;8i!=“/0“;i+) /*found*/ if(si=“0“ 1si=“9“) n=0; /*found*/ while(si+1+n!= 2) n+; for(j=i+n+1;ji;j-) /*found*/ sj+1= 3; sj+1=“*“; i=i+1; main() char s60=“def35adh3kjsdf7“; printf(“/nThe original string is:%s/n“,s); fun(s); printf(“/nThe result is:%s/n“,s); (分数:30.00)二、程序修改题(总题数:1,分数:30.00)2.下列给定程序中函数
3、 fun 的功能是:根据整型形参 m,计算如下公式的值: (分数:30.00)三、程序设计题(总题数:1,分数:40.00)3.编写函数 fun,其功能是:实现 B=A+A“,即将矩阵 A 加上 A 的转置,存放在矩阵 B 中。计算结果在main 函数中输出。 例如, 程序输出: (分数:40.00)_二级 C 语言-400 答案解析(总分:100.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:30.00)1.下列给定程序中,函数 fun 的功能是:在形参 s 所指字符串中的每个数字字符之后插入一个*号。例如,形参 s 所指的字符串为“def35adh3kjsdf7”,执行后结
4、果为“def3*5*adh3*kjsdf7*”。 请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。 注意:部分源程序给出如下。 不得增行或删行,也不得更改程序的结构! 试题程序: #includestdio.h void fun(char*s) int i,j,n; for(i=0;8i!=“/0“;i+) /*found*/ if(si=“0“ 1si=“9“) n=0; /*found*/ while(si+1+n!= 2) n+; for(j=i+n+1;ji;j-) /*found*/ sj+1= 3; sj+1=“*“; i=i+1; main() char s
5、60=“def35adh3kjsdf7“; printf(“/nThe original string is:%s/n“,s); fun(s); printf(“/nThe result is:%s/n“,s); (分数:30.00)解析:(1)。二、程序修改题(总题数:1,分数:30.00)2.下列给定程序中函数 fun 的功能是:根据整型形参 m,计算如下公式的值: (分数:30.00)解析:(1)for(i=2;i=m;i+) (2)y+=1.0/(i*i); 或 y+=(double)1/(i*i); 解析 (1)根据公式可以知道 for 循环语句中变量 i 的取值范围应该包括 m。
6、(2)变量 y 是一个 double 型变量,而 i 是整型变量,所以要进行类型转换,改为 y+=1.0/(i*i);或y+=(double)1/(i*i);。三、程序设计题(总题数:1,分数:40.00)3.编写函数 fun,其功能是:实现 B=A+A“,即将矩阵 A 加上 A 的转置,存放在矩阵 B 中。计算结果在main 函数中输出。 例如, 程序输出: (分数:40.00)_正确答案:()解析:void fun(int a33,int b33) int i,j; for(i=0;i3;i+) for(j=0;j3;j+) bij=aij+aji;/*把矩阵 a 加上 a 的转置,存放在矩阵 b 中*/ 解析 行列数相等的二维数组的转置就是行列互换,即转置后的第 i 行第 j 列正好对应原矩阵的第 j 行第 i 列。本题使用双层循环实现矩阵的转置,并将计算结果存入矩阵 b 中,外层循环控制矩阵的行下标,内层循环控制矩阵的列下标。