1、三级数据库技术机试-226 及答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.编写一个函数 findStr(),该函数的功能是:统计一个以单词组成的字符串中(各单词之间以空格隔开)所含指定长度单词的个数。例如,输入字符串为“you are very good you“,指定要查找的单词的长度为3,则函数返回值是 3。函数 readWriteData()的功能是从 IN.DAT中读取字符串和子字符串,并把统计结果输出到屏幕和文件OUT.DAT中。注意:部分源程序已给出。请勿改动主函数 main()和函数 WriteData(int n)中的内容
2、。试题程序:#includestdio.h#includestring.h#includestdlib.hvoid readWriteData();int findStr(char*str,int find_len)void main()char str81;int find_len;int n;system(“CLS“);printf(“input the strings:“);gets(str);printf(“input the length:“);seanf(“%d“,find_len);puts(str);printf(“length=%d“,find_len);n=findStr(
3、str,find_len);printf(“n=%d“,n);readWriteData();void readWriteData()char str81,substr11;int n,len,i=0;FILE*rf,*wf;rf=fopen(“IN.DAT“,“r“);wf=fopen(“OUT.DAT“,“W“);while(i3)fgets(str,80,rf);fgets(substr,10,rf);len=substr0-0;n=findStr(str,len);fprintf(wf,“%d“,n);i+:fclose(rf);felose(wf);(分数:100.00)_三级数据库
4、技术机试-226 答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.编写一个函数 findStr(),该函数的功能是:统计一个以单词组成的字符串中(各单词之间以空格隔开)所含指定长度单词的个数。例如,输入字符串为“you are very good you“,指定要查找的单词的长度为3,则函数返回值是 3。函数 readWriteData()的功能是从 IN.DAT中读取字符串和子字符串,并把统计结果输出到屏幕和文件OUT.DAT中。注意:部分源程序已给出。请勿改动主函数 main()和函数 WriteData(int n)中的内容。试题程序:
5、#includestdio.h#includestring.h#includestdlib.hvoid readWriteData();int findStr(char*str,int find_len)void main()char str81;int find_len;int n;system(“CLS“);printf(“input the strings:“);gets(str);printf(“input the length:“);seanf(“%d“,find_len);puts(str);printf(“length=%d“,find_len);n=findStr(str,fi
6、nd_len);printf(“n=%d“,n);readWriteData();void readWriteData()char str81,substr11;int n,len,i=0;FILE*rf,*wf;rf=fopen(“IN.DAT“,“r“);wf=fopen(“OUT.DAT“,“W“);while(i3)fgets(str,80,rf);fgets(substr,10,rf);len=substr0-0;n=findStr(str,len);fprintf(wf,“%d“,n);i+:fclose(rf);felose(wf);(分数:100.00)_正确答案:(int f
7、indStr(char*str,int find len)int str_len,i,count=0,mark=-1;str_len=strlen(str);/*求出字符串的长度*/for(i=0;istr_len;i+)if(*(str+i)z|*(str+i)A|(*(str+i)Z*(str+i)a)/*如果是非字母符号*/if(i-mark=find_len+1)count+;/*如果两个非字母符号当中的字母个数等于所要查找的长度,则将计数器加 1*/mark=i;/*将 i记成标记*/if(markstr_len-1str_len-1-mark=find_len)count+;/*如果是最后一个单词,当其长度等于所要查找的长度时就将计数器加 1*/return count;)解析:解析 本题主要考查如何在字符串中找单词。本程序将单词界定为,两个相邻的非字母符号间的字母为一个单词。所以在程序中通过找两个非字母符号之间字母的个数来确定单词的长度。如果单词长度等于要求查找的长度,则将计数器加 1。在查找时应注意一行中的第一个单词和最后一个单词的特殊性,它们只有一侧有非字母符号,故要将其单独处理。