1、二级 C 语言-205 及答案解析(总分:100.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:30.00)1.下列给定程序中,函数 fun 的功能是:将形参给定的字符串、整数、浮点数写到文本文件中,再用字符方式从此文本文件中逐个读入并显示在终端屏幕上。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意 :部分源程序给出如下。 不得增行或删行,也不得更改程序的结构! 试题程序: #includestdio.h void funchar *s,int a,double f) /*found*/ 1fp; 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); (分数:30.00)二、程序改错题(总题数
3、:1,分数:30.00)2.下列给定程序中,函数 fun 的功能是:依次取出字符串中所有的数字字符,形成新的字符串,并取代原字符串。 请改正程序中的锴误,使它能得出正确的结果。 注意 :不要改动 main 函数,不得增行或删行,也不得更改程序的结构! 试题程序: #includestdlib,h #includestdio.h #includeconio.h void fun(char *s) int i,j; for(i=0,j=0;si!=“/0“;i+) if(si=“0“ /*found*/ sj=“/0“; void main() char item80; system(“CL5“)
4、; printf(“/nEnter a string:“); gets(item); printf(“/n/nThe string is:%s/n“,item); fun(item); printf(“/n/nThe string of changing is:%s/n“,item); (分数:30.00)三、程序设计题(总题数:1,分数:40.00)3.请编写函数 fun,其功能是:将 M 行 N 列的二维数组中的字符数据,按列的顺序依次放到一个字符串中。例如,若二维数组中的数据为 W W W W S S S S H H H H 则字符串中的内容应是:WSHWSHWSHWSH。 注意 :部分
5、源程序给出如下。 请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入你编写的若干语句。 试题程序: #includestdio.h #define M 3 #define N 4 void fun(char(*s)N,char *b) void main() char a100,wMN=“W“,“W“,“W“,“W“,“S“,“S“,“S“,“S“,“H“,“H“,“H“,“H“; int i,j; printf(“The matrix:/n“); for(i=0;iM;i+) for(j=0;jN;j+) printf(“%3c“,wij); printf(“
6、/n“); fun(w,a); printf“The A string:/n“); puts(a); printf“/n/n“); (分数:40.00)_二级 C 语言-205 答案解析(总分:100.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:30.00)1.下列给定程序中,函数 fun 的功能是:将形参给定的字符串、整数、浮点数写到文本文件中,再用字符方式从此文本文件中逐个读入并显示在终端屏幕上。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意 :部分源程序给出如下。 不得增行或删行,也不得更改程序的结构! 试题程序: #includestd
7、io.h void funchar *s,int a,double f) /*found*/ 1fp; char ch; fp=fopen(“file1.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
8、 a10=“Hello!“;int b=12345; double c=98.76; fun(a,b,c); (分数:30.00)解析:FILE* fp ch 解析 填空 1:由语句 fopen(“file1.txt“, “r“)可知,fp 应该是文件类型指针,因此本空应该填写 FILE*。 填空 2:feof 函数只能对文件类型数据进行操作,因此本空填写 fp。 填空 3:putchar()代表输入一个字符,从 ch=fgetc(fp)可以看出本题应该填写 ch。二、程序改错题(总题数:1,分数:30.00)2.下列给定程序中,函数 fun 的功能是:依次取出字符串中所有的数字字符,形成新的
9、字符串,并取代原字符串。 请改正程序中的锴误,使它能得出正确的结果。 注意 :不要改动 main 函数,不得增行或删行,也不得更改程序的结构! 试题程序: #includestdlib,h #includestdio.h #includeconio.h void fun(char *s) int i,j; for(i=0,j=0;si!=“/0“;i+) if(si=“0“ /*found*/ sj=“/0“; void main() char item80; system(“CL5“); printf(“/nEnter a string:“); gets(item); printf(“/n/
10、nThe string is:%s/n“,item); fun(item); printf(“/n/nThe string of changing is:%s/n“,item); (分数:30.00)解析:sj+=si; sj= “/0“;解析 题目要求依次取出字符串中所有的数字字符,因此将元素 si存入 sj后要使 j 加 1,为下次存储做准备。sj=“/0“;是一个语法错误。三、程序设计题(总题数:1,分数:40.00)3.请编写函数 fun,其功能是:将 M 行 N 列的二维数组中的字符数据,按列的顺序依次放到一个字符串中。例如,若二维数组中的数据为 W W W W S S S S H
11、H H H 则字符串中的内容应是:WSHWSHWSHWSH。 注意 :部分源程序给出如下。 请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入你编写的若干语句。 试题程序: #includestdio.h #define M 3 #define N 4 void fun(char(*s)N,char *b) void main() char a100,wMN=“W“,“W“,“W“,“W“,“S“,“S“,“S“,“S“,“H“,“H“,“H“,“H“; int i,j; printf(“The matrix:/n“); for(i=0;iM;i+) for(j
12、=0;jN;j+) printf(“%3c“,wij); printf(“/n“); fun(w,a); printf“The A string:/n“); puts(a); printf“/n/n“); (分数:40.00)_正确答案:()解析:void fun(char (*s)N,char *b) int i,j,k=0; for(i=0;i for(j=0;jM;j+) bk+=sji; bk=“/0“; 解析 看到程序后,很容易便能想到用循环嵌套的方法,本题中按列的顺序依次放到一个字符串中,所以列标变化慢,行标变化快。注意第 1 个循环条件为 iN(即列),第 2 个循环条件为 jM(即行),因为在循环的嵌套中越在内层,循环变化就越快。