c语言典型编程题-4.doc
1、已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:把千位数字和十位数字重新组成一个新的十位数ab(新十位数的十位数字是原四位数的千位数字,新十位数的个位数字是原四位数的十位数字),以及把个位数字和百位数字组成另一个新的十位数cd(新十位数的十位数字是原四位数的个位数字,新十位数的个位数字是原四位数的百位数字),如果新组成的两个十位数ab-cd>=10且ab-cd<=20且两个数均是偶数,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组b中,并要计算满足上述条件的四位数的个数cnt。void jsVal() int i,j,qw,bw,sw,gw,ab,cd; for(i=0;i<MAX;i+) qw=ai/1000; bw=ai/100%10; sw=ai%100/10; gw=ai%10; ab=qw*10+sw; cd=gw*10+bw; if(ab-cd>=10&&ab-cd<=20&&ab%2=0&&cd%2=0&&qw!=0&&gw!=0) bcnt+=ai; for(i=0;i<cnt-1;i+) for(j=i+1;j<cnt;j+) if(bi<bj) qw=bi;bi=bj;bj=qw;2、函数ReadDat()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中,请编制函数SortCharD(),其函数的功能是:以行为单位对字符按从大到小的顺序进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数writeDat()把结果xx输出到文件OUT2.DAT中。 例:原文:dAe,BfC. CCbbAA 结果:fedCBA. bbCCAA void SortCharD(void)int i,j,k,strl; char ch; for(i=0;i<maxline;i+) strl=strlen(xxi); for(j=0;j<strl-1;j+) for(k=j+1;k<strl;k+) if(xxij<xxik) ch=xxij; xxij=xxik; xxik=ch; 3、已知数据文件in.dat中存有300个四位数,并已调用读函数ReadDat()把这些数存入数组a中,请编制一函数jsValue(),其功能是:求出个位数上的数减千位数上的数减百位数上的数减十位数上的数大于零的个数cnt,再求出所有满足此条件的四位数平均值pjz1,以及不满足此条件的四位数平均值pjz2,最后调用写函数writeDat()把结果输出到out.dat文件。 例如:1239,9-1-2-3>0,则该数满足条件计算平均值pjz1,且个数cnt=cnt+1。 8129,9-8-1-2<0,则该数不满足条件计算平均值pjz2。 jsValue()int i,j,thou,hun,ten,data,n=0; for(i=0;i<300;i+) thou=ai/1000; hun=ai/100%10;ten=ai%100/10; data=ai%10; if(data-thou-hun-ten>0) cnt+; pjz1+=ai; else n+; pjz2+=ai; if(cnt=0) pjz1=0; else pjz1/=cnt; if(n=0) pjz2=0; else pjz2/=n;4、现有一个10个人100行的选票数据文件IN.DAT,其数据存放的格式是每条记录的长度均为10位,第一位表示第一个人的选中情况,第二位表示第二个人的选中情况,依此类推 :内容均为字符0和1,1表示此人被选中,0表示此人未被选中,全选或不选均为无效的选票。给定函数ReadDat()的功能是把选票数据读入到字符串数组xx中。请编制函数CountRs()来统计每个人的选票数并把得票数依次存入yy0到yy9中。把结果yy输出到文件OUT.DAT中void CountRs(void) int i,j,count; for(i=0;i<100;i+) count=0; for(j=0;j<10;j+) if(xxij='1') count+; if(count=0|count=10) continue; for(j=0;j<10;j+) if(xxij='1') yyj+; 5、编写一个函数findStr(char *str,char *substr),该函数统计一个长度为2的子字符串在另一个字符串中出现的次数。例如,假定输入的字符串为"asd asasdfg asd as zx67 asd mklo",子字符串为"as",函数返回值是6。(表明了返回值是整数型) 函数ReadWrite()实现从文件in.dat中读取两个字符串,并调用函数findStr(),最后把结果输出到文件out.dat中。 int findStr(char *str,char *substr) int i,j,len1,len2,cnt=0,flag; len1=strlen(str); len2=strlen(substr); for(i=0;i<len1;i+) for(j=0;j<len2;j+) if(stri+j=substrj) flag=1; else flag=0;break; if(flag=1) cnt+; return cnt;6、请编写一个函数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;i<m;i+) if(m % i=0)return 0; return 1;void num(int m,int k,int xx) int s=0; for(m=m+1;k>0;m+) if(isP(m) xxs+=m; k-;7、程序prog1.c的功能是:把 s 字符串中的所有字母改写成该字母的下一个字母,字母z改写成字母a。要求大写字母仍为大写字母,小写字母仍为小写字母,其它字符不做改变。 请考生编写函数chg(char *s)实现程序要求,最后调用函数readwriteDAT( )把结果输出到文件bc1.out中。 例如:s 字符串中原有的内容为:Mn.123Zxy,则调用该函数后,结果为:No.123Ayz。 void chg(char *s)int I;for(I=0;I<strlen(s);I+) if(si='z'|si='Z') si-=25; else if(si>='a'&&si<='y'|si >='A'&&si<='Y') si+=1;