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

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

1、国家二级 C语言机试(操作题)模拟试卷 632及答案与解析 一、程序填空题 1 使用 VC+2010打开考生文件夹下 blank1中的解决方案。此解决方案的项目中包含一个源程序文件 blank1 c。在此程序中,函数 fun的功能是:计算形参 x所指数组中 N个数的平均值 (规定所有数均为正数 ),将所指数组中小于平均值的数据移至数组的前部,大于等于平均值的数据移至 x所指数组的后部,平均值作为函数值返回,在主函数中输出平均值和移动后的数据。 例如,有 10个正数: 47、 30、 32、 40、 6、 17、 45、 15、 48、 26, 其平均值为30 500000。 移动后的输出为:

2、30、 6、 17、 15、 26、 47、 32、 40、 45、 48。 请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。 注意:部分源程序在文件 BLANK1 C中。 不得增行或删行,也不得更改程序的结构 ! 试题程序: #include stdlib h #include stdio h #define N10 double fun(double*x) int i, j; double av, yN; aV=0; for(i=0; i N; i+) *found* av+=【 1】 ; for(i=j=0; i N; i+) if(xi av) yj=xi; xi

3、=-1; *found* 【 2】 ; i=0; while(i N) if(xi!=-1)yj+=xi; *found* 【 3】 ; for(i=0; i N; i+)xi=yi; return av; main() int i, double xN; for(i=0; i N; i+) xi=rand() 50; printf(“ 4 0f“, xi); ) print: f(“ n“); print: f(“ nThe average is: f n“, fun(x); print: f(“ nThe result: n“, fun(x); for(i=0; i N; i+) prin

4、t: f(“ 5 0f“, xi); printf(“ n“); 二、程序修改题 2 使用 VC+2010打开考 生文件夹下 modi1中的解决方案。此解决方案的项目中包含一个源程序文件 modi1 c。在此程序中,假定整数数列中的数不重复,并存放在数组中。下列给定程序中函数 fun的功能是:删除数列中值为 X的元素,变量 n中存放数列中元素的个数。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构 ! 试题程序: #include stdio h #define N20 fun(int*a, int n, int x) int p

5、=0, i; an=x; while(x!=ap) p=p+1; *found* if(p=n) return-1; else for(i=p; i n-1; i+) *found* ai+1=ai; return n-1; void main() int wN=-3, 0, 1, 5, 7, 99, 10, 15, 30, 90, x, n, i; n=10; printf(“The original data: n“); for(i=0; i n; i+) printf(“ 5d“, wi); printf(“ nInput x(to delete): “); Scarlf(“ d“, &

6、x); printf(“Delete: d n“, x); n=fun(W, n, x); if(n=-1) printf(*“No be found!* n n“); else printf(“The data afterdeleted: n“); for(i=0; i n; i+) printf(“ 5d“, wi); printf(“ n n“); 三、程序设计题 3 使用 VC+2010打开考生文件夹下 prog1中的解决方案。此解决方案的项目中包含一个源程序文件 prog1 c。在此程序中,编写函数 fun,其功能是:判断 t所指字符串中的字母是否由连续递增字母序列组成 (字符串长度

7、大于等于 2)。例如字符串: uvwxyz满足要求;而字符串: uvxwyz不满足要求。 注意:部分源程序存放在 PROG1 C中,请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun指定的部位填入所编写的若干语句。 试题程序: #include stdio h #include string h void NONO(); int fun(char*t) main() char s26; printf(“请输入一个字母组成的字符串: “); gets(s); if(fun(s)pr2ntf(“ s是由连续字母组成的字符串 n“, s); else print: f(“ s不是由连续

8、字母组成的字符串 ! n“, s); NONO(); void NONO() *本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 * FILE*fp, *wf; int i; char s26, *p; fp=fopen(“c: test in dat“, “r“); wf=fopen(“c: test out dat“, “w“); for(i=0; i 10; i+) fgets(S, 26, fp); P=strchr(s, n); if(P)*p=0; if(fun(s)fprintf(wf, “ s n“, s+2); else fprintf(wf, “ s n“, s

9、trrev(s); fclose(fp); fclose(wf); 国家二级 C语言机试(操作题)模拟试卷 632答案与解析 一、程序填空题 1 【正确答案】 (1)xi N (2)j+或 +j (3)i+或 +i 【试题解析】 填空 1: av代表平均值,本题考查了怎样求平均值,因此本空应该填写 xi N。 填空 2:通过 for循环和 if判断找到 xi中比平均值小的数,并把这些值赋值给yj,因此本空应该填写 j+或者 +j。 填空 3:通过 while循环语句,把 xi中比平均值大的数放在数组 y的后半部分,因此本空应该填写 i+或者 +i。 二、程序修改题 2 【正确答案】 (1)if

10、(p=n)return-1; (2)ai=ai+1; 【试题解析】 (1)需要确定 if条件语句的条件表达式,发现变量 p大写, C语言中变量是区别大小写的。 (2)删除数列中的元素,删除后,后面的元素依次前移一个位置,因此此处应为ai=ai+1;。 三、程序设计题 3 【正确答案】 int fun(char*t) int len=strlen(t); if(len 2) return0; char before ch=t0, char current ch; int flag=1; for(int i=1; ti!= 0; +i) current_ch=ti; iffbefore_ch!=c

11、urrent_ch-1) flag=0; break; before_ch=current_ch; return flag; 【试题解析】 函数 fun的功能是判断指针 t指向的字符串是否是由连续递增的字母构成,返回值为整数, 0代表不满足条件。根据题目要求,字符串长度必须大于等于 2,所以首先需要对 t指向的字符串进行长度判断,小 于 2的字符串返回 0。接着需要对字符串中的连续字符,逐个进行比较。 C语言中字符变量可以当作整数使用,所以当前字符只有是前一个字符的 ASCII码 +1,才能说它们是连续递增字母序列,然后比较后一个字符与当前字符的 ASCII码,如果字符串中的所有字符都满足条件,则返回 1;否则说明该字符串不满足要求,此时设置 flag=0,后面的字符也

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

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

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