上机考试题库-南开100题.pdf
2011年计算机等级考试三级上机考试题库题目1请编写一个函数jsVahie(int m,int k,int x x),该函数的功能是:将大于整数m 且紧靠m 的 k个素数存入数组xx传回。最后调用函数writeDat。读 取 10组数据,分别得出结果且把结果输出到文件out.dat中。部分源程序存在文件progl.c中。例 如:若 输 入 1 7 5 则应输出:19,23,29,31,370请勿改动主函数main。和写函数writeDat。的内容。int isP(int m)(int i;for(i=2;i0;m+)if(isP(m)xxs+=m;k;)题目2已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsV al(),其功能是:如果四位数各位上的数字均是0 或 2 或 4 或 6 或8,则统计出满足此条件的个数S 3 并把这些四位数按从大到小的顺序存入数组b 中。最后m ain()函数调用写函数writeDat()把 结 果 e n t以 及 数 组 b 中符合条件的四位数输出到OUT.DAT文件中。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=O;icnt-l;i+)for(j=i+1 ;jcnt;j-H-)if(bibj)qw=bi;bi=bfj;bfj=qw;题目3(字符型题)函数ReadDat()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中;请编制函数 StrO R(),其函数的功能是:以行为单位依次把字符串中所有小写字母。左边的字符串内容移到该串的右边存放,然后把小写字母。删除,余下的字符串内容移到已处理字符串的左边存放,之后把已处理的字符串仍按行重新存入字符串数组x x 中。最 后 main。函数调用函数 WriteDat()把结果xx输出到文件OUT5.DAT中void StrOR(void)int i,righto,j,s,k;char tem80;for(i=0;i=O;j)k=0;memset(tem,0,80);if(xxiU=o)righto=j;for(s=ri ghto+1;sstrlen(xxi);s+)temk+=xxis;for(s=0;srighto;s+)if(xxis!=o)temk+=xxis;strcpy(xxi,tem);)else continue;)题目4函数ReadDat()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx 中,请编制函数 StrOL(),其函数的功能是:以行为单位对行中以空格或标点符号为分隔的所有单词进行倒排。最后把已处理的字符串(应不含标点符号)仍按行重新存入字符串数组x x 中,最后调用函数writeDat。把结果xx输出到文件0UT6.DAT中。例如:原文:You He MeI am a student.结果:Me He Youstudent a am Ivoid StrOL(void)int i,j,k,s,m,strl;char str80;fbr(i=O;i=O;j-)if(isalpha(xxij)k+;else for(m=1 ;m=k;m+)str s+=xxi j+m;k=0;)if(!isalpha(xxij)strs+=)fbr(m=l;m=k;m+)strs+=xxi 0+m;strs=,O,;strcpy(xxi,str);)题目5(整数排序题)在文件in.dat中有200个正整数,且每个数均在1000至 9999之间。函数ReadDat。读取这200个数存放到数组aa中。请编制函数jsSort(),其函数的功能是:要求按每个数的后三位的大小进行升序排列,然后取出满足此条件的前10个数依次存入数组b b 中,如果后三位的数值相等,则按原先的数值进行降序排列。最后调用函数WriteDat。把结果b b 输出到文件out.dat 中。例:处理前 6012 5099 9012 7025 8088处理后 9012 6012 7025 8088 5099void jsSort()(int i,j,data;for(i=0;i199;i+)for(j=i+l;jaaj%1000llaai%1000=aa|j%1000&aa(ilaa|j)data=aai;aai=aaj;aaj=data;for(i=0;i10;i+)bbi=aai;)题目6 正整数排序在文件in.dat中有200个正整数,且每个数均在1000至 9999之间。函数ReadDat。读取这200个数存放到数组aa中。请编制函数jsSort(),其函数的功能是:要求按每个数的后.三位的大小进行降序排列,然后取出满足此条件的前10个数依次存入数组b 中,如果后三位的数值相等,则按原先的数值进行升序排列。最后调用函数WriteDat()把结果b b 输出到文件out.dat 中。例:处理前 9012 5099 6012 7025 8088处理后 5099 8088 7025 6012 9012void jsSort()int ij,data;for(i=0;i199;i+)for(j=i+1;j200;j+)if(aai%1000aaj)data=aai;aai=aa|j;aaj=data;for(i=0;i10;i+)bbi=aai;题目7(结构体操作题)已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称me(字符型10位),单价dj(整型),数量si(整型),金额je(长整型)五部分组成。其中:金额=单价*数量计算得出.函数ReadDat。是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat。,其功能要求:按产品代码从大到小进行排列,若产品代码相同,则按金额从大到小进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT6.DAT中。void SortDat()inti.j;PRO xy;for(i=0;i99;i+)for(j=i+1 ;j 100;j+)if(strcmp(selli.dm,sellj.dm)Ollstrcmp(selli.dm,sellj.dm)=O&selli.jesell(j.je)xy=sell|i|;sell i=sell|j|;sellj=xy;)题目8(字符替换题)函数ReadDat()实现从文件ENGIN中读取篇英文文章,存入到字符串数组x x中;请编制函数encryptChar。,按给定的替代关系对数组x x中的所有字符进行替代,仍存入数组x x的对应的位置上,最后调用函数WriteDat。把结果x x输出到文件PS1.DAT中。替代关系:f(p)=p*ll mod 256(p是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCH值),如果计算后f(p)值小于等于3 2或大于1 3 0,则该字符不变,否则将f(p)所对应的字符进行替代。(注意中间变量用无符号整型),部分源程序存在文件progl.c中。原始数据文件存放的格式是:每行的宽度均小于8 0个字符。void encryptChar()inti,j;for(i=0;imaxline;i+)for(j=0;jstrlen(xxi);j+)if(xxij*ll%256130)continue;else xxij=xxij*ll%256;题目9(字符串排序题)函数ReadDat。实现从文件IN.DAT中读取一篇英文文章存入到字符串数组x x中,请编制函数SortCharDO,其函数的功能是:以行为单位对字符按从大到小的顺序进行排序,排序后的结果仍按行重新存入字符串数组x x中,最后调用函数writeDat()把 结 果x x输出到文件OUT2.DAT 中。例:原文:dAe.BfC.CCbbAA结 果:fedCBA.bbCCAAvoid SortCharD(void)int i,j,k,strl;char ch;for(i=0;imaxline;i+)strl=strlen(xxi);for(j=0;jstrl-1 ;j+)for(k=j+1 ;kstrl;k+)if(xxijxxik)ch=xxij;xxij=xxik;xxik=ch;)题目10(替换字符题)函数ReadDat。实现从文件IN.DAT中读取一篇英文文章存入到字符串数组x x中,请编制函数ConvertCharA(),其函数的功能是:以行为单位把字符串中的所有小写字母改写成该字母的下一个字母,如果是字母z,则改写成字母a。大写字母仍为大写字母,小写字母仍为小写字母,其他字符不变。把已处理的字符串仍按行重新存入字符串数组x x中,最后调用函数writeDat。把结果xx输出到文件OUT 1.DAT中。例:原文:Adb.Bcdzaabck.LLhj结果:Aec.Bdeabbcdl.LLikvoid ConvertChar A(void)inti,j;for(i=0;imaxline;i+)for(j=0;j=a&xxij=y)xxij+=l;题目11(字符串字母移位题)程序progl.c的功能是:把s字符串中的所有字母改写成该字母的下一个字母,字母z改写成字母a。要求大写字母仍为大写字母,小写字母仍为小写字母,其它字符不做改变。请考生编写函数chg(char*s)实现程序要求,最后调用函数readwriteDAT()把结果输出到文件be 1.out中。例如:s 字符串中原有的内容为:M n.l23Zxy,则调用该函数后,结果为:No.l23Ayzovoid chg(char*s)inti;for(I=0;I=,a&si=,A&si=,Yr)si+=l;)题目 12(结构体运算题题)已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4 位),产品名称me(字符型10位),单价dj(整型),数量si(整型),金额je(长整型)五部分组成。其中:金额=单价*数量计算得出。函数ReadDat。是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按产品名称从小到大进行排列,若产品名称相等,则按金额从小到大进行排列,最终排列结果仍存入结构数组sell中,void SortDat()PRO xy;for(i=0;i99;i+)for(j=i+l;jOllstrcmp(selli.mc,sell|j.mc)=O&selli.jesell|jl.je)xy=selli;selli=sellj;sellj=xy;)题 目 13(结构体运算题)已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4 位),产品名称me(字符型10位),单价dj(整型),数量si(整型),金额je(长整型)五部分组成。其中:金额=单价*数量计算得出。函数ReadDat。是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按产品代码从小到大进行排列,若产品代码相等,则按金额从大到小进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat。把结果输出到文件OUT9.DAT中。void SortDat()PRO xy;for(i=0;i99;i+)for0=i+l;jOllstrcmp(selli.dm,sell|j.dm)=O&sellfi.jesellfj.je)xy=selli;selli=sellj;sellj=xy;题目14(整数统计排序题)已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsV al(),其功能是:依次从数组a 中取出一个四位数,如果该四位数连续大于该四位数以后的五个数且该数是奇数(该四位数以后不满五个数,则不统计),则统计出满足此条件的个数ent并把这些四位数按从小到大的顺序存入数组b 中,最后调用写函数writeDat()把结果ent以及数组b 中符合条件的四位数输出到OUT.DAT文件中。void jsVal()int i,j,flag;for(i=0;iMAX-5;i+)for(j=i+1 ;jaj&ai%2)tlag=l;else flag=O;break;if(flag=l)bcnt+=ai;)for(i=0;icnt-1 ;i+)for(j=i+l;jbj)flag=bi;bi=bj;bj=flag;)题 目 15(整数各位数字运算排序题)已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat。把这些数存入数组a中,请考生编制一函数jsV al(),其功能是:若一个四位数的千位数字上的值小于等于百位数字上的值,百位数字上的值小于等于十位数字上的值,以及十位数字上的值小于等于个位数字上的值,并且原四位数是偶数,则统计出满足此条件的个数ent并把这些四位数按从小到大的顺序存入数组b 中,最后调用写函数writeDat()把结果en t以及数组b 中符合条件的四位数输出到OUT.DAT文件中。voidjsVal()int i,j;int qw,bw,sw,gw;for(i=0;iMAX;i+)qw=ai/l 000;bw=ai%1000/100;sw=ai%100/10;gw=ai%10;if(qw=bw)&(bw=sw)&(sw=gw)&(ai%2=0)bcnt+=ai;)for(i=0;icnt-1;i+)fbr(j=i+1 ;jbj)qw=bi;bi=bj;bj=qw;)题目16(字符替换题)函数ReadDat。实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中,请编制函数 StrCharJR(),其函数的功能是:以行为单位把字符串中所有字符的ASCH值右移4 位,然后把右移后的字符ASCII值再加上原字符的ASCII值,得到新的字符仍存入原字符串对应的位置上。最后把已处理的字符串仍按行重新存入字符串数组x x 中,最后调用函数writeDat。把结果xx输出到文件OUT8.DAT中。void StrCharJR()int i,j;for(i=0;imaxline;i+)for(j=0;jstrlen(xxi);j+)xxijj+=(xxijj4);(右移四位的表达方式)题目17(亲朋字符替换题)函数READDAT()实现从文件1N.DAT中读取 篇英文文章存入到字符串数组X X 中;请编制函数CHA(),其函数功能是:以行为单位把字符串中的第一个字符的ASCII值加第二个字符的 ASCII值,得到第一个亲朋字符,第二个字符的ASCII值加第三个字符的ASCII值,得到第二个新字符,依此类推一直处理到最后第二个字符,最后一个字符的ASCII值加原第一个字符的ASCII值,得到最后一个新的字符,得到的新字符分别存放在原字符串对应的位置上。最后把已处理的字符串逆转后按行重新存入字符串数组X X 中,最后调用函数WRITEDKT。把结果XX输出到文件OUT9.DAT中.原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格.void ChA(void)int i,j;char ch;for(i=0;imaxline;i+)ch=xxi|0|;for(j=0;jstrlen(xx|i|)-1 ;j+)xxij+=xxij+l;xxistrlen(xxi)-l+=ch;strrev(xxi);)题目18函数ReadDat。实现从文件ENGIN中读取一篇英文文章,存入到字符串数组x x 中;请编制函数encryptChar(),按给定的替代关系对数组xx中的所有字符进行替代,仍存入数组xx的对应的位置匕 最后调用函数WriteDat。把结果xx输出到文件PS10.DAT中。替代关系:f(p)=p*ll mod 256(p 是数组中某一个字符的ASCH值,f(p)是计算后新字符的ASCII值),如果原字符的ASCII值是偶数或计算后f(p)值小于等于3 2,则该字符不变,否则将f(p)所对应的字符进行替代。void encryptChar()int i,j;fbr(i=O;imaxline;i+)for(j=0;jstrlen(xxi);j+)if(xxij*ll%256=32llxxiJj%2=0)continue;else xxfij=xxij*ll%256;题目19(单词个数统计题)编写一个函数findStr(char*str,char*substr),该函数统计一个长度为2 的子字符串在另一个字符串中出现的次数。例如,假定输入的字符串为”asdasasdfgasdaszx67asdmklo,子字符串为“as”,函数返回值是6。(表明了返回值是整数型)函数ReadWrite。实现从文件in.dat中读取两个字符串,并调用函数行ndStr(),最后把结果输出到文件out.dat中。int findStr(char*str,char*substr)int i,j,lenl,len2,cnt=0,flag;lenl=strlen(str);len2=strlen(substr);fbr(i=0;ilenl;i+4-)for(j=0;jlen2;j+)if(str i-Fj=substrj)fl ag=1;else flag=O;break;if(flag=l)cnt+;)return ent;)题目20(Fibonacci数列题)编写函数jsV alue,它的功能是:求 Fibonacci数列中大于t 的最小的一个数,结果由函数返回。其中Fibonacci数列F(n)的定义为:F(0)=0,F(l)=lF(n)=F(n-l)+F(n-2)最后调用函数writeDat。读取50个数据t,分别得出结果且把结果输出到文件out.dat中。例如:当 t=1000时,函数值为:1597。int jsValue(int t)intfO=O,fl=Lfn;fn=fO+fl;while(fn=0.000001);return xl;)注:本题在无忧或捷成模拟盘中,需定义double x0,xl;才能通过,据实际上机抽到该题的考生反映,实际上机需按上面解法的定义方能通过,特此说明,供参考。题目22(平方根问题)请编写函数countValueO,它的功能是:求 n 以内(不包括n)同时能被3 与 7 整除的所有自然数之和的平方根s,并作为函数值返回,最后结果s 输出到文件out.dat中。例如若n 为 1000时,函数值应为:s=153.909064odouble countValue(int n)int i;double s=0.0;for(i=l;in;i+)if(i%21=0)s+=i;return sqrt(s);题目23(实数运算题)已知在文件in.dat中存有N 个(个数 200)实数,函数readdat。读取这N 个实数并存入数组 xx 中。请编制函数calvalue(),其功能要求:1、求出这N 个实数的平均值aver;2、分别求出这N 个实数的整数部分之和sumint以及小数部分之和sum dec,最后调用函数writedat。把所求的结果输出到文件out.dat中。注意:部分源程序已给出。void CalValue(void)inti;for(i=0;iN;i+)sumint+=(long)xxi;sumdec+=xxi-(long)xxi;aver+=xxi;)aver/=N;)题目24(完全平方数问题)下列程序progLc的功能是:在三位整数(100至 999)中寻找符合条件的整数并依次从小到大存入数组中;它既是完全平方数,又是两位数字相同,例 如 144、676等。请编制函数实现此功能,满足该条件的整数的个数通过所编制的函数返回。int jsValue(int bb)int i,j,k=O;int hun,ten,data;for(i=10;i32;i+)hum=j/100;ten=j%100/10;data=j%10;if(hum=tenllhum=datallten=data)bbk+=j;return k;)题目25(回文数问题)下列程序的功能是:寻找并输出11至 999之间的数m,它满足m,m2和 m 3均为回文数。所谓何文数是指其各位数字左右对称的整数,例 如 121,676,94249等。满足上述条件的数如 m=ll,m2=121,m3=1331皆为回文数。请编制函数int svalue(long m)实现此功能,如果是回文数,则函数返回1,反之则返回函 最后把结果输出到文件outdat中。int jsValue(long n)int i,strl,half;char xy20;ltoa(n,xy,10);/*注意这里不能使用itoa()函 数,因 为 n 是 long型的*/strl=strlen(xy);half=strl/2;for(i=0;i=h a l f)r e t u r n 1;e l s e r e t u r n 0;)或者下面的解法:i n t j s V a l u e(l o n g n)l o n g i n t s=O,k;k=n;w h i l e(k)s=s*1 0+k%1 0;V=1 0;)i f(s=n)r e t u r n 1;i f(s!=n)r e t u r n 0;)输出结果为:m=l l,m*m=1 3 3 1m=10201,1030301m=1 2 3 2 1,m*m*m=1 3 6 7 6 3 1题目2 6 (整数统计运算题)已知在文件IN.DAT中存有若干个(个数200)四位数字的正整数,函 数R e a d D a t()读取这若干个正整数并存入数组xx中。请编制函数C a l V a l u e。,其功能要求:1、求出这文件中共有多少个正整数t o t N u m;2、求这些数布移1位后,产生的新数是偶数的数的个数t o t Cm,以及满足此条件的这些数(右移前的值)的算术平均值t o t Pj z,最后调用函数w r i t e Da t。把所求的结果输出到文件O UT.D A T中。v o i d Ca l V a l u e(v o i d)i n t i,d a t a;f o r(i=0;i 0)t o t Nu m+;d a t a=x x i l;i f(d a t a%2=0)t o t Cn t+;t o t Pj z+=x x i ;)i f(t o t Cn t=0)t o t Pj z=0;e l s e t o t Pj z/=t o t Cn t;)题目2 7(整数各位数字运算题)已知数据文件in.dat中存有300个四位数,并已调用读函数ReadDat()把这些数存入数组a中,请编制一函数jsValue(),其功能是:求出千位数上的数减百位数上的数减十位数上的数减个位数上的数大于零的个数e n t,再把所有满足此条件的四位数依次存入数组b 中,然后对 数 组 b 的四位数按从小到大的顺序进行排序,最后调用写函数writeDat()把结果输出到out.dat 文件。例如:9123,9-1-2-30,则该数满足条件存入数组b 中,且个数cnt=cnt+l。9812,9-8-1-20,则该数不满足条件忽略。jsValue()int i,j,qw,bw,sw,gw;for(i=0;i0)bcnt+=ai;)for(i=0;icnt-l;i+)for(j=i+l;jbj)qw=bi;bfi=b|j;bj=qw;)题目28(整数各位打散组合运算题)已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsV al(),其功能是:把千位数字和十位数字重新组成一个新的十位数ab(新十位数的十位数字是原四位数的千位数字,新十位数的个位数字是原四位数的十位数字),以及把个位数字和百位数字组成另一个新的十位数cd(新十位数的十位数字是原四位数的个位数字,新十位数的个位数字是原四位数的百位数字),如果新组成的两个十位数ab-cd=0且 ab-cd=10且两个数均是奇数,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组b 中,并要计算满足上述条件的四位数的个数ent。最 后 main。函数调用写函数writeDat()把结果e n t以及数组b 中符合条件的四位数输出到OUT.DAT文件中。voidjsVal()int i,j,thou,hun,ten,data,ab,cd;for(i=0;i=0&(ab-cd)=10&cd=10)bcnt+=ai;)for(i=0;icnt-l;i+)for(j=i+1 ;jcnt;j+)if(bi=10且 ab-cd=20且两个数均是偶数,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组b 中,并要计算满足上述条件的四位数的个数cntovoid jsVal()int i,j,qw,bw,sw,gw,ab,cd;for(i=0;i=10&ab-cd=20&ab%2=0&cd%2=0&qw!=0&gw!=0)bcnt+=ai;)for(i=0;icnt-l;i+)for(j=i+1 ;jcnt;j+)if(bibj)qw=bi;bi=bj;bj=qw;)题目30(整数统计排序题)已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat。把这些数存入数组a中,请考生编制一函数jsV al(),其功能是:依次从数组a 中取出一个四位数,如果该四位数连续小于该四位数以后的五个数且该数是偶数(该四位数以后不满五个数,则不统计),则统计出满足此条件的个数ent并把这些四位数按从小到大的顺序存入数组b 中,最后调用写函数writeDat()把结果ent以及数组b 中符合条件的四位数输出到OUT.DAT文件中。voidjsVal()int i,j,flag;for(i=0;iMAX-5;i+)for(j=i+l;j=i+5;j+)if(aia|j&ai%2=0)flag=l;else flag=0;break;if(flag=l)bcnt+=ai;)for(i=0;icnt-l;i+)for(j=i+1 ;jbj)flag=bi;bi=b|j;b|j=flag;题目31(结构体运算题)已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4 位),产品名称me(字符型10位),单价dj(整型),数量si(整型),金额je(长整型)五部分组成。其中:金额=单价*数量计算得出。函数ReadDat。是读取这100个销售记录并存入结构数组sell中。请编制函数SonD atO,其功能要求:按金额从大到小进行排列,若金额相同,则按产品代码从大到小进行排列,最终排列结果仍存入结构数组se ll中,最后调用函数WriteDat()把结果输出到文件OUT4.DAT中。void SortDat()inti,j;PRO xy;for(i=0;i99;i+)for(j=i+1 ;jl 00;j+)if(sell|i|.jesell|j|.jellsell|i|.je=sellj.je&strcmp(selli|.dm,sell|j|.dm)0)xy=selli;selli=sellj;sellj=xy;)题目32(结构体运算题)已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4 位),产品名称me(字符型10位),单价dj(整型),数量si(整型),金额je(长整型)五部分组成。其中:金额=单价*数量计算得出。函数ReadDat。是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat。,其功能要求:按产品名称从大到小进行排列,若产品名称相等,则按金额从小到大进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat。把结果输出到文件OUT7.DAT中。void SortDat()int i,j;PRO xy;for(i=0;i99;i+)for(j=i+1 ;j 100;j+)if(strcmp(selli.mc,sellj.mc)sellj.je)xy=selli;selli=sellj;sellj=xy;题目33(方差运算题)请编制函数ReadDat()实现从文件IN.DAT中读取1000个十进制整数到数组x x 中:请编制函数Compute。分别计算出x x 中偶数的个数ev en,奇数的平均值a v e l,偶数的平均值ave2以及方差totfc的值,最后调用函数WriteDat。把结果输出到OUT.DAT文件中。计算方差的公式如下:N2totfc=l/NE(xxi-ave2)i=l设 N 为偶数的个数,xxi为偶数,ave2为偶数的平均值。原始数据文件存放的格式是:每行存放10个数,并用逗号隔开。(每个数均大于0 且小于等于2000)/*编制函数 ReadDat()的部分*/for(i=0;iMAX;i+)fscanf(fp,n%d,&xxi);if(i+l)%10=0)fscanf(fp,n);void Compute(void)int i,yyMAX;for(i=0;iMAX;i+)yyi=o;for(i=0;iMAX;i+)if(xxi%2=0)yyeven+=xxi;ave2+=xxi;else odd+;avel+=xxi;if(odd=0)avel=0;else ave l/=odd;if(even=0)ave2=0;else ave2/=even;fbr(i=0;ieven;i4-4-)totfc+=(yyi-ave2)*(yyi-ave2)/even;)题目34(素数题)无忧id 102题提供了求素数isPrime。函数程序progl.c的功能是:选 出 100以 上 1000之内所有个位数字与十位数字之和被10除所得余数恰是百位数字的素数(如293)o 计算并输出上述这些素数的个数ent以及这些素数值的和 sum。请考生编写函数countValue()实现程序要求,最后调用函数writeDAT。把结果ent和 sum输出到文件be 10.out中。int isPrime(int m)(int i;for(i=2;im;i+)if(m%i=0)return 0;return 1;)void countValue()int i,j,bw,sw,gw;for(i=100;i1000;i+)bw=i/100;sw=i%100/10;gw=i%10;if(isPrime(i)&(gw+sw)%10=bw)cnt+;sum+=i;题目35(级数运算题)某级数的前两项Al=l,A 2=l,以后各项具有如下关系:An=An-2+2 An-1 (注:n-2 与 n-1 为下标)下列程序progl.c的功能是:要求依次对于整数M=100,1000和 10000求出对应的n值,使其满足:Sn=M,这 里 Sn=Al+A2+.+An,并依次把n 值存入数组单元b|0,bl和 b2中,请编制jsValue。函数来实现此功能,最后调用函数writeDat。把数组b中的值输出到out.dat文件中。请勿改动主函数main。和写函数writeDat。的内容。#include int b3;jsValue()int al=l,a2=l,al2,sn,k=2;sn=al+a2;while(l)al2=al+2*a2;if(sn=100)bO=k;if(sn=1000)b 1 =k;if(sn=10000)b2=k;break;sn=sn+al2;al=a2;a2=al2;k+;运行结果为:M=100,n=6M=1000,n=9M=10000,n=ll题目36(字符替换题)函数ReadDat。实现从文件ENG.IN中读取一篇英文文章,存入到字符串数组x x 中:请编制函数encryptChar。,按给定的替代关系对数组xx中的所有字符进行替代,仍存入数组xx的对应的位置匕 最后调用函数WriteDat。把结果xx输出到文件pS6.DAT中。替代关系:f(p)=p*11 mod 256(p 是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果计算后f(p)值小于等于32或 f(p)对应的字符是数字0 至 9,则该字符不变,否则将f(p)所对应的字符进行替代。void encryptChar()int i,j;fbr(i=0;imaxline;i+)for(j=0;jstrlen(xx i);j+)if(xxi|j|*ll%256=0&xxi|j|*11%256=9)continue;else xxij=xxij*ll%256;)题目37(字符替换题)函数ReadDat。实现从文件ENGIN中读取一篇英文文章,存入到字符串数组x x 中;请编制函数encryptChar(),按给定的替代关系对数组xx中的所有字符进行替代,仍存入数组xx的对应的位置上,最后调用函数WriteDat。把结果xx输出到文件PS7.DAT中。替代关系:f(p)=p*ll mod 256(p 是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCH值),如果原字符是大写字母或计算后f(p)值小于等于3 2,则该字符不变,否则将 f(p)所对应的字符进行替代。void encryptChar()inti,j;for(i=0;imaxline;i+)for(j=0;jstrlen(xxi):j+)if(xxi|j*ll%256=,A,&xxij=Z)continue;else xxijj=xxij*11%256;题目38(结构体运算题)已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4 位),产品名称me(字符型10位),单价dj(整型),数量si(整型),金额je(长整型)五部分组成。其中:金额=单价*数量计算得出。函数ReadDat。是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat。,其功能要求:按产品代码从小到大进行排列,若产品代码相同,则按金额从小到大进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat。把结果输出到文件OUT6.DAT中。void SortDat()inti.j;PRO xy;for(i=0;i99;i+)for(j=i+l;j0llstrcmp(sell i.dm,sell j.dm)=O&selli.jesellj.je)xy=sell i ;sell i=sell j ;sell j=xy;)题目39(选票问题)现 有 个 10个 人 100行的选票数据文件IN.DT,其数据存放的格式是每条记录的长度均为10位,第一位表示第一个人的选中情况,第二位表示第二个人的选中情况,依此类推:内容均为字符。和 1,1表示此人被选中,0 表示此人未被选中,全选或不选均为无效的选票。给定函数ReadDat。的功能是把选票数据读入到字符串数组x x 中。请编制函数CountRs()来统计每个人的选票数并把得票数依次存入yy 到yy中。把结果yy输出到文件OUT.DAT中void CountRs(void)int i,j,count;for(i=0;i100;i4-+)count=0;for(j=0;j10;j+)if(xxij=lf)count+;if(count=Ollcount=10)continue;for(j=0;j10;j+)if(xxij=fn yyU+