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

上传人:unhappyhay135 文档编号:498353 上传时间:2018-11-28 格式:DOC 页数:5 大小:30.50KB
下载 相关 举报
[计算机类试卷]国家二级C语言机试(操作题)模拟试卷406及答案与解析.doc_第1页
第1页 / 共5页
[计算机类试卷]国家二级C语言机试(操作题)模拟试卷406及答案与解析.doc_第2页
第2页 / 共5页
[计算机类试卷]国家二级C语言机试(操作题)模拟试卷406及答案与解析.doc_第3页
第3页 / 共5页
[计算机类试卷]国家二级C语言机试(操作题)模拟试卷406及答案与解析.doc_第4页
第4页 / 共5页
[计算机类试卷]国家二级C语言机试(操作题)模拟试卷406及答案与解析.doc_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

1、国家二级 C语言机试(操作题)模拟试卷 406及答案与解析 一、程序填空题 1 给定程序中,函数 fun的功能是用函数指针指向要调用的函数,并进行调用。规定在 _2_处使 fa指向函数 f1,在 _3_处使 fb指向函数 f2。当调用正确时,程序输出: x1=5 000000, x2=3 000000, x1*x1+x1*x2=40 000000 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANK1 C中。 不得增行或删行 ,也不得更改程序的结构 ! 1 #include stdio h 2 double f1(double x

2、) 3 return x *x; 4 double f2(double x, double y) 5 return x*y; ) 6 double fun(double a, double b) 7 8 *found* 9 _1_(*f)(); 10 double r1, r2; 11 *found* 12 f=_2_; * point fountion f1 * 13 r1=f(a); 14 *found* 15 f=_3_; * point fountion f2 * 16 r2=(*f)(a, b); 17 return r1+r2; 18 19 main() 20 double x1=

3、5, x2=3, r; 21 r=fun(x1, x2); 22 printf( nx1= f, x2= f, x1*x1+ x1*x2= f n, x1, x2, r); 23 二、程序修改题 2 给定程序 MODI1 C中函数 fun的功能是:从低位开始取出长整型变量 s中奇数位上的数,依次构成一个新数放在 t中。高位仍在高位,低位仍在低位。 例如,当 s中的数为: 7654321时, t中的数为: 7531。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构 ! 1 #include stdio h 2 *found* 3 v

4、oid fun(long s, long t) 4 long s1=10; 5 *t=s 10; 6 while(s 0) 7 s=s 100; 8 *t=s 10 * s1+*t, 9 *found* 10 s1=s1*100; 11 12 13 main() 14 long s, t; 15 printf( nPlease enter s: ); scanf( ld, s); 16 fun(s, t); 17 printf(The result is: 1d n, t); 18 三、程序设计题 3 请编写函数 fun,其功能是:将所有大于 1小于整数 m的非素数存入 xx所指数组中,非素数

5、的个数通过 k传回。 例如,若输入: 17,则应输出: 4 6 8 9 10 12 14 15 16。 注意:部分源程序在文件 PROG1 C中。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 1 #include stdio h 2 void fun(int m, int *k, int xx) 3 4 5 6 main() 7 8 int m, n, zz100; 9 void NONO(); 10 printf( nPlease enter an integer number between 10 and 100: ); 11 scan

6、f( d, *point fountion f1* ”和 “r1=f(a); ”可知 f是一个函数的指针,且 f指向的函数的返回值为 double型,函数的指针的定义方式是:类型标识符 (*指针变量名 )(),故第一空处的函数的指针的定义为 “double”。第二空: “f=_2_; *point fountion f1 * ”和 “r1=f(a); ”可知 f指向的函 数只有一个参数 a,因此 f指向 f1函数,即第二空处为 “f1”。第三空: “f=_3_; * point fountion f2* ”和 “r2=(*f)(a,b); ”, f指向的函数有两个参数,因此 f是指向 f2函数

7、,故第三空处应为 “f2”。 二、程序修改题 2 【正确答案】 (1)void fun (1ong s, long *t) (2)s1=s1*10; 【试题解析】 (1)根据 “*t=s 10”判断, t应该是个指针变量,所以 “void fun(long s, long t)”语句中的 t只 需改为 “void fun(10ng s, long *t)”。 (2)分析函数内的循环过程可知 s1的用途是每次将 *t扩大,记录每次得到的奇数位的数字的权值, s1的权值每次增加 1位,因此第二个标识下应该是 “s1=s1*10;”。 三、程序设计题 3 【正确答案】 1 int i, j; 2 int t=0; 初始化数组个数 3 for(i=2; i m; i+) 循环判断小于 n的数是否为素数 4 j=2 ; 5 while(j i) 6 (if(i j=0) 如果 i不是素数 7 xxt=i; 8 t+; 9 break; 10 11 j+; 12 *k=t; 【试题解析】 (1)根据求素数的方法判断数 i是否为素数。 (2)把不是素数的数留下来,其方法是:如果该数是素数则不处理;如果不是素数则放到数组 xx中,并且把数组的下标加 1,为下一个不是素数的数放在数组中做准备。 (3)返回个数,把 xx数组中已经写入的数的个数返回即可,即把数组 xx的最大下标加 1返回即可。

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

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

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