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

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

1、国家二级 C语言机试(操作题)模拟试卷 304及答案与解析 一、程序填空题 1 给定程序中,函数 fun的功能是:将形参指针所指结构体数组中的三个元素按num成员进行升序排列。 请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。 注意:部分源程序给出如下。 不得增行或删行,也不得更改程序的结构 ! 试题程序: #include stdio h typedef struct int num; char name10; PERSON; *found* void fun(PERSON【 1】 *found* 【 2】 temp; if(std0 num std1 num) tem

2、p=std0; std0=std1; std1=temp; if(std0 num std2 num) temp=sta0; std0=std2; std2=temp; ) if(std1 num std2 hum) temp=std1; std1=std2; std2=temp; main() PERSON std=(5, “Zhanghu“, 2, “WangLi“, 6, “LinMin“); int i; *found* fun【 3】 ; printf(“The result is“: ); for(i=0; i 3; i+) printf(“ d, s“, stdi num, st

3、di name); 二、程序修改题 2 下列给定程序的功能是:读入一个整数 k(2k10000),输出它的所有质因子 (即所有为素数的因子 )。例如,若输入整数 2310,则应输出: 2, 3, 5, 7, 11。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动 main函数,不得增行或删行。也不得更改程序的结构 ! 试题程序: #inclucle conio h #include stdio h *found* IsPrime(int n); int i, m; m=1; for(i=2; i n; i+) *found* if!(n i) m=0; break; return(

4、m); main() int j, k; printf(“ nplease enter an integer number between 2 and 10000: “); Scanf(“ d“, &k); printf(“ n nThe prime factor(s)of d is(are): “, k); for(j=2; j k; j+) if(!(k j) (IsPrirne(j) printf(“ 4d, “, j); printf(“ n“); 三、程序设计题 3 请编写一个函数 void fun(int m, int k, int Xx),该函数的功能是:将大于整数m且紧靠 m的

5、 k个素数存入所指的数组中。 例如,若输入 17, 5,则应输出 19、 23、 29、 31、 37。 注意:部分源程序在文件 PROG1 C中。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 试题程序: #include conio h #include stdio h #include stdlib h void fun(int m, int k, int xx) void main() FILE*wf; int m, n, zz1000; system(“CLS“); printf(“ nPlease enter two intege

6、r: “); scanf(“ d d“, m, n); fun(m, n, z z); for(m=0; mn; m+) printf(“ d“, zzm); printf(“ n“); * wf=fopen(“out dat“, “w“); fun(17, 5, z z); for(m=0 ; m 5; m+) fprintf(wf, “ d“, zzm); fclose(wf); * 国家二级 C语言机试(操作题)模 拟试卷 304答案与解析 一、程序填空题 1 【正确答案】 (1)std (2)PERSON (3)std 【试题解析】 本题考查:数据类型的定义;数组元素的操作;函数参数的

7、传递。 要使用函数对整个数组进行操作时,应使用数组名作为函数的实参。当使用数组名作实参时,函数传递的实际上是数组的首地址,而并非数组本身,此时形参除了可以定义为指针变量外,还可以定义为数组,并且数组可以不指定大小,但无论用哪种形式,程序在编译时都将其作为一个指针变量处理。 填空 1:定义形参变量引用数组 std,此时形参可以 定义为指针变量,也可以定义为数组。由下文可知,程序是通过数组下标对数组元素进行操作的,因此形参应使用数组形式,而非指针形式。 填空 2:程序使用变量 temp交换结构体数组元素的值,因而 temp应定义为PERSON型。 填空 3:程序通过函数 fun对数组 std进行操

8、作,因此函数的实参应为 std。 二、程序修改题 2 【正确答案】 (1)IsPrime(int n) (2)if(!(n i) 【试题解析】 (1)函数定义格式错误,函数定义时后面不能加 “; ”,所以应该去掉分号。 (2)根据题意可 知, if条件语句判断 n是否可以整除 i,如果不能整除则为质因子,所以 if!(n i)应改为 if(!(n i)。 三、程序设计题 3 【正确答案】 void fun(int m, int k, int xx) int i, j, n; for(i=m+1, n=0; n k; i+) *找大于 m的素数,循环 k次,即找出紧靠 m的k个素数 * for(j=2; j i; j+) *判断一个数是否为素数,如果不是,跳出此循环,判断下一个数 * if(i j=0)break; if(j =i) *如果是素数,放入数组 xx中 * xxn+=i; 【试题解析】 本题主要考查素数的判定方法,如果一个数不能被除了 1和其自身以外的数整除,则这个数为素数。本程序使用循环语句控制需要判断的数,在循环体中判断该数是否为素数,若是则存入数组 xx中。

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

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

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