国家二级C语言机试(操作题)模拟试卷496
程序填空题
1. 给定程序的功能是:从键盘输入若干行文本(每行不超过80个字符),写到文件myfile4.txt中,用-1作为字符串输入结束的标志。然后将文件的内容读出显示在屏幕上。文件的读写分别由自定义函数ReadText和WriteText实现。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include
#include
#include
void WriteText(FILE *) ;
void ReadText(FILE *);
main ()
{FILE *fp;
if( (fp=fopen(\\
(1)*fw
(2)str
(3)str
解析:第一空:此处是补充函数参数名,参数类型已知是FILE文件指针,“fputs(\\
程序修改题
2. 给定程序MODI1.C中函数fun的功能是:从低位开始取出长整型变量s中奇数位上的数,依次构成一个新数放在t中。高位仍在高位,低位仍在低位。
例如,当s中的数为:7654321时,t中的数为:7531。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include
/************found************/
void fun (long s, long t)
{ long sl=10;
*t = s % 10;
while (s > 0)
{ s = s/100;
*t = s%10 * s1 + *t;
/************ found************/
sl = sl*100;
}
}
main ()
{ long s, t;
printf(\\
(1)void fun (long s, long *t)
(2)s1=s1*10;
解析:(1)根据“*t=s%10”判断,t应该是个指针变量,所以“void fun(long s,long t)”语句中的t只需改为“void fun(long s,long *t)”。
(2)分析函数内的循环过程可知s1的用途是每次将*t扩大,记录每次得到的奇数位的数字的权值,s1的权值每次增加1位,因此,第二个标识下应该是“s1=s1*10;”。
程序设计题
3. 学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把分数最低的学生数据放在b所指的数组中,注意:分数最低的学生可能不止一个,函数返回分数最低的学生的人数。
注意:部分源程序在文件PROG1.C文件中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include
#define N 16
typedef struct
{ char num[10];
int s;
} STREC;
int fun(STREC *a, STREC *b)
{
}
main ()
{STREC
s[N]={{\\
int i,j=0,min=a[0].s;
for(i=0; i<N; i++){
if(min>a[i].s){
j=0;b[j++]=a[i];min=a[i].s;
}
else if(min==a[i].s)
b[j++]=a[i];
}
return j;
解析:(1)要把最低分数的学生数据放在数组中,首先求出最低分数,再使用一个for循环把所有的成绩进行比较,找出最低的分数来。
(2)找出所有与最低分数相等的学生,并将最低分数的人数累加。
本文档预览:3600字符,共2191字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载