1、国家二级( C语言)机试模拟试卷 392 及答案与解析 一、程序填空题( 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 origin
4、al 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的功能是:求 k!(k long fun (int k) /*found*/ if k0 return (k*fun(k-1); /*found*/ else if
5、 ( k=0 ) return 1L; main() int k = 10 ; printf(“%d!=%ldn“, k, fun (k); 三、程序设计题( 40分) 3 请编写函数 fun( ),其功能是:将所有大于 1小于整数 m的素数存入 xx所指数组中,素数的个数通过 k传回。 例如,输入 25,则应输出 2 3 5 7 11 13 17 19 23。 注意:部分源程序给出如下。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入所编写的若干语句。 试题程序 : #include conio h #include stdio h void fun(int
6、m, int *k, int xx ) main( ) int m, n, zz100; clrscr( ); printf(“/nPlease enter an integer number between 10 and 100: “); scanf(“%d“, i m;i+) /*找出大于 1小于整数 m的素数 */ t=l; for(j=2; j i; j+) if(i%j=0) t=0; break; if(t=1) xxn+=i; *k=n; /*返回素数的个数 */ 【试题解析】 这道题是考查一个数是不是素数,只要掌握了判断素数的方法,问题便能顺利解决,请以此题为例,掌握判断素数的方法。