1、VB南开100题原版题目1请编写一个函数jsValue(int m,int k,int xx),该函数的功能是:将大于整数m且紧靠m的k个素数存入数组xx传回。 最后调用函数writeDat()读取10组数据,分别得出结果且把结果输出到文件out.dat中。 部分源程序存在文件prog1.c中。 例如:若输入17 5 则应输出:19,23,29,31,37。 请勿改动主函数main()和写函数writeDat()的内容。int isP(int m) int i; for(i=2;i0;m+) if(isP(m) xxs+=m; k-;无忧id 14题(无isP()函数)#include voi
2、d jsValue(int m,int k,int xx) int i,j,s=0; for(i=m+1;k0;i+) for(j=2;ji;j+) if(i%j=0) break; if(i=j) xxs+=i; k-; 题目2(无忧 id 143 整数排序题) 已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:如果四位数各位上的数字均是0或2或4或6或8,则统计出满足此条件的个数cnt,并把这些四位数按从大到小的顺序存入数组b中。最后main( )函数调用写函数writeDat()把结果cnt以及数
3、组b中符合条件的四位数输出到OUT.DAT文件中。 注意:部分源程序存在文件prog1.c中。 程序中已定义数组:a200,b200,已定义变量:cnt 请勿改动数据文件IN.DAT中的任何数据、主函数main()、读函数readDat()和写函数writeDat()的内容。void jsVal() int i,j,qw,bw,sw,gw; for(i=0;iMAX;i+) qw=ai/1000; bw=ai/100%10; sw=ai%100/10; gw=ai%10; if(qw&qw%2=0&bw%2=0&sw%2=0&gw%2=0) bcnt+=ai; for(i=0;icnt-1;i
4、+) for(j=i+1;jcnt;j+) if(bibj) qw=bi; bi=bj; bj=qw;题目3(无忧 id 133题;捷成id 59、99字符串位置倒置题)函数ReadDat( )实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中;请编制函数StrOR( ),其函数的功能是:以行为单位依次把字符串中所有小写字母o左边的字符串内容移到该串的右边存放,然后把小写字母o删除,余下的字符串内容移到已处理字符串的左边存放,之后把已处理的字符串仍按行重新存入字符串数组xx中。最后main()函数调用函数WriteDat()把结果xx输出到文件OUT5.DAT中。 例如:原文:n
5、any field.Yu can create an index you have the correct record. 结果:n any field. Yu can create an index rd. yu have the crrect rec 原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。 注意:部分源程序存放在文件prog1.c中。 请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。void StrOR(void)int i,righto,j,s,k; char tem80; for(i=0;i=0;j-)
6、 k=0; memset(tem,0,80); /*初始化字符串数组tem*/ if(xxij=o) /*如果当前字符为o,进入以下语句*/ righto=j; /*则将此字符中位置j的值赋给righto*/ for(s=righto+1;sstrlen(xxi);s+) temk+=xxis; /*从righto的下一跳开始将其后所有的字符都存入到tem中*/ for(s=0;srighto;s+) /*从当前行首部开始到出现字符o的位置(righoto)之前开始循环*/ if(xxis!=o) temk+=xxis; /*将不是字符o的字符全存入到tem中*/ strcpy(xxi,tem
7、); /*将当前已处理的字符重新存入当前行xx*/ else continue; 功能:将字符串src中前maxlen个字符连接到dest中相关头文件:string.hchar *strcpy(char *dest, const char *src)功能:将字符串src拷贝到字符串dest中去相关头文件:string.h题目4(无忧id 24题 捷成id 9 字符串单词倒置题)函数ReadDat()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中,请编制函数StrOL(),其函数的功能是:以行为单位对行中以空格或标点符号为分隔的所有单词进行倒排。最后把已处理的字符串(应不含标点符
8、号)仍按行重新存入字符串数组xx中,最后调用函数writeDat()把结果xx输出到文件OUT6.DAT中。 例如:原文:You He Me I am a student.结果:Me He You student a am I 原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。 部分源程序存在文件prog1.c中。 请勿改动主函数main()、读数据函数ReadDat()和输出数据函数writeDat()的内容。/*在无忧及捷成版模拟系统中都通过测试(输入文件句末有标点的在输出文件中句前有空格*/void StrOL(void) int i,j,k,s,m,strl; c
9、har str80; for(i=0;i=0;j-) /*从当前字符串尾部开始向前倒序循环,实现题意要求的倒排*/ if(isalpha(xxij) k+; /*如果当前字符是字母az或AZ,则k加一*/ else for(m=1;m=k;m+) /*否则将长度为k的单词顺序存入到字符串数组str中,s值加1*/ strs+=xxij+m; k=0; /*将k值清0,以方便下一个单词的长度计数*/ if(!isalpha(xxij) strs+= ; /*如果当前字符不是字母az或AZ,则以空格代之存入到字符串数组str中,s值加一*/ for(m=1;m=k;m+) /*此时的k值为当前字符
10、串中第一个单词的长度,但在上一个for循环中没能存入到字符串数组str中,所以在这里将其存入到str中*/ strs+=xxij+m; strs=0; /*在当前行尾加0以标记此行的结束*/ strcpy(xxi,str); /*将倒排好的当前字符串重新存回到当前行xx中*/ 捷成版模拟系统中的解法/*在无忧模拟系统中没通过测试(输入文件句末有标点的在输出文件中句前无空格*/void StrOL(void) int i, j ; char word21, yy80, zz80, *p ; for(i = 0 ; i maxline ; i+) p = xxi ; j = 0 ; memset(
11、word, 0, 21) ; memset(yy, 0, 80) ; while(*p) if(isalpha(*p) wordj+ = *p+ ; if(*p) continue ; strcpy(zz, yy) ; sprintf(yy, %s %s, word, zz) ; j = 0 ; memset(word, 0, 21) ; while(*p & (!isalpha(*p) p+ ; strcpy(xxi, yy) ; 另一解法(): /*在无忧及捷成版模拟系统中都通过测试(输入文件句末有标点的在输出文件中句前有空格*/void StrOL(void) int i,j,m;cha
12、r str80;for(i=0;i=0;j-) if(!isalpha(xxij) strcat(str,xxi+j+1); strcat(str, ); xxij=0; strcat(str,xxi); strcpy(xxi,str); 实际上机考试时上面几种解法都可以采用。*题目5(无忧id 8整数排序题)在文件in.dat中有200个正整数,且每个数均在1000至9999之间。函数ReadDat()读取这200个数存放到数组aa中。请编制函数jsSort(),其函数的功能是:要求按每个数的后三位的大小进行升序排列,然后取出满足此条件的前10个数依次存入数组bb中,如果后三位的数值相等,则
13、按原先的数值进行降序排列。最后调用函数WriteDat()把结果bb输出到文件out.dat中。 例:处理前 6012 5099 9012 7025 8088 处理后 9012 6012 7025 8088 5099 部分源程序存在文件prog1.c中。请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。void jsSort() int i,j,data; for(i=0;i199;i+) for(j=i+1;jaaj%1000|aai%1000=aaj%1000&aaiaaj) data=aai;aai=aaj;aaj=data; for(i=0;i10;i+)
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1