资源描述:
《2012计算机等级考试二级C语言上机模拟试题及答案》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、函数ReadDat()实现从文件ENG.IN中读取一篇英文文章存入到字符串数组xx中;请编制函数ComWord()分别计算出单词长度2,4,6,8的单词数以及单词总数并依次存入整型数组yy[0]至yy[4]中,最后调用函数WriteDat()把结果yy输出到文件PS3.OUT中。原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。注意:部分源程序存放在PROG1.C中。文章每行中的单词与单词之间用空格或其它标点符号分隔,每单词均小于20个字符。请勿改动主函数main()、读数
2、据函数ReadDat()和输出数据函数WriteDat()的内容。/*参考答案*/#include#include#include#includecharxx[50][80];intyy[5];intmaxline=0;/*文章的总行数*/intReadDat(void);voidWriteDat(void);voidComWord(void){inti,j,k,n,len,s[4]={2,4,6,8};charword[20],c;memset(yy,0,5*sizeof(int));for(
3、i=0;i='a'&&c<='z')
4、
5、(c>='A'&&c<='Z')){word[n]=c;n++;}else{word[n]=' ';if(word[0]!=' '){for(k=0;k<4;k++)if(n==s[k])yy[k]++;yy[4]++;}n=0;}}}}voidmain(){inti;clrscr();for(i=0;i<5;i++)
6、yy=0;if(ReadDat()){printf("数据文件ENG.IN不能打开! 07");return;}ComWord();WriteDat();}intReadDat(void){FILE*fp;inti=0;char*p;if((fp=fopen("eng.in","r"))==NULL)return1;while(fgets(xx,80,fp)!=NULL){p=strchr(xx,'');if(p)xx[p-xx]=0;i++;}maxline=i;fclose(fp)
7、;return0;}voidWriteDat(void){FILE*fp;inti;fp=fopen("ps3.out","w");for(i=0;i<5;i++)fprintf(fp,"%d",yy);printf("单词长度为3的单词数=%d",yy[0]);printf("单词长度为5的单词数=%d",yy[1]);printf("单词长度为7的单词数=%d",yy[2]);printf("单词长度为9的单词数=%d",yy[3]);printf("单词的总数=%d
8、",yy[4]);fclose(fp);}1.若变量已正确定义并赋值,对库函数错误调用的是 A)k=scanf("%d%d",&i,&j); B)printf("\%d\",k); C)getchar(ch); D)putchar(ch); 2.要求定义一个返回值为double类型的名为mysum的函数,其功能为求两个double类型数的和值,正确的定义是: A)mysum(doublea,b) {return(a+b);} B)mysum(doublea,doubleb
9、) {returna+b;} C)doublemysum(inta,intb); {returna+b;} D)doublemysum(doublea,doubleb) {retrun(a+b);} 3.以下是对fun函数的正确调用: fun(a+b,fun(a+b,(a,b))); 则fun函数有______个形参。 4.若有以下函数定义: myfun(doublea,intn) {……} 则myfun函数值的类型是 A)void B)double C)int
10、D)char 5.若各选项中所用变量已正确定义,函数fun中通过return语句返回一个函数值。以下选项中错误的程序是 A)doublefun(inta,intb) {……} main() {┇ fun(i,k); ┇ } B)main() { printf("%f",fun(2,10)); ┇ } doublefun(inta,intb) {……} C)doublefun(int,int); main() {┇ x=fun(i,k); ┇ } d