1、国家二级( C语言)机试模拟试卷 214及答案与解析 一、程序填空题( 30分) 1 给定程序中,函数 fun的功能是将参数给定的字符串、整数、浮点数写到文本文件中,再用字符串方式从此文本文件中逐个读入,并调用库函数 atoi和 atof将字符串转换成相应的整数、浮点数,然后将其显示在屏幕上。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANKl C中。 不得增行或删行,也不得更改程序的结构 ! #include #include void fun(char*s, int a, double f) *found* 【 1】 fp
2、; char str100, strli00, str2100; int a1; double f1; fp=fopen(“filel txt“, “w“); fprintf(fp, “ s d fn“, s, a, f); *found* 【 2】; fp=fopen(“filel txt“, “r“); *found* fscanf(【 3】 , “ s s s“, str, str1, str2); fclose(fp); a1=atoi(str1); f1=atof(str2); printf (“ nThe result: n n s d fn“, str, a1, f1); mai
3、n() char a10=“Hello!“; int b=12345; double c=98 76; fun(a, b, c); 二、程序修改题( 30分) 2 给定程序 MODll C中函数 fun的功能是:比较两个字符串,将长的那个字符串的首地址作为函数值返回。 请改正函数 fun中指定部位的错误,使它能得出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构 ! #include /*found*/ char fun(char*s, char*t) int s1=0, t1=0; char*ss, *tt; ss=s; tt=t; while(*ss) s1
4、+; /*found*/ (*ss)+; ) while(*tt) tl+; /*found*/ (*tt)+; if(tls1)return t; else return s; main() char a80, b80; printf(“ nEnter a string: “); gets(a); printf(“ nEnter a string again: “); gets(b); printf(“ nThe longer is: n n “ s “ n“, fun(a, b); 三、程序设计题( 40分) 3 函数: fun的功能是:将两个两位数的正整数 a、 b合并形成一个整数放在
5、c中。合 并的方式是:将 a数的十位和个位数依次放在 c数的千位和十位上, b数的十位和个位数依次放在 c数的百位和个位上。 例如,当 a=45, b=12时,调用该函数后, c=415Z; 注意:部分源程序存在文件 PROGl C中。数据文件 iff dat中的数据不得修改。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 #include void fun(int a, int b, long *c) main() int a,b; long c; void NONO (); printf(“Input a, b:“); scanf(“%d
6、,%d“, fun(a, b, printf(“The result is: %dn“, c); NONO(); void NONO () /* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *rf, *wf ; int i, a,b ; long c ; rf = fopen(“in.dat“, “r“); wf = fopen(“out.dat“,“w“); for(i = 0 ; i 10 ; i+) fscanf(rf, “%d,%d“, fun(a, b, fprintf(wf, “a=%d,b=%d,c=%ldn“, a, b, c); fclose
7、(rf); fclose(wf); 国家二级( C语言)机试模拟试卷 214答案与解析 一、程序填空题( 30分) 1 【正确答案】 (1)FILE* (2)fclose(fp) (3)fp 【试题解析】 第一空: “fp=fopen(“filel txt“, “w“); “可知 fp是文件型指针,故第一空处 fp的定义应为 “FILE*“。 第二空:第二处的后面一句是 “邱 =fopen(“filel txt“, “r“); “再次打开filel txt,因此在第二次打开 filel txt之前必须将文件关闭,故第二处是关闭文件,即 “fclose(fp)“。 第三空: fscanf的调用形
8、式是: fscanf(fp,格式字符串,输入列 表 ),因此第三空处应为 “fp“,从文件当中读出字符串、整数、浮点数。 二、程序修改题( 30分) 2 【正确答案】 (1)char*fun(char*s, char*t) (2)ss+; (3)tt+; 【试题解析】 (1)题目中要求返回字符串的首地址, fun函数中的返回值类型应该是 char*类型而不是 char型,所以 “charfhn(chin*s, chat*t)“应该改为“char*fun(char*s, char*t)“。 (2)第二个标识下应该是指向第一个字符串的下一个字符,而 “(*ss)+; “是对指针指向字符的值加 1,
9、所以 “(*ss)+; “改为 “ss+; “。 (3)同理,第三个标识符下的 “(*tt)+; “改为 “tt+; “。 三、程序设计题( 40分) 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