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

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

1、国家二级 C语言机试(操作题)模拟试卷 651及答案与解析 一、程序填空题 1 使用 VC+2010打开考生文件夹下 blank1中的解决方案。此解决方案的项目中包含一个源程序文件 blank1 c。在此程序中,函数 fun的功能是:判定形参 a所指的 NN(规定 N为奇数 )的矩阵是否是 ”幻方 ”,若是,函数返回值为 1;若不是,函数返回值为 0。 ”幻方 ”的判定条件是:矩阵每行、每列、主对角线及反对角线上元素之和都相等。 例如,以下 3X3的矩阵就是一个 “幻方 “: 4 9 2 3 5 7 8 1 6 请在程序的 下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。 注意:部

2、分源程序在文件 BLANK1 C中。 不得增行或删行,也不得更改程序的结构 ! 试题程序: #include stdio h #define N3 int fun(int(*a)N) int i, j, m1, m2, row, colum; m1=m2=0; for(i=0; i N; i+) j=N-i-1; m1+=aii; m2+=aij; if(m1!=m2)return0; for(i=0; i N; i+) *found* EOW=colum=【 1】 ; for(j=0; j N; j+) row+=aij; colum+=aji; ) *found* if(row!=colu

3、m)【 2】 (row!=m1) return0; *found* return【 3】 ; main() int xNN, i, j; printf(“Enter number for array: n“); for(i=0; i N; i+) for(j=0; j N; j+) scanf(“ d“, &xij); printf(“Array: n“); for(i=0; i N; i+) for(j=0; j Njj+) printf(“ 3d“, xij); printf(“ n“); if(fun(x) printf(“The Array is a magic square n“);

4、 else printf(“The Array isnt amagic square n“); 二、程序修改题 2 使用 VC+2010打开考生文件夹下 modil中的解决方案。此解决方案的项目中包含一个源程序文件 modi1 c。在此程序中,函数 fun的功能是:从 11个学生的成绩中统计出低于平均分的学生人数,此人数作为函数值返回,平均分存放在形参aver所指的存储单元中。 例如,输入 8名学生的成绩: 80 5、 60、 72、 90 5、 98、 51 5、 88、 64 则低于平均分的学生人数为 4(平均分为 75 5625)。 请改正程序中的错误,使它能得出正确的结果。 注意:部

5、分源程序在文件 MODI1 C中,不要改动 main函数,不得增行或删行,也不得更改程序的结构 ! 试题程序: #2nclude stdlib h #include stdio h #include conio h #define N20 int fun(float*s, int n, float*caver) float ave, t=0 0; int count=0, k, i; for(k=0; k n; k+) *found* t=sk; ave=t n; for(i=0; i n; 1; i+) if(si ave)count+; *found* *aVer=&aVe; return

6、 count; void main() float s30, aver; int m, i; system(“CLS“); printf(“ nPlease enter m: “); scanf(“ d“, &m); printf(“ nPlease enter d mark: n“, m); for(i=0; i m; i+) scanf(“ f“, s+i); printf(“ nThe number of students: d n“, fun(s, rm,&aver); printf(“Ave= f n“, aver); 三、程序设计题 3 使用 VC+2010打开考生文件夹下 pro

7、g1中的解决方案。此解决方案的项目中包含一个源程序文件 prog1 c。在此程序中,请编写函数 fun,其功能是:移动字符串中的内容,移动的规则是把第 1 m个字符,平移到字符串的最后,把第 m+1到最后的字符移到字符串的前部。 例如,字符串中原有的内 容为 “ABCDEFGHIJK“, m的值为 3,移动后,字符串中的内容应该是 “DEFGHIJKABC“。 注意:部分源程序在文件 PROG1 C中。 请勿改动 main函数和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 试题程序: #include stdio h #include string h #define

8、 N80 void fun(char*w, int m) void main() FILE*wf; char aN=“ABCDEFGHIJK“, b N=“ABCDEFGHIJK“; int m; printf(“The origina string: n“); puts(a); printf(“ n nEnter m: “); scanf(“ d“, &m); fun(a, m); printf(“ nThe string after moving: n“); puts(a); printf(“ n n“); *found* wf=fopen(“out dat“, “w“); fun(b,

9、3); fprintf(wf, “ s“, b); fclose(wf); *found* 国家二级 C语言机试(操作题)模拟试卷 651答案与解析 一、程序填空题 1 【正确答案】 (1)0 (2)| (3)1 【试题解析】 填空 1:本题考查为变量赋初值,在这里 row+=aij代表是每行的总和, eolum+=aji代表的是每列的总和,因而 row, eolum在初始化时应该为零,此空应该填 0。 填空 2:本题考查了 if条件语句,此句 if判断代表每行的总和与列是否相等,每行的总和是否与对角线的 总和相等,两者若有一个不成立,即返回 0,因而此空应该填写 If。 填空 3:题目要求若

10、矩阵是 “幻方 ”,则函数返回值为 1,因而此空应该填写 1。 二、程序修改题 2 【正确答案】 (1)t+=sk; (2)*aver=ave; 【试题解析】 根据题目要求,可利用循环语句累计 n个学生的总分,求得平均成绩后,再利用循环语句和条件选择语句进行后面的操作。若小于平均值,则将该值存放于 aver存储单元中。 t=sk是循环叠加错误, *aver=&ave为语法指向的错误。 三、程序设计题 3 【正确答案】 void fun(char*w, int m) int i, j; char t; for(i=1; i =m; i+)/*进行 m次的循环左移 * t=w0; for(j=1; wj!= 0; j+) *从第 2个字符开始以后的每个字符都依次前移一个字符 * wj-1=wj; wj-1=t; *将第 1个字符放到最后一个字符中 * 【试题解析】 本题应采用 “循环左移 ”的算法,多层循环用于控制移动的字符的个数,即需进行多少次循环,内嵌循环的作用是将从第 2个字符以后的每个字符依次 前移一个位置,最后将第 1个字符放到最后 个字符中。

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

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

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