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

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

1、国家二级 C语言机试(操作题)模拟试卷 364及答案与解析 一、程序填空题 1 人员的记录由编号和出生年、月、日组成, N名人员的数据已在主函数中存入结构体数组 std中。函数 fun的功能是:找出指定出生年份的人员,将其数据放在形参 k所指的数组中,由主函数输出,同时由函数值返回满足指定条件的人数。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANK1 C中。 不得增行或删行,也不得更改程序的结构 ! 1 #include stdio h 2 #define N 8 3 typedef struct 4 int num; 5

2、int year, month, day; 6 STU; 7 int fun(STU *std, STU *k, int year) 8 int i, n=0; 9 for(i=0; i N; i+) 10 *found* 11 if(_1_=year) 12 *found* 13 kn+=_2_; 14 *found* 15 return( _3_); 16 17 main() 18 STU stdN=1, 1984, 2, 15, 2, 1983, 9, 21, 3, 1984, 9, 1,4, 1983, 7, 15, 5, 1985, 9, 28, 6, 1982, 11, 15, 7

3、, 1982, 6,22, 8, 1984, 8, 19; 19 STU kN; int i, n, year; 20 printf(Enter a year : );scanf( d, year); 21 n=fun(std, k, year); 22 if(n=0) 23 printf( nNo petson was born n d n, year); 24 else 25 printf( nThese persons were born n d n, year); 26 for(1=0; i n; i+) 27 printf( d d- d- d n, ki num, ki year,

4、 ki month,ki day); 28 29 二、程序修改题 2 给定程序 MODI1 C中函数 fun的功能是:计算 S=f(-n)+f(-n+1)+f(0)+f(1)+f(2)+f(n) 的值。例如,当 n为 5时,函数值应为:10 407143。 f(x)函数定义如下: 请改正程序中的错误,使程序能输出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构 !1 #include stdio h 2 #include math h 3 *found* 4 f(double x)5 6 if(x=0 0 x=2 0)7 return 0 0; 8 else i

5、f(x 0 0)9 return(x-1) (x-2); 10 else11 return(x+1) (x-2); 12 13 double fun(int n)14 int i; double s=0 0, y; 15 for (i= -n; i =n; i+)16 y=f(1 0*i); s+=y; )17 *found* 18 return s19 20 main()21 22 printf( f n, fun(5); 23 三、程序设计题 3 函数 fun的功能是:将两个两位数的正整数 a、 b合并形成一个整数放在 c中。 合并的方式是:将 a数的十位和个位数依次放在 c数的十位和千位

6、上, b数的十位和个位数依次放在 c数的百位和个位上。 例如,当 a=45, b=12时,调用该函数后, c=5142。 注意:部分源程序存在文件 PROG1 c中。数据文件 in dat中的数据不得修改。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 1 #include stdio h 2 void fun(int a, int b, long *c 3 4 5 6 main() 7 int a, b; long c; 8 void NONO(); 9 printf(Input a, b: ); 10 scanf( d, d, 14 15

7、 void NONO() 16 *本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 * 17 FILE *rf, *wf; 18 int i, a, b ; long c; 19 rf=fopen(in dat, r); 20 wf=fopen(out dat, w); 21 for(i=0 ; i 10; i+) 22 fscanf(rf, d, d, a, b); 23 fun(a, b, c); 24 fprintf(wf, a= d, b= d, c= 1d n”, a, b, c); 25 26 fclose(rf); 27 fclose(wf); 28 国家二级 C语言

8、机试(操作题)模拟试卷 364答案与解析 一、程序填空题 1 【正确答案】 (1)stdi year (2)stdi (3)n 【试题解析】 fun函数的功能是在结构体数组 std中找出指定出生年份的人员将其数据放在形参 k所指的数组中。 第一空:比较结构体的出生年份是否等于 year, std是结构体指针,指向结构体数组的首地址,因此访问一个结构体的 year成员是 “stdi year”,因此第一空处应为 “if(stdi year=year)”。 第二空:这里是将找到的数据放在形参 k所指的数组中, k是指针变量, k指向结构体数组的首地址, stdi是结构体的地址,因此等号左边也应该是

9、地址,故第二空处应为 “kn+=stdi; ”。 第三空: fun函数的返回值是满足指定条件的人数 n,故第三空处是“return(n); ”。 二、程序修改题 2 【正确答案】 (1)double f(double x) (2)return s; 【试题解析】 (1)第一个标识下 f函数的定义缺少返回值类型,所以将 “f(double x)”改为 “double f(double x)”。 (2)第二个标识下返回语句没有分号结束。所以,第二个标识下 “return s”应该改为 “return s; ”。 三、程序设计题 3 【正确答案】 *c=(a 10)*1000+(b 10)*100+ (a 10)*10+(b 10); 【试题解析】 (1)分解两位数的正整数 n的个位和十位数,可用 n 10和 n 10实现。 (2)设 x0、 x1、 x2、 x3为一位数,则 x0、 x110、 x2100、 x31000,可以分别使 x0、 x1、 x2、 x3构成个、十、百、千带权数,而 x0+x110+x2100+x31000构成四位数。本题最多只考虑四位数。

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

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

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