1、国家二级 C语言机试(操作题)模拟试卷 84及答案与解析 一、程序填空题 1 函数 fun的功能是进行数字字符转换。若形参 ch中是数字字符 0 9,则 0转换成 9, 1转换成 8, 2转换成 7, , 9转换成 0;若是其他字符则保持不变:并将转换后的结果作为函数值返回。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANK1 C中。 不得增行或删行,也不得更改程序的结构 ! #include /*found*/ 1 fun(char ch) /*found*/ if(ch=0& 2 ) /*found*/ return 9一
2、 (ch一 _ 3_ ); return ch; main() char c1, c2; printf(“nThe result: n“); c1=2; c2=fun(c1); printf(“c1= c c2= cn“, c1, c2); c1=8; c2=fun(c1); printf(“c1= c c2= cn“, c1, c2); c1=a; c2=fun(c1); printf(“c1= c c2= cn“, c1, c2); 二、程序修改题 2 给定程序 MODI1 C中函数 fun的功能是:将 p所指字符串中的所有字符复制到 b中,要求每复制三个字符之后插入一个空格。 例如,在调
3、用 fun函数之前给 a输入字符 串: ABCDEFGHIJK,调用函数之后,字符数组 b中的内容则为: ABC DEF GHI JK。 请改正程序中的错误,使它能得出正确结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构。 #include void fun(char*p, char*b) int i, k=0; while(*p) i=1; while(i #include #define N 8 struct s1ist doubte s; struct s1ist *next; ; typedef struct s1ist STREC; double fun(S
4、TREC*h) STREC*Creat(double*s) STREC*h, *p, *q; int i=0; h=p=(STREC*)malloc(sizeof(STREC); P-s=0; while(is=si; i+; p-next=q; p=q; p-next=0 ; reLurn h; outlist(STREC*h) STREC*p; p=h-next; printf(“head“); do printf(“- 4 1f“, p-s); p=p- next; while(p!=0); printf(“nn“); main() double sN=85, 7 6, 69, 85,
5、91, 72, 64, 87), aVe; void NONO(); STREC*h; h=creat(s); outlist(h); ave=fun(h); printf(“ave= 6 3fn“, ave); NONO(); void NONO() /*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE*in, *out; int i, j; double sN, ave; STREC*h; in=fopen(“in dat“, “r“); out=fopen(“out dat“, “w“); for(i=0; i=0且 chnext; /*由于头结点中没有存放数据 */ double av=0 0; /*对计算成绩平均值的变量进行初始化 */ int n=0; while(p!=NULL)/*判断链表是否结束 */ av=av+p-s; /*对成绩进行累加。 / p=p-next; /*到下一个结点位置。 / n+; /*人数加 1*/ av/=n; /*计算成绩平均值 */ return av; /*返回成绩平均值 */ 【试题解析】 (1)首先定义存放平均值的变量,并对其初始化。 (2)在循环中,依次取链表中存放的成绩,并对其求和。 (3)最后计算平均值,并返回值。