1、国家二级( C语言)机试模拟试卷 382及答案与解析 一、程序填空题( 30分) 1 字符串 str由数字字符组成 (长度不超过 5个字符 ),可看作任意进制的数,请补充函数 fun(),该函数的功能是:把 str字符串转换成任意进制的数,结果保存在数组 xx中,由函数返回转换后数组腆的实际长度。其中 x表示 str原来的进制, y表示要转换成的进制。例如,输入 str “1111”,x=2,y=10,结果输出: 15。如果输入str=“15”, x 10,Y 2,结果输出: 1111。 注意:部分源程序给出如下。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun()的横线上填
2、入所编写的若干表达式或语句。 试题程序: #include stdio.h #include stdlib.h #include string.h #define N 8 int xxN; int fun(char *str,int x,int y) int sum; int i=0; char *p=str; for(i=0; i N; i+) xxi=0; sum=*p-0; p+; while (*p) sum=【 】 ; p+; i=0; while(sum!=0) xxi=【 】 ; 【 】 ; i+; return i; main () char str6; int i; int
3、n; int x; int y; printf(“Enter a string made up of 0 to 9 digits character:“); gets(str); if(strlen (str) 5) printf(“Error:string too longer!, please input again!nn“); exit(0); for(i=0;stri;i+) if(stri 0|stri 9) printf(“Error:%c not is 0 to 9 digits character!nn“, stri); exit(0); printf(“The origina
4、l string: “); puts(str); printf(“nINPUT x= “); scanf(“%d“, printf(“nINPUT y= “); scanf(“%d“, n fun(str,x,y); printf(“n%s is convered to“,str); for (i=n-1; i 0; i-) printf(“%d“,xxi); 二、程序修改题( 30分) 2 给定程序 MODll C中函数 fun的功能是:将 s所指字符串的正序和反序进行连接,形成一个新串放在 t所指的数组中。例如,当 s所指字符串为: “ABCD”时,则 t所指字符串中的内容应为: “ABC
5、DDCBA”。请改正程序中的错误,使它能得出正确的结果。注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构 ! 三、程序设计题( 40分) 3 请编写程序 fun,函数的功能是:实现 B A A,即把矩阵 A加上 A的转置,存放在矩阵 B中。计算结果在 main函数中输出。例如,输入下面的矩阵: 其转置矩阵为: 1 2 3 1 4 7 4 5 6 2 5 8 7 8 9 3 6 9 程序输出: 2 6 10 6 10 14 10 14 18注意:部分源程序在文件 PROGl C中。请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。国
6、家二级( C语言)机试模拟试卷 382答案与解析 一、程序填空题( 30分) 1 【正确答案】 sum*x+*p-0 sum%y sum=sum/y 【试题解析】 第一空:为了进行数字运算,必须要将字符串中的数字字符转换为数字, 用数字字符减去字符 0的 ASCII码,就得到对应的数字。将 x进制数转换为十进制数的算法是:以 1001为例,对应的十进制数为l*x3+0*x2+O*x+1=x*(x*(x*1+0) +0)+1。第二空:将十进制数转换为 y进制数的算法与将 y进制数转换为十进制数的算法正好相反,十进制数对 y取余,得到 y进制数的最低位。第三空:将十进制数整除 y后得到的数,再对
7、y取余,则得到 y进制数的次低位,如此循环,得到 y进制数的各位,转换的结果存于数值 xxN中。 二、程序修改题( 30分) 2 【正确答案】 (1)void fun(char*s, char*t) (2)t2*d 0; 【试题解析】 本题中函数的功能是将字符串的正序和反序进行连接。题目中首先由字符串的起始位置正序取字符,然后再由串尾逆序取字符,实现正序和逆序的连接。 三、程序设计题( 40分) 3 【正确答案】 【试题解析】 该程序功能是实现 B A A,即把矩阵 A加上 A的转置。其中,所谓矩阵的转置,是把行中的数据与列中的数据进行对调。解题过程中首先求得已给的矩阵的转置,然后在循环过程中对矩阵与该矩阵的转置对应元素求和。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1