1、国家二级 C 语言机试(操作题)模拟试卷 346(无答案)一、程序填空题1 给定程序中,函数 fun 的功能是将参数给定的字符串、整数、浮点数写到文本文件中,再用字符串方式从此文本文件中逐个读入,并调用库函数 atoi 和 atof 将字符串转换成相应的整数、浮点数,然后将其显示在屏幕上。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的 BLANK1C 中。不得增行或删行,也不得更改程序的结构!#include #include void fun(char *s,int a,double f)1 fp;char str 100 ,strl
2、100 ,str2 100 ;int al; double f1;fp = fopen (“file1txt“, “w“) ;fprintf(fp, “s d fn“,s,a ,f);_2_;fp = fopen (“file1txt“, “r“) ;fscanf( _3_,“sss“ ,str,strl,str2) ;fclose ( fp) ;al = atoi(str1) ;f1 = atof(str2) ;printf ( “nTheresult :rinOoS d oofn“,str,a1 ,main () char a 10 =“Hello ! “; int b=12345;dou
3、ble c= 9876;fun (a,b,c) ;二、程序修改题2 给定程序 MODI1C 中函数 fun 的功能是:对 N 名学生的学习成绩,按从高到低的顺序找出前 m(m10)名学生来,并将这些学生数据存放在一个动态分配的连续存储区中,此存储区的首地址作为函数值返回。请改正函数 fun 中指定部位的错误,使它能得出正确的结果。注意:不要改动main 函数,不得增行或删行,也不得更改程序的结构!#include #include #include #define N 10typedef struct ss char num10;int s; STU;STU *fun(STU a,int m)
4、int i,j,k;t= (STU *) calloc (sizeof (STU) ,m)return t;outresult(STU a,FILE *pf) int i;fprintf (pf, “No = s Mark =dn“,a i num,a i s) ffprintf (pf, “nn“) ;main () “A03“,66J, “A04“r 87, “A05“,77 ,“A09“,80,“Al0“,71 ;STU *pOrder;int i,m;printf (“* The Original dataoutresult (a, stdout) ;printf “nGive the
5、 number of thestudents who have better score: “) ;scanf ( “ d“,&m) ;while (m10) printf “nGive the number of thestudents who have better score: “);scanf ( “d“,&m) ;pOrder=fun (a,m) ;printf(“* THE RESULT *n“);printf (“The top :n“) ;printf(“ s dn“,pOrderinum , pOrder i s);free (pOrder) ;三、程序设计题3 请编写函数
6、fun,函数的功能是:删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。例如,一维数组中的数据是:2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 1 0 1 0。删除后,数组中的内容应该是:2345678910。注意:部分源程序在文件 PROG1C 中。请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入你编写的若干语句。#include #define N 80int fun (int a, int n)main()int aN=2,2,2,3,4,4,5,6,6,6,6,7,7,8
7、,9,9,10,10,10,10 ,1,n=20; voidNONO ();printf (“The original data:n“);for (i=0; in ; i+) printf(“3d“,ai) ;n=fun (a,n);printf( “nnThe data after deleted:n“);for (i=0; in ; i+) printf(“ 3d“,ai); printf(“nn“);NONO();void NONO ()/*请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。*/FILE *rf,*wf; int aN,n, i, j;rf = fopen( “indat“ ,“r“);wf= fopen (“outdat“, “w“);for(i = 0 ; i 5 ; i+) fscanf (rf, “ d“,n);for(j=0;jn;j+) fscanf (rf ,“ d“, aj);n = fun (a, n);for(j=0; jn ; j+) fprintf(wf,“4 d“,aj) ;fprintf (wf, “n“);fclose (rf); fclose (wf);