国家二级C语言机试(操作题)模拟试卷681
程序填空题
1.下列给定程序的功能是:调用函数fun将指定源文件中的内容复制到指定的目标文件中,复制成功时函数返回1,失败时返回0。在复制的过程中,把复制的内容输出到屏幕。主函数中源文件名放在变量sfname中,目标文件名放在变量tfname中。
请在下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。
注意:不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdio.h>
#include<stdlib.h>
int fun(char*source.char*target)
{
FILE*fs,*ft;char ch;
/******found******/
if((fs=fopen(source,___1___))==NULL)
return0;
if((ft=fopen(target,\\
(1)\\
解析:本题考查:打开文件操作,fopen函数用来打开一个文件,其一般形式为“文件指针名=fopen(文件名,使用文件方式);”;文件结束检测函数feof函数;写字符函数fputc,功能是把一个字符写入指定的文件中,函数调用的形式为“fputc(字符量,文件指针);”。其中,待写入的字符量可以是字符常量或变量,被写入的文件可以用写、读/写、追加方式打开。文件一旦使用完毕,需使用关闭文件函数fclOSe将文件关闭,以避免文件的数据丢失等错误。
填空1:本题考查对文件操作的掌握。打开一个文件的调用方式是:fs=fopen(文件名,使用文件方式),以只读的方式打开文件,所以文件打开方式为\\
程序修改题
2.下列给定程序中,函数fun的功能是:在有n名学生、2门课成绩的结构体数组std中,计算出第1门课程的平均分,作为函数值返回。例如,主函数中给出了4名学生的数据,则程序运行的结果为:第1门课程的平均分是76.125000
请改正函数fun中指定部位的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdio.h>
typedef struet
{
char num[8];
double score[2];
}STU;
double fun(STU std[],int n)
{
int i;
/******found******/
double sum;
/******found******/
for(i=0;i<2;i++)
/******found******/
Bum+=std[i].score[1];
return sum/n;
}
main()
{
STU std[]={\\
(1)double sum改为double sum=0.0;
(2)for(i=0;i<2;i++)改为for(i=0;i<n;i++);
(3)sum+=std[i].score[1]改为sum+=std[i].score[0];
解析:本题考查:临时变量初始化,C语言里临时变量不初始化,它的默认值是不确定的一个值。再者,考查C语言约定数组的下标是从0开始的。
(1)double sum改为double sum=0.0;累加求和需要初始化累加结果的临时变量。
(2)for(i=0;i<2;i++)改为for(i=0;i<n;i++);共有n个学生的成绩,需要累加所有学生第一门课的成绩。
(3)sum+=std[i].score[1]改为sum+=std[i].score[0];第1门课程的平均分,C语言的下标是从0开始的。
程序设计题
3.请编写函数fun,其功能是:判断形参n中的正整数是几位数(输入数据的位数不超过4位),并将结果通过函数值返回。例如,若输入的数据为123,则输出结果为:输入的数字是3位。
注意:请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include<stdio.h>
void NONO();
int fun(int n)
{
}
main()
{
int n,place;
do
{
printf(\\
int bits=1;//临时变量统计位数
while(n/10)/*判断是否为0,若不为0,bits加1,再将n除以10,继续判断*/
{
bits++;
n=n/10;
}
return bits;
解析:本题考查:对循环跳出的条件的理解,以及理解取数字位数的方法。
通过对指定的多位数每次除以10,去掉最后一位,直到为0结束,使用临时变量来统计一个多位数的位数。
本文档预览:3600字符,共2533字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载