1、国家二级 C+机试(操作题)模拟试卷 200及答案与解析 一、基本操作题 1 下列给定程序中,函数 fun的功能是:找出 100 x(x999)之间各位上的数字之和为 15的所有整数,并在屏幕输出;将符合条件的整数的个数作为函数值返回。 例如,当 n值为 500时,各位数字之和为 15的整数有: 159、 168、 177、 186、195、 249、 258、 267、 276、 285、 294、 339、 348、 357、 366、 375、 384、 393、429, 438、 447、 456、 465、 474、 483、 492,共有 26个。 请在程序的中括号处填入正确的内容
2、并将中括号删除,使程序得出正确的结果。 注意:部分源程序给出如下。 不得增行或删行,也不得更改程序的结构 ! 试题程序: #include int fun(int x) int n, s1, s2, s3, t; *found* n=【 1】; t=100; *found* while(t99 9 x #include typeclef struct aa int data; Struct aa*next; NODE; NODE*Creatlink(int n, int m) NODE*h=NULL, *p, *s; int i; *found* p=(NODE)malloc(sizeof(N
3、ODE); h=p; p一 next=NULL; for(i=1; idata=rand() m; s一 next=p一 next; p一 next=s; p=p一 next; *found* return p; outlink(NODE*h) NODE*p; p=h一 next; printf (“ n nTHE LIST: t n n HEAD“); while(P) printf(“一 d“, p一 data); p=p一 next; printf(“ n“); main() NODE*head; head=Creatlink(8, 22); outlink(head); 三、综合应用题
4、 3 请编函数 fun,其功能是将一个数字字符串转换成与其面值相同的长整型整数。可调用 strlen函数求字符串的长度。例如:在键盘输入字符串 2345210,函数返回长整型数 2345210。 注意:部分源程序存在 PROGl C中,请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun指定的部位填入所编写的若干语句。 试题程序: #include #include void NONO(); long fun(char*s) ) main() char s10; long r; printf(“请输入一个长度不超过 9 个字符的数字字符串: “); gets(s); r=fun(s
5、); printf(“r= 1d n“, r); NONO(); ) void NONO() *本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 * FILE*fp, *wf; int i; long r; char s10, *p; fp=fopen(“in dat“, “r“); wf=fopen(“out dat“, “w“); for(i=0; i10; i+) fgets(s, 10, fP); P=strchr(s, n); if(p)*p=0; r=fun(s); fprintf(wf, “ ld n“, r); fclose(fp); fclose(wf); 国家二
6、级 C+机试(操作题)模拟试卷 200答案与解析 一、基本操作 题 1 【正确答案】 (1)0 (2)x (3)t+ 【试题解析】 填空 1:变量 n用于存放符合条件的整数的个数,应赋初值为 0。 填空 2:根据题目要求,确定循环变量 t的取值范围为 t=x。 填空 3:循环变量 t自增 1操作。 二、简单应用题 2 【正确答案】 (1)p=(NODE*)malloc(sizeof(NODE); (2)retum h; 【试题解析】 (1)由变量定义可知 p为指向结点的指针。指向刚分配的结构指针,所以应改为 p=(NODE*)malloc(sizeof(NODE)。 (2)在动态分配内存的下一行语句是,使用临时结构指针变量 h保存 p指针的初始位置,最后返回不能使用 p,是因为 p的位置已经发生了变化,所以应改为return h。 三、综合应用题 3 【正确答案】 long fun(char*s) int i, lon; long sum=0; len=strlen(s); for(i=0; ilen; i+) sum=sum*10+*s一 0; s+; return sum; 【试题解析】 要把一个数字字符转为相应的数字,只要用它的 ASCII码减去 48即可。要把数字字符串转为相应的数字,则要从左到右依次取出字符转为相应数字,乘 10再加上下一位数字。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1