国家二级C语言机试(操作题)模拟试卷336
程序填空题
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
解析:本题要求是把一段文本写到文件myfile4.txt中,用.1作为字符串输入结束的标志。然后将文件的内容读出显示在屏幕上。主要考查文件操作以及uts和fgets函数的使用。
第一空:此处是补充函数参数名,参数类型已知是FILE文件指针,“fputs(\\
程序修改题
2.给定程序MODI1.C中函数fun的功能是:从低位开始取出长整型变量s中奇数位上的数,依次构成一个新数放在t中。高位仍在高位,低位仍在低位。
例如,当s中的数为:7654321时,t中的数为:7531。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动mam函数,不得增行或删行,也不得更改程序的结构!
#include
void fun (long s. long t)
{ long s1=10;
*t= s% 10;
while (s> 0)
{ s= s/100;
*t= s%10 * s1 + *t;
s1= s1*100;
}
}
main ()
{ long s,t;
printf(\\
(1) void fun (long s,long *t)
(2) s1=sl*10;
解析:本题中函数的功能是依次取出奇数位上的数。该题的解题思路主要是找出数字中的奇数位上的数。
(1)根据“*t=s%10”判断,t应该是个指针变量,所以“void fun (long s,long t)”语句中的t只需改为“void fun (long s,long *t)”。
(2)分析函数内的循环过程可知sl的用途是每次将*t扩大,记录每次得到的奇数位的数字的权值,sl的权值每次增加1位,因此第二个标识下应该是“sl=sl*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] ={ { \\
1 int i, j=0, min=a [0] .s;
2 for(i=0; i<N; i++){
3 if(min>a[i],s){
4 j=0; b[j++]=a[i]; min=a[i].s;
5 }
6 lelse if (min==a [i] .s)
7 b[j++]2a[i];
8 }
9 return j;
解析:该程序功能是把分数最低的学生数据放在b所指的数组中。本题是关于求解结构体中某些成员的最小值,首先将第一个值设定为最小值,并在循环中将其他所有值与该值进行比较,求得最小值。然后将最小值与所有值进行比较,求得所有的最小值。
(1)要把最低分数的学生数据放在数组中,首先求出最低分数,再使用一个for循环把所有的成绩进行比较,找出最低的分数来。
(2)找出所有与最低分数相等的学生,并将最低分数的人数累加。
本文档预览:3600字符,共2474字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载