国家二级C语言机试(操作题)模拟试卷298
程序填空题
1.下列给定程序中,函数fun的功能是:将自然数1一10及其平方根写到名为myfile3.txt的文本文件中,然后再顺序读出显示在屏幕上。
请在程序下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。
注意:部分源程序给出如下。
不得增行或删行,也不得更改程序的结构!
试题程序:
#include<math.h>
#include<stdio.h>
int fun(char*fname)
{ FILE*fp;int i,n;float x;
if ((fp=fopen(fname,\\
(1)fp
(2)felose(fp)
(3)fname
解析:填空1:fprinff函数的形式是:fprintf(文件指针,格式字符串,输出表列);,所以填入文件指针fp。
填空2:文件一旦使用完毕,应使用关闭函数fclose将文件关闭,以避免发生文件数据丢失等错误。
填空3:fopen函数用来打开一个文件,其一般形式为:文件指针名=fopen(文件名,使用文件方式);因此应填入文件名fname。
程序修改题
2.下列给定程序中,函数fun的功能是:比较两个字符串,将长的字符串的首地址作为函数值返回。
请改正程序中的错误,使它能得出正确的结果。
注意:部分源程序在文件MODI1.C中,不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include<conio.h>
#include<stclio.h>
/*********found*********/
double fun(char*s,char*t)
{
int s1=0,t1=0;
char*ss,*tt;
ss=s;
tt=t;
while(*ss)
{
s1++;
/*********found*********/
(*ss)++;
}
while(*tt)
{
t1++;
/*********found*********/
(*tt)++;
}
if(t1>s1)
return t;
else
return s;
}
void main()
{
char a[80],b[80];
printf(\\
(1)char*fun(char*s,char*t)
(2)ss++;
(3)tt++;
解析:(1)在主函数的输出语句中,函数fun是以字符串格式输出的,所以定义函数时应为char*fun(char*s,chat*t)。
(2)和(3)这里是地址加1,而不是内容加1,所以改为ss++和tt++。
程序设计题
3.请编写函数fun,该函数的功能是:统计一行字符串中单词的个数,作为函数值返回。字符串在主函数中输入,规定所有单词由小写字母组成,单词之间有若干个空格隔开,一行的开始没有空格。
注意:部分源程序在文件PROG1.C中。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
1 #include<string.h>
2 #inclucte<stdio.h>
3 #define N 80
4 int fun(char*s)
5 {
6
7 }
8 void main()
9 {
10 FILE*wf;
11 char line[N];
12 int num=0;
13 printf(\\
int fun(char *s)
{
int i,j=0;
for(i=0 ;s[i]!=’\0’;i++)
if(s[i]!=’’&&(s[i+1]==’’‖s[i+1]==’\0’))
/*如果一个字母的下一个字符为空格或者结束标记,则表示一个单词结束*/
j++;
return j; /*返回单词个数*/
}
解析:要判断单词的个数,首先想到的是程序怎样识别出一个单词,如果一个字母的下一个字符为空格或者结束标记,则表示一个单词结束,因此程序使用for循环语句遍历整个字符串,用if条件语句判断当前字符是否表示一个单词的结束,如果当前字符表示一个单词结束,则存放单词个数的变量加1,最后返回单词的个数。
本文档预览:3600字符,共2533字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载