1、国家二级 C语言机试(操作题)模拟试卷 506及答案与解析 一、程序填空题 1 给定程序中,函数 fun的功能是将参数给定的字符串、整数、浮点数写到文本文件中,再用字符串方式从此文本文件中逐个读入,并调用库函数 atoi和 atof将字符串转换成相应的整数、浮点数,然后将其显示在屏幕上。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANK1 C中。 不得增行或删行,也不得更改程序的结构 ! #include #include void fun (char *s, int a, double f) /* found*/ 【 1】
2、fp char str100,strl100,str2100 ; int al; double fl; fp = fopen(“filel.txt“, “w“); fprintf(fp, “%s %d %fn“, s, a, f); /*found*/ 【 2】; fp = fopen(“filel.txt“, “r“); /*found*/ fscanf(【 3】 , “%s%s%s“, str, strl, str2); fclose (fp); al = atoi(strl); fl = atof(str2); printf(“nThe result :nn%s %d %fn“, str
3、, al, fl); main () char a10=“Hello!“; int b=12345; double c= 98.76; fun(a,b,c); 二、程序修改题 2 给定程序 MODI1 C中函数 fhn的功能是:对 N名学生的学习成绩,按从高到低的顺序找出前 m(m10)名学生来,并将这些学生数据存放在一个动态分配的连续存储区中,此存储区的首地址作为函数值返回。 请改正函数 fun中指定部位的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构 ! #include #include #include #define N 10 typed
4、ef struct ss char num10; int s; STU; STU *fun(STU a, int m) STU bN, *t; int i,j,k; /*found*/ t=(STU *)calloc(sizeof(STU),m) for(i=0; i bj .s) j=i; /*found*/ t(k)=b(j); bj.s=0; return t; outresult(STU a, FILE *pf) int i; for(i=0; i10) printf (“nGive the number of the students who have better score: “
5、) ; scanf(“%d“, pOrder=fun(a,m); printf(“* THE RESULT * n“); printf(“The top :n“); for(i=0; i #define N 80 int fun(int a, int n) main () int a N =2, 2,2, 3, 4, 4, 5, 6, 6, 6, 6, 7,7,8,9,9,10,10,10,10,i,n=20; void NONO (); printf(“The original data :n“); for(i=0; i=n) aj=t; return j; 【试题解析】 (1)首先,设置一个临时变量,初值设置为一维数组的第一个元素。 (2)然后,依次将数组的元素与临时变量比 较,如果相同,则继续取数组下一个元素与临时变量比较;如果不同,则将临时变量的值赋值到数组的第一个元素,同时将此与临时变量不同的数组元素赋值给临时变量。 (3)循环执行,直到所有的数据处理完毕。