1、全国计算机二级 C语言上机试题 2+2015年及答案解析(总分:30.00,做题时间:90 分钟)1.给定程序中,函数 fun的功能是将形参给定的字符串、整数、浮点数写到文本文件中,再用字符方式从此文本文件中逐个读入并显示在终端屏幕上。 请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANK1.C中。 不得增行或删行,也不得更改程序的结构! 给定源程序: #include void fun(char *s, int a, double f) /*found*/ _1_ fp; char ch; fp = fopen(“file1.
2、txt“, “w“); fprintf(fp, “%s %d %f/n“, s, a, f); fclose(fp); fp = fopen(“file1.txt“, “r“); printf(“/nThe result :/n/n“); ch = fgetc(fp); /*found*/ while (!feof(_2_) /*found*/ putchar(_3_); ch = fgetc(fp); putchar(/n); fclose(fp); main() char a10=“Hello!“; int b=12345; double c= 98.76; fun(a,b,c); (分数
3、:10.00)_2.给定程序 MODI1.C中函数 fun的功能是: 依次取出字符串中所有数字字符, 形成新的字符串, 并取代原字符串。 请改正函数 fun中指定部位的错误, 使它能得出正确的结果。 注意: 不要改动 main函数, 不得增行或删行, 也不得更改程序的结构! 给定源程序: #include void fun(char *s) int i,j; for(i=0,j=0; si!=/0; i+) if(si=0 /*found*/ sj=“/0“; main() char item80; printf(“/nEnter a string : “);gets(item); print
4、f(“/n/nThe string is : /“%s/“/n“,item); fun(item); printf(“/n/nThe string of changing is : /“%s/“/n“,item ); (分数:10.00)_正确答案:(第一处: 要求是取出原字符串中所有数字字符组成一个新的字符串,程序中是使用变量 j来控制新字符串的位置,所以应改为:sj+=si;。 第二处: 置新字符串的结束符,所以应改为:sj=/0;. )解析:3.请编写函数 fun, 函数的功能是: 将 M行 N列的二维数组中的字符数据, 按列的顺序依次放到一个字符串中。 例如, 二维数组中的数据为: W
5、 W W W S S S S H H H H 则字符串中的内容应是: WSHWSHWSH。 注意:部分源程序在文件 PROG1.C中。 请勿改动主函数 main和其它函数中的任何内容, 仅在函数 fun的花括号中填入你编写的若干语句。 给定源程序: #include #define M 3 #define N 4 void fun(char sN, char *b) int i,j,n=0; for(i=0; i N;i+) /* 请填写相应语句完成其功能 */ bn=/0; main() char a100,wMN=W,W,W,W,S,S,S,S,H,H,H,H; int i,j; prin
6、tf(“The matrix:/n“); for(i=0; i for(j=0;j3c“,wij); printf(“/n“); fun(w,a); printf(“The A string:/n“);puts(a); printf(“/n/n“); NONO(); (分数:10.00)_正确答案:(void fun(char sN, char *b) int i,j,n=0; for(i=0; i N;i+) /* 请填写相应语句完成其功能 */ for(j = 0 ; j M ; j+) bn = sji ; n = i * M + j + 1; bn=/0; )解析:解题思路: 本题是把二维数组中的字符数据按列存放到一个字符串中。 1. 计算存放到一维数组中的位置。 2. 取出二维数组中的字符存放到一维数组(已计算出的位置)中。