[计算机类试卷]国家二级C语言机试(操作题)模拟试卷11及答案与解析.doc

上传人:dealItalian200 文档编号:498035 上传时间:2018-11-28 格式:DOC 页数:6 大小:31.50KB
下载 相关 举报
[计算机类试卷]国家二级C语言机试(操作题)模拟试卷11及答案与解析.doc_第1页
第1页 / 共6页
[计算机类试卷]国家二级C语言机试(操作题)模拟试卷11及答案与解析.doc_第2页
第2页 / 共6页
[计算机类试卷]国家二级C语言机试(操作题)模拟试卷11及答案与解析.doc_第3页
第3页 / 共6页
[计算机类试卷]国家二级C语言机试(操作题)模拟试卷11及答案与解析.doc_第4页
第4页 / 共6页
[计算机类试卷]国家二级C语言机试(操作题)模拟试卷11及答案与解析.doc_第5页
第5页 / 共6页
点击查看更多>>
资源描述

1、国家二级 C语言机试(操作题)模拟试卷 11及答案与解析 一、程序填空题 1 给定程序中,函数 fun的功能是将 a和 b所指的两个字符串转换成面值相同的整数,并进行相加作为函数值返回,规定字符串中只含 9个以下数字字符。 例如,主函数中输入字符串: 32486和 12345,在主函数中输出的函数值为:44831。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANKl C中。 不得增行或删行,也不得更改程序的结构 ! #include #include #include #define N 9 long ctod(char *s

2、) long d=0 ; while(*s) if(isdigit(*s) /*found*/ d=d*10+*s-_1_; /*found*/ _2_;) return d; long fun(char * a, char * b) /*found*/ return _3_; main() char s1N, s2N; do printf(“Input string s 1: ”); gets(s1); ) while(strlen(s1)N); do printf(“Input string s2: ”); gets(s2); ) while(strlen(s2)N); printf(“T

3、he result is: ld n”, fun(s1, s2); 二、程序修改题 2 给定程序 MODll C中函数 fun的功能是:为一个偶数寻找两个素数,这两个素数之和等于该偶数,并将这两个素数通过形参指针传回主函数。 请改正函数 fun中指定部位的错误,使它能得出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构 ! #include #include VOid fun(int a, int *b, int *c) int i, j, d, y; for(i=3; i #include void fun(char(*a)81, int num, char

4、*max) main() char ss1081, *ps; voidNONO(); int n, i=0; printf(“输入若干个字符串: ”); gets(s si); puts(s si); while(!strcmp(SSi, “*”)=0) i+; gets(s si); puts(ssi); n=i; fun(SS, n, &ps); printf(“ nmax= s n”, ps); NONO(); void NONO() *请在此函数内打开文件,输入测试数据,调用 fun函数,输出数据,关闭文件。 * char ss2081, *ps; int n, i=0; FTLE *

5、rf, *wf; rf=fopen(“in dat”, “r”); wf=fopen(“out dat”, “w”); fgets(sSi, 81, rf); while(!strncmp(SSi, “*”, 4)=0) i+; fgets(ssi, 81, rf); n=i; fun(ss, n, &ps); fprintf(wf, “ S”, ps), fclose(rf); fclose(wf); 国家二级 C语言机试(操作题)模拟试卷 11答案与解析 一、程序填空题 1 【正确答案】 (1)0 (2)s+ (3)ctod(a)+ctod(b) 【试题解析】 本题中函数 fun的功能是将

6、 a和 b所指的两个字符串转换成对应值的整数并进行相加作为函数值返回,函数 ctod(char*s)的功能是将字符串转化为long整型,故在 fun函数内调用 ctod函数完成字符串到整数的变换,然后求和即可。 解题思路 第一空:举例说明 ctod内循环的作用,例如将字符串 “123”转换为数亨时:第一次进入循环时, *s等于字符 “1”, d应等于 0*10+1,第一空处是将字符变成数字,字符 “1”变成数字 1可由字符 “1”减去字符 “0”得到,故第一空处应为 “0”。; 第二空: s是数组指针,在循环中 s不断往后移动直至到达数组结束,故第二窄处应为 “s+”。 第三空:由审题分析可知

7、,在 fun函数内两次调用 ctod函数完成字符串到整数的变换,然后求和,故第三空处为 “ctod(a)+ctod(b)”。 二、程序修改题 2 【正确答案】 (1)y=1; (2)d=ai; 【试题解析】 函数的功能是为一个偶数查找两个素数,这两个素数之和等于该偶数。 (1)第一标识下 “Y=1: ”变量 Y没有定义,编译时会提示出错。题中用标志 v区别 i是否是素数, y=1是素数, y=0不是素数。第一个标识下当 i是素数时, y最后的值就是进入循环结构前的初始化值 0,标识该值不是素数,所以 “Y=1: ”应该改为 “y=1: ”。 (2)在语句 “if(y=1)”中,应该是判断 (ai)是否是素数,即 d应赋值 “ai”而不是“d=a-i; ”,所以第二个标识下 “d=a-i: ”改为 “d=a-i: ”。 三、程序设计题 3 【正确答案】 int i, k=0, maxlen; *k为 a数组中最长串所在元素的下标,初始为 0, maxlen为 其串长 * maxlen=strlen(ak); for(i=1 ; imaxlen) msxlen=strlen(ai); k=i; *max=ak; 【试题解析】 该程序功能是找出最长的一个字符串。解题思路,首先指定 第一个字符串为长度最大的字符串,然后在循环过程中将其与其他的所有串的长度进行比较,求出最 K的串。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1