1、国家二级 C 语言机试(操作题)模拟试卷 347(无答案)一、程序填空题1 函数 fun 的功能是进行数字字符转换。若形参 ch 中是数字字符09,则0转换成9 , 1转换成 8,2转换成 7,9转换成0;若是其他字符则保持不变:并将转换后的结果作为函数值返回。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的 BLANK1C 中。不得增行或删行,也不得更改程序的结构!#include _1_ fun (char ch)return 9 (ch _3_) ;return ch ;main () char c1/ c2;printf (“nTh
2、e result :n“) ;c1=2; c2 = fun (c1) ;printf (“c1=C c2=cn“ ,c1,c2) ;cl=8; c2 = fun (cl) ;printf (“cl= c2= c n “ , c1, c2) ;c1=a; c2 = fun (c1) ;printf (“c1=c c2=ooCn“,c1,c2) ;二、程序修改题2 给定程序 MODI1C 中函数 fun 的功能是:将 p 所指字符串中的所有字符复制到 b 中,要求每复制三个字符之后插入一个空格。例如,在调用 fun 函数之前给 a 输入字符串:ABCDEFGHIJK,调用函数之后,字符数组 b 中
3、的内容则为:ABC DEF GHI JK。请改正程序中的错误,使它能得出正确结果。注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构。#include void fun(char *p,char *b) int i,k=0;while ( *p)b k =p;k+;p+ ;i+;if(*p)/*found*/bk+=“ “;main () char a80,b80;printf (“Enter a string:“) ; gets (a) ;printf (“The original string: “) ;puts (a) ;fun (a,b) ;printf ( “nTh
4、e string after insertspace: “) ; puts (b) ; printf (“nn“) ;三、程序设计题3 N 名学生的成绩已在主函数中放入一个带头节点的链表结构中, h 指向链表的头节点。请编写函数 fun,它的功能是:求出平均分,由函数值返回。例如,若学生的成绩是:85,76,69,85,91,72,64,87,则平均分应当是:78625。注意:部分源程序在文件 PROG1C 中。请勿改动主函数 mam 和其他函数中的任何内容,仅在函数 fun 的花括号中填入你编写的若干语句。#include #include #define N 8struct slist d
5、ouble s;struct slist *next;typedef struct slist STREC;double fun (STREC *h)STREC * creat (double *s)STREC *h, *p,*q; int i=0 ;h=p= (STREC*) malloc ( sizeof (STREC);ps=0;while (is=si; i+; pnext=q; p=q;pnext=0;return h;outlist(STREC *h)STREC *p;p=hnext; printf ( “head“) ;doprintf(“0041f“ ,p 一 s);p=p n
6、ext ;)while(p!=0);printf(“nn“);main()double sN= 85,76,69,85,91,72,64,87) ,ave ;void NONO ();STREC *h;h=creat (s); outlist (h) ;ave=fun (h);printf (“ave= 63fn“,ave);NONO();void NONO()/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */FILE *in,*out ;int i,j ; double sN ,ave ;STREC *h;in=fopen (“indat“,“r“) ;out=fopen (“outdat“,“w“) ;for(i=0 ; i 10 ; i+) for(j=0;jN; j+) fscanf(in,“ 1f, “,sj);h=creat (s);ave=fun (h);fprintf (outt “631fn“,ave) ;fclose (in);fclose (out);