1、二级 C语言机试-280 及答案解析(总分:100.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:30.00)1.下列给定程序中,函数 fun的功能是:在形参 s所指字符串中的每个数字字符之后插入一个*号。例如,形参 s所指的字符串为“def35adh3kisdf7”,执行后结果为“def3*5*adh3*klsdf7*”。注意:部分源程序给出如下。不得增行或删行,也不得更改程序的结构!试题程序:#includesedio.hvoid fun(char*s)int i,j,n;for(i=0;si=/0;i+)/*found*/if(si=0 (1) si(=9)n=0;/*f
2、ound*/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=“def35adh3kisdf7“;printf(“/nThe original string is:%s/n“,s);fun(s);printf(/nThe result is:%s/n“,s);(分数:30.00)_二、程序改错题(总题数:1,分数:30.00)2.下列给定程序中,函数 fun的功能是:根据整型形参 m,计算如下公式的值:(分数:30.00)_三、程序设计题(总题数:1,分数:40.00)
3、3.编写函数 fun,其功能是:实现 B=A+A,即将矩阵 A加上 A的转置,存放在矩阵 B中。计算结果在main函数中输出。例如,输入下面的矩阵:1 2 34 5 67 8 9其转置矩阵为:1 4 72 5 83 6 9程序输出:2 6 106 10 1410 14 18注意:部分源程序给出如下。请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。试题程序:#includestdio.h#includeconio.h#includestdlib.hvoid fun(int a33,int b33)void main()(int a33=1,2,3,
4、4,5,6,7,8,9,t33;int i,j;system(“CLS“);fun(a,t);for(i=0;i3;i+)for(j=0;j3;j+)print(“%7d“,tij);printf(“/n“);(分数:40.00)_二级 C语言机试-280 答案解析(总分:100.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:30.00)1.下列给定程序中,函数 fun的功能是:在形参 s所指字符串中的每个数字字符之后插入一个*号。例如,形参 s所指的字符串为“def35adh3kisdf7”,执行后结果为“def3*5*adh3*klsdf7*”。注意:部分源程序给出如下。不
5、得增行或删行,也不得更改程序的结构!试题程序:#includesedio.hvoid fun(char*s)int i,j,n;for(i=0;si=/0;i+)/*found*/if(si=0 (1) si(=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=“def35adh3kisdf7“;printf(“/nThe original string is:%s/n“,s);fun(s);printf(/nThe result is:%
6、s/n“,s);(分数:30.00)_正确答案:(i=m;i+)(2)y+=1.0/(i*i);或 y+=(double)1/(i*i);)解析:解析 本题关键字有:for 循环语句;数据类型的强制转换。微分析(1)根据题目给出的公式可知变量 i的取值范围包括 m。(2)变量 y是 double型变量,而 j是 int型变量,要进行类型转换,所以改为 y+=1.0/(i*i);或y=(double)1/(i*i);。三、程序设计题(总题数:1,分数:40.00)3.编写函数 fun,其功能是:实现 B=A+A,即将矩阵 A加上 A的转置,存放在矩阵 B中。计算结果在main函数中输出。例如,输
7、入下面的矩阵:1 2 34 5 67 8 9其转置矩阵为:1 4 72 5 83 6 9程序输出:2 6 106 10 1410 14 18注意:部分源程序给出如下。请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。试题程序:#includestdio.h#includeconio.h#includestdlib.hvoid fun(int a33,int b33)void main()(int a33=1,2,3,4,5,6,7,8,9,t33;int i,j;system(“CLS“);fun(a,t);for(i=0;i3;i+)for(j=
8、0;j3;j+)print(“%7d“,tij);printf(“/n“);(分数:40.00)_正确答案:(void fun(int a33,int b33)int i,1;fo r(i=O:i c3:i+)for(j=0;j3;j+)bij=aij+aji;/*把矩阵 a加上 a的转置,存放在矩阵 b中*/)解析:解析 本题关键字有:矩阵的操作。矩阵 a转置后存入 a可用下面循环实现:int i,t;for(i=0;iN;i+)for(j=i;jN;j+)t=aij;aij=aji;aji=t;矩阵 a转置后存人 c可用下面循环实现:int i,j;for(i=0;iN;i+)for(j=0;jN;j+)cij=aji;微分析矩阵的转置就是行列互换,转置矩阵的第 i行第 j列对应原矩阵的第 j行第 i列,用双层循环实现矩阵的表示,一层循环控制矩阵的行下标,另一层循环控制矩阵的列下标,并将计算结果存入矩阵 b中。