2012年全国计算机三级网络技术上机题库_及答案

2012年全国计算机三级网络技术上机题库_及答案

ID:82949394

大小:177.62 KB

页数:137页

时间:2023-09-25

上传者:灯火阑珊2019
2012年全国计算机三级网络技术上机题库_及答案_第1页
2012年全国计算机三级网络技术上机题库_及答案_第2页
2012年全国计算机三级网络技术上机题库_及答案_第3页
2012年全国计算机三级网络技术上机题库_及答案_第4页
2012年全国计算机三级网络技术上机题库_及答案_第5页
2012年全国计算机三级网络技术上机题库_及答案_第6页
2012年全国计算机三级网络技术上机题库_及答案_第7页
2012年全国计算机三级网络技术上机题库_及答案_第8页
2012年全国计算机三级网络技术上机题库_及答案_第9页
2012年全国计算机三级网络技术上机题库_及答案_第10页
资源描述:

《2012年全国计算机三级网络技术上机题库_及答案》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1S下列程序的功能是:将大于整数m且紧靠m的k个素数存入数组xx«请编写函数num(intm,intkjntxxロ)实现函数的要求,最后调用函数readwriteDAT。把结果输出到文件out.dat中。例如:若输入17,5,则应输出:19,23,29,31,37。注意:部分源程序已给出。请勿改动主函数main。和函数readwriteDAT()的内容。类型:素数。voidnum(intm,intk,intxx[])/・标准答案・/{intdata=m+l;inthaltn=OJ;while(l){half=data/2;for(l=2;l<=half;l++)if(data%l==O)break;if(l>half){xx[n]=data;n++;}if(n>=k)break;data++;})或者:voidnum(intmjntkjntxx[]){intij,s=O;for(i=m+l;k>0;i++){for(j=2;j0;m++)if(isP(m)){xx[i++]=m;k--;}}原程序如下:#include#includevoidreadwriteDAT();intisP(intm){inti;for(i=2;i

1voidnum(intm,intkJntxx[])main(){intm,n,xx[1000];clrscr();printf("

2Pleaseentertwointegers:");scanf("%d,%d",&m,&n);num(m,n,xx);for(m=0;m

3");readwriteDAT();system("pause");}voidreadwriteDAT(){intm,n,xx[lOOO],i;FILE*rf,*wf;rf=fopen("in.dat","r");wf=fopen("out.dat","w");for(i=0;i<10;i++){fscanf(rf,"%d%d",&m,&n);num(m,n,xx);for(m=0;m

4");}fclose(rf);fclose(wf);}2Z已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制ー函数jsVal(),其功能是:如果四位数各位上的数字均是0或2或4或6或8,则统计出满足此条件的个数ent,并把这些四位数按从大到小的顺序存入数组b中。最后main()函数调用写函数writeDat()把结果ent以及数组b中符合条件的四位数输出到OUT.DAT文件中。注意:部分源程序存在文件PR0G1.C文件中。程序中已定义数组:a[200],b[200],已定义变量:ent请勿改动数据文件IN.DAT中的任何数据、4■:函数main。、读函数readDat()和写函数writeDat()的内容voidjsVal()/・标准答案・/{intbb[4];intl,j,k,flag;for(l=0;l<200;l++){bb[0]=a[l]/1000;bb[l]=a[l]%1000/100;bb[2]=a[l]%100/10;bb[3]=a[l]%10;for(j=0;j<4;j++){if(bb[j]%2==0)flag=l;else

5{flag=O;break;})if(flag==l){b[cnt]=a[l];cnt++;}}for(l=0;l#defineMAX200inta[MAX],b[MAX]zent=0;voidjsVal()(}voidreadDat(){inti;FILE*fp;fp=fopenC'in.dat",Hr");for(i=0;i

6”,ent);for(i=0;i

7");writeDat();system("pause");}writeDat(){FILE*fp;inti;fp=fopen("out.dat","w");fprintf(fp,"%d

8”,ent);for(i=0;i

9”,b[i]);fclose(fp);}3:函数READDAT()实现从文件IN.DAT屮读取ー篇英文文章存入到字符串数组XX中;请编制函数STROR(),其函数功能是:以行为单位把字符串中的所有小写字母〇左边的字符串内容移到该串的右边存放,然后并把小写字母〇删除,余下的字符串内容移到已处理字符串的左边存放.最后把己处理的字符串仍按行重新存入字符串数组XX中,最后调用函数WRITEDAT()把结果XX输出到文件OUT.DAT中.例如:原文:Youcancreateanindexonanyfield.youhavethecorrectrecord.结果:nanyfield.Youcancreateanindexrd.yuhavethecrrectrec原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格.类型:字符串(单词)的倒置和删除。

10voidStrOR(void)/・标准答案・/{intl,j,k,index,strl;charch;for(l=0;l=index;j-){ch=xx[l][strl-l];for(k=strl-l;k>0;k-)xx[l][k]=xx[l][k-l];xx[l][0]=ch;}}}或者:voidStrOR(void){inti;chara[80],*p;for(i=0;i=0;j-){if(xx[i][j]=='o'){righto=j;break;}}for(j=righto+l;j

11})或者:注:该题要求的字符串中所有小写字母〇左边的字符串内容移到该串的右边存放,即将串中“最后”一个字母。左右两侧的内容互换。题中第一个while。特环的作用是让pl指向最后ー个字母号,。第一个ctrcat()函数的作用是将pl以后的字符都放到新串t中,第二个strcat。函数的作用是将pl以前的字符连接到新串t的后面(注意:在些之前要让pl所指的单元成为pl前面字符串的结束位置・pl='\o')。这时完成左右互换。最后ー个while。循环的作用是删除新串中的所有小写字母’〇’,采用的删除方法是不是'〇’的字母一律留下,否则不留(即相当于删除。)voidStrOR(void){inti;char*pl/*p2/t[80];for(i=0;i=xx[i])pl-;memcpy(tl/pl+l,p2-pl);tl[p2-pl]=O;strcatfttl);strcat(t,”");if(pl

12}strcpy(xx[i]zt);)}原程序如下:#include"stdio.h"#include"string.h"#include"conio.hHcharxx[50][80];intmaxline=0;intReadDat(void);voidWriteDat(void);voidStrOR(void)()voidmain(){clrscr();if(ReadDat()){printf("Can'topenthefile!

13");return;}StrOR();WriteDat();system("pausen);intReadDat(void){FILE*fp;inti=O;char*p;if((fp=fopen("in.dat";'r"))==NULL)return1;while(fgets(xx[i]z80zfp)!=NULL){p=strchr(xx[i]z'

14');if(p)*p=O;i++;}maxline=i;fclose(fp);return0;}voidWriteDat(void){FILE*fp;inti;fp=fopen("out.dat";,w");for(i=0;i

15"zxx[i]);fprintf(fpj%s

16ツxx[i]);}fclose(fp);}4:函数ReadDat()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中;请编制函数StrOL(),其函数的功能是:以行为单位对行中以空格或标点符号为分隔的所有单词进行

17倒排,同时去除标点符号,之后把ビ处理的字符串(应不含标点符号)仍按行市新存入字符串数组xx中。最后main。函数调用函数WriteDat。把结果xx输出到文件。UT6.DAT中。例如:原文:YouHeMeIamastudent.结果:MeHeYoustudentaamI原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。类型:字符串(单词)的倒置和删除。voidStrOL(void)/・标准答案・/{intIJzkzstrlJ;charc;for(l=0;l='A'&&c<='Z')||(c>='a,&&c<='z,)||c=='');elsexx[l][j]='*;}for(l=0;l=,a'&&xx[l][l]<=,z')||(xx[l][l]>='A'&&xx[l][l]<='z'))&&l>=0){for(j=k;j>=0;j-)pp[j+l]=pp[j];pp[O]=xx[l][l];k++;l-;)strcat(ch,pp);strcpy(pp,”””");k=l;if(l==-l)break;while((xx[l][l]<'A'||xx[l][l]>'z')&&l>=0){for(j=k;j>=0;j-)pp[j+l]=ppU];pp[O]=xx[l][l];k++;1-;)strcat(ch,pp);strcpyfpp;'""");k=0;if(l==-l)break;}strcpy(xx[l],ch);})或者:voidStrOL(void){inti,j,k,m,n』;charyy[80];for(i=0;i=0;j-){if(isalpha(xx[i][j]))k++;else{for(m=l;m<=k;m++)yy[n++]=xx[i][j+m];k=0;}

18if(xx[i]O]==")yy[n++]='}for(m=l;m<=k;m++)yy[n++]=xx[i][j+m];yy[n]=0;strcpy(xx[i]zyy);})原程序如下:#include"stdio.h"#include"string.h"#include"conio.h"#include"ctype.h"charxx[50][80];intmaxline=0;intReadDat(void);voidWriteDat(void);voidStrOR(void))voidmain(){clrscr();if(ReadDat()){printf("Can'topenthefile!

19");return;}StrOR();WriteDat();system("pauseH);}intReadDat(void){FILE*fp;inti=O;char*p;if((fp=fopen("in.dat"/"r"))==NULL)return1;while(fgets(xx[i],80,fp)!=NULL){p=strchr(xx[i]/

20');if(p)*p=O;i++;}maxline=i;fclose(fp);return0;}voidWriteDat(void){FILE*fp;inti;fp=fopen("out.dat";'w");for(i=0;i

21”,xx[i]);

22fprintf(fp,"%s

23,xx[i]);}fclose(fp);}5:在文件in.dat中有200个正整数,且每个数均在!000至9999之间。函数ReadDat。读取这200个数存放到数组aa中。请编制函数jsSort(),其函数的功能是:要求按每个数的后三位的大小进行升序排列,然后取出满足此条件的前10个数依次存入数组b中,如果后三位的数值相等,则按原先的数值进行降序排列。最后调用函数WriteDat()把结果bb输出到文件out.dat中。例:处理前60125099901270258088处理后90126012702580885099注意:部分源程序已给出。请勿改动主函数main。、读数据函数ReadDat()和输出数据函数WriteDat()的内容。voidjsSort()/・标准答案・/{intIJ,data;for(l=0;l<199;l++)for(j=l+l;j<200;j++){if(aa[l]%1000>aaO]%1000){data=aa[l];aa[l]=aa[j];aa[j]=data;}elseif(aa[l]%1000==aa[j]%1000)if(aa[l]#include#includeintaa[200]zbb[10];voidjsSort()(}voidmain(){readDat();jsSort();writeDat();system("pause");}readDat(){FILE*in;inti;in=fopen("in.dat",,,rM);for(i=0;i<200;i++)fscanf(inj%d,",&aa[i]);fclose(in);}writeDat(){FILE*out;inti;clrscr();out=fopen(',out.dat";'w");for(i=0;i<10;i++){printf("i=%d/%d

24"J+l/bb[i]);fprintf(out,"%d

25”,bb[i]);)fclose(out);6r在文件in.dat中有200个正整数,且每个数均在!000至9999之间。函数ReadDat()读取这200个数存放到数组aa中。请编制函数jsSort(),其函数的功能是:要求按每个数的后三位的大小进行降序排列,然后取出满足此条件的前10个数依次存入数组b中,如果后三位的数值相等,则按原先的数值进行升序排列。最后调用函数WriteDat()把结果bb输出到文件out.dat中。例:处理前90125099601270258088处理后50998088702560129012注意:部分源程序已给出。请勿改动主函数main。、读数据函数ReadDat()和输出数据函数WriteDat。的内容。voidjsSort()/・标准答案・/{intしj,data;for(l=0;l<199;l++)for(j=l+l;j<200;j++)

26{if(aa[l]%1000aa[j]){data=aa[l];aa[l]=aaO];aa[j]=data;}}for(l=0;l<10;l++)bb[l]=aa[l];}原程序如下:#include#include#includeintaa[200],bb[10];voidjsSort()()voidmain()(readDat();jsSort();writeDat();system("pauseH);}readDat()(FILE*in;inti;in=fopen("in.dat'(;'r");for(i=0;i<200;i++)fscanf(in/"%d/"z&aa[i]);fclose(in);)writeDat(){FILE*out;inti;clrscr();out=fopen(Hout.dat',,"w");for(i=0;i<10;i++){printf("i=%d/%d

27"/i+l/bb[i]);fprintf(out,"%d

28“,bb[i]);}fclose(out);)7:已知在文件IN.DAT中存有!00个产品销售记录,每个产品销售记录山产品代码dm(字符型4

29位)产品名称me(字符型10位),单价dj(整型),数量si(整型),金额je(长整型)四部分组成。其中:金额=单价・数量计算得出。函数ReadDat()是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按产品代码从大到小进行排列,若产品代码相同,贝リ按金额从大到小进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT10.DAT中。注意:部分源程序存放在PR0G1.C中。请勿改动主函数main()、读数据函数ReadDat。和输出数据函数WriteDat()的内容。voidSortDat()/・标准答案・/{intl,j;PROxy;for(l=0;l<99;l++)for(j=l+l;j<100;j++)if(strcmp(sell[l].dmzsell[j].dm)#include#include#include#include#defineMAX100typedefstruct{chardm[5];/・产品代码・/charmc[ll];/・产品名称・/intdj;/・单价・/intsi;/・数量ッlongje;/・金额ッ}PRO;PROsell[MAX];voidReadDat();voidWriteDat();voidSortDat()(}voidmain(){memsetfsellAsizeoffsell));ReadDat();SortDat();WriteDat();}voidReadDat(){FILE*fp;charstr[80],ch[ll];inti;fp=fopen(,,IN.DAT","rn);for(i=0;i<100;i++){fgets(strz80zfp);memcpy(sell[i].dm/sti;4);memcpy(sell[i].mczstr+4,10);memcpy(ch/str+14,4);ch[4]=0;sell[i].dj=atoi(ch);memcpy(ch,str+18,5);ch[5]二〇;sell[i].sl=atoi(ch);

30sell[i].je=(long)sell[i].dj*sell[i].sl;}fclose(fp);}voidWriteDat(void){FILE*fp;inti;fp=fopen("OUT10.DATM/"w");for(i=0;i<100;i++){fprintf(fp;'%s%s%4d%5d%101d

31"/sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je);}fclose(fp);}8:函数ReadDat()实现从文件ENG.IN中读取一篇英文文章,存入到字符串数组xx中:请编制函数encryptChar(),按给定的替代关系对数组xx中的所有字符进行替代,仍存入数组xx的对应的位置上,最后调用函数WriteDat。把结果xx输出到文件PS1.DAT中。替代关系:f(p)=p*llmod256(p是数组中某ー个字符的ASCI!值,f(p)是计算后新字符的ASCI!值),如果计算后f(p)值小于等于32或大于130,则该字符不变,否则将f(p)所对应的字符进行替代。注意:部分源程序已给出。原始数据文件存放的格式是:每行的宽度均小于80个字符。请勿改动主函数main。、读数据函数ReadDat。和输出।数据函数WriteDat。的内容。voidencryptChar〇ノ・标准答案・/{intI;char*pf;for(l=0;l130||*pf*ll%256<=32);else*pf=*pf*ll%256;pf++;}}}或者:voidencryptChar(){intij;char*p;for(i=0;i130)/elsexx[i]OJ=p;}}原程序如下:#include#include#include#include

32unsignedcharxx[50][80];intmaxlineニ。;/・文章的总行数・/intReadDat(void);voidWriteDat(void);voidencryptChar()()voidmain()clrscr();if(ReadDat()){printf("数据文件ENG.IN不能打开!、n\OO7");return;}encryptChar();WriteDat();system("pause");}intReadDat(void)(FILE*fp;inti=O;unsignedchar*p;if((fp=fopen("eng.in"/',r"))==NULL)return1;while(fgets(xx[i]/80/fp)!=NULL){p=strchr(xx[i];

33');if(P)*P=O;i++;|maxline=i;fclose(fp);return0;}voidWriteDat(void)(FILE*fp;inti;fp二fopen("psl.datヴw“);for(i=0;i

34",xx[i]);fprintf(fp,"%s

35,xx[i]);)fclose(fp);

36}9:函数ReadDat()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中;请编制函数SortCharD(),其函数的功能是:以行为单位对字符按从大到小的顺序进行排序,排序后的结果仍按行重新存入字符串数组xx中。最后main()函数调用函数WriteDat。把结果xx输出到文件OUT2.DAT中。例:原文:dAe,BfC.CCbbAA结果:fedCBA.,bbCCAA原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。注意:部分源程序存放在PROG1.C中。请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat。的内容。类型:字符串(単词)的倒置和删除。voidSortCharD(void)/・标准答案・/{intl,j,k,strl;charch;for(l=0;l#include#includecharxx[50][80];intmaxline=0;/・文章的总行数・/intReadDat(void);voidWriteDat(void);voidSortCharD(void){intLj,k,strl;charch;for(l=0;l

37clrscr();if(ReadDat()){printf("数据文件IN.DAT不能打开!'n\007");return;}SortCharD();WriteDat();system("pause");intReadDat(void)(FILE*fp;inti=0;char*p;if((fp=fopenC'IN.DAT","r"))==NULL)return1;while(fgets(xx[i],80,fp)!=NULL){p=strchr(xx[i],*

38');if(P)*P=O;i++;}maxline=i;fclose(fp);return0;}voidWriteDat(void)(FILE*fp;inti;clrscr();fp=fopen("OUT2.DAT","w1');for(i=0;i

39”,xx[i]);fprintf(fp,M%s

40",xx[i]);}fclose(fp);}10:请编制函数ConvertCharAO,其函数的功能是:以行为单位把字符串中的所有小写字母改写成该字母的下ー个字母,如果是字母z,则改写成字母a,大写字母和其它字符保持不变。把」处理的字符串仍按行重新存入字符串数组xx中。。最后main()函数调用函数WriteDat。把结果xx输出到文件OUT3.DAT中。例:原文:Adb.Bcdzaabck.LLhj结果:Aec.Bdeabbcdl.LLik

41原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。注意:部分源程序存放在PROG1.C中。请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat。的内容。类型:字符串(单词)的倒置和删除。voidConvertCharA(void)/・标准答案・/{intl,j,str;for(l=0;l='a,&&xx[l]O]<='y')xx[l][j]+=l;)}原程序如下:#include#include#includecharxx[50][80];intmaxline=0;/*文章的总行数・/intReadDat(void);voidWriteDat(void);voidConvertCharA(void)(}voidmain(){clrscr();if(ReadDat()){printf("数据文件IN.DAT不能打开!'n\007");return;}ConvertCharA();WriteDat();system("pause");}intReadDat(void){FILE*fp;inti=0;char*p;if<(fp=fopenC'IN.DAT","r"))==NULL)return1;while(fgets(xx[i],80,fp)!=NULL){p=strchr(xx[i],'

42');if(p)*p=0;i++;)maxline=i;fclose(fp);return0;}voidWriteDat(void)

43(FILE*fp;inti;clrscr();fp=fopen("OUT3.DAT",Hw");for(i=0;i

44",xx[i]);}fclose(fp);|11:下列程序的功能是:把s字符串中的所有字母改写成该字母的下一个字符,字母z改写成字母a。要求大写字母仍为大写字母,小写字母仍为小写字母,其他字符不做改变。请编写函数chg(char*s)实现程序的要求,最后调用函数readwriteDat。把结果输出到文件〇ut.dat中。例如:s字符串中原有的内容为:Mn.l23Zxy,则调用该函数后,结果为No.l23Ayz。注意:部分源程序已给出。请勿改动主函数main。和输出数据函数readwriteDat。的内容。voidchg(char*s)/・标准答案・/{while(*s)if(*s=='z'||*s=='Z,){*s-=25;s++;}elseif(*s>='a'&&*s<=V){*s+=l;s++;}elseif(*s>=,A'&&*s<="Y'){*s+=l;s++;}elses++;)或者:voidchg(char*s){inti,k;k=strlen(s);for(i=0;i#include#include#include#defineN81voidreadwriteDAT();

45voidchg(char*s)()main()chara[N];clrscr();printf("Enterastring:");gets(a);printf("Theoriginalstringis:ツ;puts(a);chg(a);printf("Thestringaftermodified:puts(a);readwriteDAT();system("pause");}voidreadwriteDAT()(inti;chara[N];FILE*rf,*wf;rf=fopen("in.dat,,/nr");wf=fopen("out.dat","w");for(i=0;i<10;i++){fscanf(rf,"%s",a);chg(a);fprintf(wf,"%s

46",a);}fclose(rf);fclose(wf);}12:已知在文件IN.DAT中存有!00个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称me(字符型!0位),单价dj(整型),数量si(整型),金额je(长整型)四部分组成。其中:金额=单价・数量计算得出。函数ReadDat()是读取这100个销售记录并存入结构数组sell中。请编制函数SortDatO,其功能要求:按产品名称从小到大进行排列,若产品名称相同,则按金额从小到大进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件〇UT5.DAT中。注意:部分源程序存放在PR0G1.C中。请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat。的内容。voidSortDat()/・标准答案・/{intl,j;PROxy;for(l=0;l<99;l++)for(j=l+l;j<100;j++)if(strcmp(sell[l].dm,sell[j].dm)

47{xy=sell[l];sell[l]=sell[j];sell[j]=xy;}原程序如下:#include#include#include#include#include#defineMAX100typedefstruct{chardm[5];/・产品代码・/char产品名称・/intdj;/・单价ッintsi;/*数量ッlongje;/・金额・/}PRO;PROsell[MAX];voidReadDat();voidWriteDat();voidSortDat()(}voidmain(){memset(sell,0,sizeof(sell));ReadDat();SortDat();WriteDat();}voidReadDat(){FILE*fp;charstr[80]zch[ll];inti;fp=fopen(,,IN.DAT";,rM);for(i=0;i<100;i++){fgets(strz80Jp);memcpy(sell[i].dmzsti;4);memcpy(sell[i].mczstr+4z10);memcpy(chzstr+14z4);ch[4]=0;sell[i].dj=atoi(ch);memcpy(chzstr+18z5);ch[5]=0;sell[i].sl=atoi(ch);sell[i].je=(long)sell[i].dj*sell[i].sl;}fclose(fp);}voidWriteDat(void){FILE*fp;inti;fp=fopen{"OUT5.DAT","w");for(i=0;i<100;i++){fprintf(fp,"%s%s%4d%5d%101d

48",sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je);}fclose(fp);}13:已知在文件IN.DAT中存有!00个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称me(字符型10位),单价dj(整型),数量si(整型),金额je(长整型)四部分组成。其中:金额=单价・数量计算得出。函数ReadDat()是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按产品代码从小到大进行排列,若产品代码相同,则按金额从大到小进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat。把结果输出到文件OUT6.DAT中。注意:部分源程序存放在PR0G1.C中。请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。voidSortDat()/・标准答案・/{intl,j;PROxy;for(l=0;l<99;l++)for(j=l+l;j<100;j++)if(strcmp(sell[l].mc,sell[j].mc)>O){xy=sell[l];sell[l]=sell[j];sell[j]=xy;}elseif(strcmp(sell[l].mc/sell[j].mc)==O)if(sell[l].je#include

49#include#include#include#defineMAX100typedefstruct{chardm[5];/・产品代码・/char/・产品名称37intdj;/*单价*/intsi;/・数量・/longje;/・金额ッ}PRO;PROsell[MAX];voidReadDat();voidWriteDat();voidSortDat())voidmain(){memset(sell/0/sizeof(sell));ReadDat();SortDat();WriteDat();}voidReadDat(){FILE*fp;charstr[80],ch[ll];inti;fp=fopen("IN.DAT","r");for(i=0;i<100;i++){fgets(str,80zfp);memcpy(sell[i].dm/sti;4);memcpy(sell[i].mc,str+4,10);memcpy(ch,str+14,4);ch[4]=0;sell[i].dj=atoi(ch);memcpy(ch,str+18,5);ch[5]=O;sell[i].sl=atoi(ch);sell[i].je=(long)sell[i].dj*sell[i].sl;}fclose(fp);}voidWriteDat(void){FILE*fp;inti;fp=fopen("OUT6.DAT","w");for(i=0;i<100;i++){fprintf(fp;'%s%s%4d%5d%101d

50",sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je);}fclose(fp);}

5114;一知数据文件IN.DAT中存有200个四位数,并己调用读函数readDat。把这些数存入数组a中,请考生编制ー函数jsVal(),其功能是:依次从数组a中取出一个四位数,如果该数连续大于该四位数以后的5个数且该数是奇数,则统计出满足此条件的个数ent,并把这些四位数按从小到大的顺序存入数组b中。并要计算满足上述条件的四位数的个数ento最后main()函数调用写函数writeDat()把结果ent以及数组b中符合条件的四位数输出到OUT.DAT文件中。注意:部分源程序存在文件PR0G1.C文件中。程序中已定义数组:a[200],b[200],已定义变量:ent请勿改动数据文件IN.DAT中的任何数据、主函数main。、读函数readDat()和写函数writeDat()的内容。voidjsVal()/・标准答案・/{intl,j,flag=O;intk;for(l=0;laUDflag=l;else{flag=O;break;}if(a[l]%2==0)flag=O;}if(flag==l){b[cnt]=a[l];cnt++;}}for(l=0;lb[j]){k=b[l];b[l]=bU];bU]=k;}}原程序如下:#include#defineMAX200inta[MAX],b[MAX]zent=0;voidjsVal()(}voidreadDat(){inti;FILE*fp;fp=fopenC'in.dat",Hr");for(i=0;i

52”,ent);for(i=0;i

53fprintf(fp,"%d

54",ent);for(i=0;i

55”,b[i]);fclose(fp);}15:一知数据文件IN.DAT中存有200个四位数,并己调用读函数readDat()把这些数存入数组a中,请考生编制ー函数jsVal(),其功能是:若一个四位数的千位数字上的值小于等于百位数字上的值,百位数字上的值小于等于十位数字上的值,十位数字上的值小于等于个位数字上的值,并且此四位数是偶数,则统计出满足此条件的个数ent,并把这些四位数按从大到小的顺序存入数组b中。最后main。函数调用写函数writeDat()把结果ent以及数组b中符合条件的四位数输出到OUT.DAT文件中。注意:部分源程序存在文件PROG1.C文件中。程序中已定义数组:a[200],b[200],已定义变量:ent请勿改动主函数main。、读函数readDat()和写函数writeDat()的内容。voidjsVal()/・标准答案・/{intl,j;intal,a2,a3,a4,k;for(l=0;lb[j]){k=b[l];b[l]=b[j];b[j]=k;}}原程序如下:#include#defineMAX200inta[MAX],b[MAX]zent=0;voidjsVal()(}voidreadDat(){inti;FILE*fp;fp=fopenC'in.dat",Hr");for(i=0;i

56”,ent);for(i=0;i

57");writeDat();system("pause");|

58writeDat(){FILE*fp;inti;fp=fopenCout.dat","w");fprintf(fp,"%d

59",ent);for(i=0;i

60”,b[i]);fclose(fp);}16:函数ReadDat()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中,请编制函数StrChaHR(),其函数的功能是:以行为单位把字符串中所有字符的ASCI1值右移4位,然后把右移后的字符ASCII值再加上原字符的ASCII值,得到新的字符仍存入原字符串对应的位置上。最后把已处理的字符串仍按行市新存入字符串数组xx中,最后调用函数writeDat。把结果xx输出到文件OUT8.DAT中。原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。注意:部分源程序已给出。请勿改动主函数main。、读数据函数ReadDat。和输出数据函数writeDat。的内容。voidStrCharJR(void)/・标准答案ッ{intl,j,strl;for(l=0;linclude#includecharxx[50][80];intmaxline=0;/・文章的总行数♦/intReadDat(void);voidWriteDat(void);voidStrCharJR(void)(}voidmain(){clrscr();if(ReadDat()){printf(“数据文件IN.DAT不能打开l

61\007”);return;

62}StrCharJR();WriteDat();}intReadDat(void){FILE*fp;inti=0;char*p;if((fp=fopen("IN.DAT","r'*))==NULL)return1;while(fgets(xx[i],80,fp)!=NULL){p=strchr(xx[i],'

63');if(P)*P=O;i++;}maxline=i;fclose(fp);return0;)voidWriteDat(void){FILE*fp;inti;clrscr();fp=fopen("OUT8.DAT","w");for(i=0;i

64",xx[i]);fprintf(fp,"%s

65",xx[i]);}fclose(fp);}17I函数READDAT。实现从文件IN.DAT中读取一篇英文文章存入到字符串数组XX中;请编制函数CHA(),其函数功能是:以行为单位把字符串中的第一个字符的ASCII值加第二个字符的ASCII值,得到第一个亲朋字符,第二个字符的ASCII值加第三个字符的ASCII值,得到第二个新字符,依此类推一直处理到最后第二个字符,最后一个字符的ASCI!值加原第一个字符的ASCII值,得到最后ー个新的字符,得到的新字符分别存放在原字符串对应的位置匕最后把已处理的字符串逆转后按行重新存入字符串数组XX中,最后调用函数WRITEDAT()把结果XX输出到文件。UT9.DAT中.原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格.注意:部分源程序已给出。请勿改动主函数main。、读数据函数ReadDat。和输出数据函数writeDat。的内容。voidChA(void)/・标准答案・/{intl,j,k,str;charch;for(l=0;l

66xx[l][str-l]+=ch;for(j=0/k=str-l;j#includeincludecharxx[50][80];intmaxline=0;/・文章的总行数・/intReadDat(void);voidWriteDat(void);voidChA(void)(}voidmain(){clrscr();if(ReadDat()){printf("数据文件IN.DAT不能打开!'n\00ア・);return;|ChA();WriteDat();|intReadDat(void)(FILE*fp;inti=0;char*p;if((fp=fopenC'IN.DAV,"r"))==NULL)return1;

67while(fgets(xx[i],80,fp)!=NULL){p=strchr(xx[i],'

68');if(p)*p=0;i++;}maxline=i;fclose(fp);return0;}voidWriteDat(void)(FILE*fp;inti;clrscr();fp=fopen("〇UT9.DATソ,w");for(i=0;i

69,xx[i]);fprintf(fp,"%s

70",xx[i]);}fclose(fp);18:函数ReadDat()实现从文件ENG.IN中读取・篇英文文章,存入到字符串数组xx中;请编制函数encryptChar。,按给定的替代关系对数组xx中的所有字符进行替代,仍存入数组xx的对应的位置上,最后调用函数WriteDat()把结果xx输出到文件PS1O.DAT中。替代关系:f(p)=p*llmod256(p是数组中某ー个字符的ASCI!值,f(p)是计算后新字符的ASCI!值),如果原字符的ASCII值是偶数或计算后f(p)值小于等于32,则该字符不变,否则将f(p)所对应的字符进行替代。注意:部分源程序已给出。原始数据文件存放的格式是:每行的宽度均小于80个字符。请勿改动主函数main。、读数据函数ReadDat()和输出数据函数WriteDat。的内容。voidencryptChar()/・标准答案・/{intI;char*pf;for(l=0;l

71if(p<=32||xx[i][j]%2==0)elsexx[i][j]=p;}}原程序如下:#include#include#include#includeunsignedcharxx[50][80];intmaxline=0;/・文章的总行数・/intReadDat(void);voidWriteDat(void);voidencryptChar()voidmain()|clrscr();if(ReadDat()){printf(“数据文件ENG.IN不能打开!'n\007”);return;}encryptChar();WriteDat();system("pausen);)intReadDat(void)(FILE*fp;inti=O;unsignedchar*p;if((fp=fopen("eng.in"7'r"))==NULL)return1;while(fgets(xx[i],80,fp)!=NULL){p=strchr(xx[i]/

72l);if(p)*p=O;i++;}maxline=i;fclose(fp);return0;|voidWriteDat(void)(FILE*fp;inti;fp=fopen("psl0.dat";'w");for(i=0;i

73“,xx[i]);

74fprintf(fp,"%s

75”,xx[i]);}fclose(fp);|19:编写ー个函数findstr(),该函数统计ー个长度为2的子字符串在另ー个字符串中出现的次数。例如:假定输入的字符串为”asdasasdfgasdaszx67asdmkloツ子字符串为”asッ函数返回值为60函数readwriteDat。的功能是实现从文件in.dat中读取两个字符穿4,并调用函数findstr。,最后把结果输出到文件out.dat中。注意:部分源程序已给出。请勿改动主函数main。和函数ReadWrite。的内容。intfindStr(char*str,char*substr){intn;char*p,*r;n=0;while(*str){P=str;r=substr;while(*r)if(*r==*p){r++;p++;}elsebreak;if(*r=='\O')n++;str++;}returnn;)原程序如下:#include//include#include#defineN81intfindStr(char*str,char*substr){intn;char*p,*r;n=0;while(*str){P=str;r=substr;while(*r)if(*r==*p){r++;p++;}elsebreak;if(*r=='\O')n++;str++;}

76returnn;)main()(charstr[81]?substr[3];intn;clrscr();printf("Enterastring:");gets(str);printf("Enterasubstring:");gets(substr);puts(str);puts(substr);n=findStr(str,substr);printf("n二%d

77,n);ReadWrite();system("pauseH);)ReadWrite(){charstr[81],substr[3],ch;intnJen,i=O;FILE*rt*wf;rf=fopen("in.dat"/"r");wf=fopenC'out.dat","w");while(i<5){fgets(str,80,rf);fgets(substr,10,rf);len=strlen(substr)-l;ch=substr[len];if(ch=='

78'||ch==Oxla)substr[len]=O;n=findStr(stcsubstr);fprintf(wf,"%d

79ツn);i++;}fclose(rf);fclose(wf);}20:编写函数jsvalue,它的功能是:求Fibonacci数列中大于t的最小的ー个数,结果由函数返回。其中Fibonacci数列F(n)的定义为:F(O)=O,F(1)=1F(n)=F(n-l)+F(n-2)最后调用函数writeDat()读取10个数据t,分别得出结果且把结果输出到文件out.dat中。例如:当t=1000时,函数值为:1597。注意:部分源程序已给出。请勿改动主函数main。和写函数writeDat()的内容。intjsValue(intt)/・标准答案・/{intfl=0,f2=l,fn;fn=fl+f2;

80while(fn<=t){flゴ2;f2=fn;fn=fl+f2;}returnfn;原程序如下:#includeintjsvalue(intt)|}main(){intn;n=1000;printf("n=%d/f=%d

81",njsvalue(n));writeDat();}writeDat(){FILE*in/out;intしn,s;in=fopen(,,in.dat"/"r");out=fopen("out.dat"/"w");for(i=0;i<10;i++){fscanf(in,"%d",&n);s=jsvalue(n);printf("%d

82”,s);fprintf(out,"%d

83”,s);}fclose(in);fclose(out);}21:下列程序的功能是:利用发下所示的简单迭代方法求方程:cos(x)-x=0的ー个实根。xn+l=cos(xn)迭代步骤如下:⑴取XI初值为0.0:⑵XO=X1,把XI的值赋给X0:⑶X1=COS(XO),求出一个新的XI;⑷若X0-X1绝对值小0.000001,执行步骤⑸,否则执行步骤(2);⑸所求X!就是方程cos(X)-X=0的ー个实根,作为函数值返回。请编写函数countvalue()实现程序的要求,最后调用函数WRITEDAT。把结果输出到文件OUT17.DA!中。注意:部分源程序已给出。请勿改动主函数main。和输出数据函数writeDAT。的内容。floatcountValue。/・标准答案・/{floatx0,xl=0.0;while(l){x0=xl;xl=cos(xO);if(fabs(x0-xl)=0.000001);returnxl;}原程序如下:#include#include#includefloatcountvalue()()main(){clrscr();printf(“实根二%f

84,countvalue());

85printf("%f

86,'/cos(countvalue())-countvalue());writeDat();}writeDat(){FILE*wf;wf=fopen("OUT17.DAr;(wH);fprintf(wf,"%f

87",countvalue());fclose(wf);}22I请编写函数countvalue。,它的功能是:求n以内(不包括n)同时能被3和7整数的所有自然数之和的平方根s,并作为函数值返回,最后结果s输出到文件out.dat中。例如若n为1000时,函数值应为:s=153.909064o注意:部分源程序已给出。请勿改动主函数main。和输入输出数据函数progreadwrite。的内容。doublecountValue(intn)/・标准答案・/{doublexy=0.0;intI;for(l=l;l#include#includedoublecountvalue(intn)/・标准答案・/{doublexy=0.0;intI;for(l=l;l

88",countvalue(1000));progReadWrite();}progReadWrite(){FILE*fp,*wf;inti,n;floats;

89fp=fopen("in.dat";'r");if(fp==NULL){printf(“数据文件in.dat不存在!”);return;}wf=fopen(,,out.dat";,w");for(i=0;i<10;i++){fscanf(fp/'%d

90",&n);s=countvalue(n);fprintf(wf,"%f

91,s);}fclose(fp);fclose(wf);system("pausen);}23:已知在文件in.dat中存有N个(个数<200)四位数字的正整数,函数readdat()读取这N个正整数并存入数组XX中。请编制函数calvalue(),其功能要求:1、求出这N个实数的平均值aver;2、分别求出这N个实数的整数部分之和sumint以及小数部分之和sumdec,最后调用函数writedat()把所求的结果输出到文件out.dat中。注意:部分源程序已给出。请勿改动主函数main。、读数据函数readdat()和输出数据函数writedat。的内容。voidCalValue(void)/・标准答案・/{intI;doublex,sumニ〇;for(l=0;l#include#defineMAXNUM200floatxx[MAXNUM];intN=0;/♦文件IN.DAT中共有多少个实数ッdoubleaver=0.0;/・平均值・/doublesumint=0.0;/*整数部分之和*/doublesumdec=0.0;/・小数部分之和*/intReadDat(void);voidWriteDat(void);voidCalvalue(void)voidmain(){inti;

92clrscr();for(i=0;i

93",aver);printf("整数部分之和=%.2lf

94",sumint);printf("小数部分之和=%.2lf

95",sumdec);WriteDat();system("pause");}intReadDat(void)FILE*fp;inti=0;if((fp=fopenCin.dat","r"))==NULL)return1;while(!feof(fp)){fscanf(fp,"%d,,&xx[i++]);}fclose(fp);return0;}voidWriteDat(void){FILE*fp;fp=fopen("OUT.DAT"z"w");fprintf(fp,,,%.2lf

96%.2lf

97%.2lf

98',/aver,sumint,sumdec);fclose(fp);)24:在三位整数(100至999)中寻找符合条件的整数并依次从小到大存入数组中;它既是完全平方数,又是两位数字相同,例如144、676等。请编制函数实现此功能,满足该条件的整数的个数通过所编制的函数返回。最后调用函数writeDat()把结果输出到文件out.dat中。注意:部分源程序已给出。请勿改动主函数main()和写函数writeDat。的内容。jsValue(inta[10][9])/・标准答案ッ{intl,j,k=O;inthun,ten,data;for(l=100;l<=999;l++){j=10;while(j*j<=l)

99{if(l==j*j){hun=l/100;data=l-hun*100;ten=data/10;data=data-ten*10;if(hun==ten||hun==data||ten==data){bb[k]=l;k++;}}j++;})returnk;}原程序如下:#includeintjsvalue(intbb[])main(){intb[20],num;num=jsvalue(b);writeDat(num,b);}writeDat(intnumjntb[]){FILE*out;inti;out=fopen(Hout.dat',,"w");fprintf(out;'%d

100ツnum);for(i=0;i

101”,b[i]);fclose(out);system("pause");}25:下列程序的功能是:寻找并输出11至999之间的数m,它满足m,m2和m3均为回文数。所谓回文数是指其各位数字左右对称的整数,例如121,676,94249等。满足上述条件的数如m=ll,m2=121,m3=1331皆为回文数。请编制函数intsvalue(longm)实现此功能,如果是回文数,则函数返回1,反之则返回〇〇最后把结果输出到文件out.dat中。注意:部分源程序已给出。请勿改动主函数main。的内容。intjsValue(longn)/・标准答案・/{intl,strl,half;charxy[20];ltoa(n,xy,10);strl=strlen(xy);half=strl/2;for(l=0;l=half)return1;elsereturn0;}或者:intjsvalue(longn)

102{inti,aa[10],j=0,b=l;while(n){aa[j++]=n%10;n=n/10;}for(i=0;iintjsvalue(longn)|}mainf){longm;FILE*out;out=fopen("out.dat","w");for(m=ll;m<1000;m++){if(jsvalue(m)&&jsvalue(m*m)&&jsvalue(m*m*m)){printf("m=%4ld,m*m=%6ld,m*m*m=%8ld

103",m,m*m,m*m*m);fprintf(out,"m=%4ld,m*m=%6ld,m*m*m=%8ld

104",m,m*m,m*m*m);})fclose(out);system("pause");|26:已知在文件in.dat中存有若干个(个数<200)四位数字的正整数,函数readdat()读取这若干个正整数并存入数组xx中。请编制函数calvalue(),其功能要求:1、求出这文件中共有多少个正整数totnum:2、求这些数右移1位后,产生的新数是偶数的数的个数totcnt,以及满足此条件的这些数(右移前的值)的算术平均值totpjz,最后调用函数writedat()把所求的结果输出到文件out.dat中。注意:部分源程序已给出。请勿改动主函数main()、读数据函数readdat()和输出数据函数writedat()的内容。voidCalValue(void)/・标准答案・/{intl,data;for(l=0;l0)totNum++;data=xx[l]»l;if(data%2==0){totCnt++;totPjz+=xx[l];}|totPjz/=totCnt;|或者:voidCalvalue(void){inti,k,a,b,c,d;

105for(i=0;i#include#defineMAXNUM200intxxfMAXNUM];inttotNum=0;/*文件IN.DAT中共有多少个正整数ッinttotCnt=0;/・符合条件的正整数的个数・/doubletotPjz=0.0;/*平均值+/intReadDat(void);voidWriteDat(void);voidCalvalue(void)(}voidmain()(inti;clrscr();for(i=0;i

106");return;}Calvalue();printf("文件IN.DAT中共有正整数二%d个、n",totNum);printf("符合条件的正整数的个数二%d个、n”,totCnt);printf(“平均值二%.2lf

107ツtotPjz);WriteDat();system("pauseH);}intReadDat(void)(FILE*fp;inti=0;if<(fp=fopen("in.dat","r"))ニニNULL)return1;while(!feof(fp)){fscanf(fp,"%d,,&xx[i++]);}fclose(fp);return0;}

108voidWriteDat(void)FILE*fp;fp=fopenC'OUT.DAT","w");fprintf(fp,"%d

109%d

110%.2lf

111,,/totNum,totCnt,totPjz);fclose(fp);}27:已知数据文件IN.DAT中存有300个四位数,并己调用读函数ReadDat()把这些数存入数组a中,请编制ー函数jsvalue(),其功能是:求出千位数上的数减百位数减十位数上的数减个位数上的数大于零的个数ent,再求出所有满足此条件的四位数平均值pjzl,以及不满足此条件的四位数平均值pjz2,最后调用写函数writeDat()把结果输出到OUT.DAT文件。例如:9123,9-123>0,则该数满足条件计算平均值pjzl,且个数cnt=cnt+lo9812,9-8-l-2<0,则该数不满足条件计算平均值pjz2.注意:部分源程序已给出。程序中已定义数组:a[300],已定义变量:ent请勿改动主函数main。、读函数ReadDat。和写函数writeDat()的内容。voidjsValue〇/・标准答案・/{intしthou,hun,ten,data,j;for(l=0;l<300;l++){thou=a[l]/1000;hun=a[l]%1000/100;ten=a[l]%100/10;data=a[l]%10;if(thou-hun-ten-data>0){b[cnt]=a[l];cnt++;j}for(l=0;lb[j]){data=b[l];b[l]=b[j];b[j]=data;})原程序如下:#includeinta[300],b[300],cnt=0;doublepjzl=0.0,pjz2=0.0;jsValue()()main(){inti;readDat();jsValue();writeDat();for(i=O;i

112",i,b[i]);system("pauseH);|readDat(){FILE*fp;inti;fp=fopen(,,in.dat","r");for(i=O;i<3OO;i++)fscanf(fp,"%d,”,&a[i]);fclose(fp);}writeDat(){FILE*fp;inti;fp=fopen("out.dat"/"w");fprintf(fp,"%d

113ツent);for(i=O;i

114",b[i]);fclose(fp);)28:已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制ー函数jsVal(),其功能是:把千位数字和十位数字重新组成一个新的十位数ab(新十位数的十位数字是原四位数的千位数字,新十位数的个位数字是原四位数的十位

115数字),以及把个位数字和百位数字组成另ー个新的十位数cd(新十位数的十位数字是原四位数的个位数字,新十位数的个位数字是原四位数的百位数字),如果新组成的两个十位数ab-cd>=0且ab-cd<=10且两个数均是奇数,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组b中,并要计算满足上述条件的四位数的个数ento最后main。函数调用写函数writeDat()把结果ent以及数组b中符合条件的四位数输出到OUT.DAT文件中。注意:部分源程序存在文件PROG1.C文件中。程序中已定义数组:a[200],b[200],已定义变量:ent请勿改动数据文件IN.DAT中的任何数据、主函数main。、读函数readDat()和写函数writeDat()的内容voidjsVal()/・标准答案・/{intI,thou,hun,ten,data,j;intab,cd;for(l=0;l<200;l++){thou=a[l]/1000;hun=a[l]%1000/100;ten=a[l]%100/10;data=a[l]%10;ab=10*thou+ten;cd=10*data+hun;if((ab-cd)>=0&&(ab-cd)<=10&&ab%2==l&&cd%2==l&&abi=0&&cdi=0){b[cnt]=a[l];cnt++;}}for(l=0;l#defineMAX200inta[MAX]zb[MAX],ent=0;voidjsVal(){}voidreadDat(){inti;FILE*fp;fp=fopenf'in.dat","r");for(i=0;i

116”,ent);for(i=0;i

117printf("

118");writeDat();system("pause");}writeDat(){FILE*fp;inti;fp=fopenC'out.dat","w");fprintf(fp,"%d

119”,ent);for(i=0;i

120",b[i]);fclose(fp);}29:已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制ー函数jsVal(),其功能是:把千位数字和十位数字重新组成一个新的十位数ab(新Hi数的ト位数字是原四位数的千位数字,新十位数的个位数字是原四位数的十位数字),以及把个位数字和百位数字组成另ー个新的十位数cd(新十位数的十位数字是原四位数的个位数字,新十位数的个位数字是原四位数的百位数字),如果新组成的两个十位数ab-cd>=10且ab-cd<=20且两个数均是偶数,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组b中,并要计算满足上述条件的四位数的个数ent。最后main。函数调用写函数writeDat()把结果ent以及数组b中符合条件的四位数输出到OUT.DAT文件中。注意:部分源程序存在文件PROG1.C文件中。程序中已定义数组:a[200],b[200],已定义变量:ent请勿改动数据文件IN.DAT中的任何数据、主函数main。、读函数readDat。和写函数writeDat()的内容。voidjsVal〇/・标准答案・/{intI,thou,hun,ten,data』;intab,cd;for(l=0;l<200;l++){thou=a[l]/1000;hun=a[l]%1000/100;ten=a[l]%100/10;data=a[l]%10;ab=10*thou+ten;cd=10*data+hun;if((ab-cd)>=O&&(ab-cd)<=lO&&ab%2==l&&cd%2==l&&ab!=O&&cd!=O){b[cnt]=a[l];cnt++;}}for(l=0;l#defineMAX200inta[MAX],b[MAX],ent=0;voidjsVal()(|voidreadDat(){inti;FILE*fp;fp=fopen("in.dat","r");for(i=0;i

121}voidmain(){inti;readDat();jsVal();printf("满足条件的数二%d

122“,ent);for(i=0;i

123");writeDat();system("pause");writeDat(){FILE*fp;inti;fp=fopenC^ut.dat","w");fprintf(fp,"%d

124",ent);for(i=0;i

125”,b[i]);fclose(fp);}30:已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制ー函数jsVal(),其功能是:依次从数组a中取出一个四位数,如果该数连续小于该四位数以后的5个数且该数是偶数,则统计出满足此条件的个数ent,并把这些四位数按从小到大的顺序存入数组b中。并要计算满足上述条件的四位数的个数ent。最后main()函数调用写函数writeDat()把结果ent以及数组b中符合条件的四位数输出到OUT.DAT文件中。注意:部分源程序存在文件PROG1.C文件中。程序中已定义数组:a[200],b[200],已定义变量:ent请勿改动数据文件IN.DAT中的任何数据、主函数main。、读函数readDat。和写函数writeDat()的内容。voidjsVal()/・标准答案・/{intl,j,flag=O;for(l=0;lbU]){flag=b[l];b[l]=b[j];b[j]=flag;}}原程序如下:#include#defineMAX200inta[MAX],b[MAX],ent=0;voidjsVal()voidreadDat(){inti;FILE*fp;fp=fopenfin.dat","r");for(i=0;i

126}voidmain(){inti;readDat();jsVal{);printf("满足条件的数=%d

127",ent);for(i=0;i

128");writeDat();system("pause");}writeDat(){FILE*fp;inti;fp=fopenf'out.dat","w");fprintf(fp,"%d

129",ent);for(i=0;i

130",b[i]);fclose(fp);}31:已知在文件IN.DAT中存有!00个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称me(字符型10位),单价dj(整型),数量si(整型),金额je(长整型)四部分组成。其中:金额=单价・数量计算得出。函数ReadDat。是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按产品代码从大到小进行排列,若产品代码相同,贝リ按金额从大到小进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT6.DAT中。注意:部分源程序存放在PR0G1.C中。请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。voidSortDat()/・标准答案・/{intl,j;PROxy;for(l=0;l<99;l++)for(j=l+l;j<100;j++)if(sell[l].je#include#include

131#include#include#defineMAX100typedefstruct{chardm[5];/・产品代码ッchar/・产品名称ッintdj;/*单价*/intsi;/・数量・/longje;/・金额・/}PRO;PROsell[MAX];voidReadDat();voidWriteDat();voidSortDat(){)voidmain(){memset(sell/0/sizeof(sell));ReadDat();SortDat();WriteDat();}voidReadDat(){FILE*fp;charstr[80]zch[ll];inti;fp=fopen("IN.DAT"z"r");for(i=0;i<100;i++){fgets(str,80zfp);memcpy(sell[i].dmzsti;4);memcpy(sell[i].mcfstr+4z10);memcpy(chzstr+14z4);ch[4]=0;sell[i].dj=atoi(ch);memcpy(chzstr+18z5);ch[5]=0;sell[i].sl=atoi(ch);sell[i].je=(long)sell[i].dj*sell[i].sl;}fclose(fp);}voidWriteDat(void){FILE*fp;inti;fp=fopen("OUT4.DATHz"w");for(i=0;i<100;i++){fprintf(fp;'%s%s%4d%5d%101d

132",se叩].dm,semLmc,sell[i].dj,sell[i].sl,sell[i].je);}fclose(fp);}32:」知在文件IN.DAT中存有:LOO个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称me(字符型10位),单价dj(整型),数量si(整型),金额je(长整型)四部分组成。其中:金额=单价・数量计算得出。函数ReadDat()是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按产品名称从大到小进行排列,若产品名称相同,则按金额从小到大进行排列.最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT7.DAT中。注意:部分源程序存放在PROG1.C中。请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。voidSortDat()/・标准答案・/{intl,j;PROxy;for(l=0;lsell[j].je){xy=sell[l];sell[l]=sell[j];sell[j]=xy;}}原程序如下:#include#include#include#include#include#defineMAX100typedefstruct{chardm[5];/・产品代码・/charmeロ1];/・产品名称ッintdj;/・单价・/intsi;/・数量・/longje;/・金额ッ}PRO;PROsell[MAX];

133voidReadDat();voidWriteDat();voidSortDat(){}voidmain(){memset(sell/0/sizeof(sell));ReadDat();SortDat();WriteDat();}voidReadDat(){FILE*fp;charstr[80]zch[ll];inti;fp=fopen(HIN.DAT";'r");for(i=0;i<100;i++){fgets(strz80zfp);memcpy(sell[i].dmzsti;4);memcpy(sell[i].mczstr+4z10);memcpy(chzstr+14z4);ch[4]=0;sell[i].dj=atoi(ch);memcpy(chzstr+18z5);ch[5]=0;sell[i].sl=atoi(ch);sell[i].je=(long)sell[i].dj*sell[i].sl;}fclose(fp);}voidWriteDat(void){FILE*fp;inti;fp=fopen("OUT7.DArz"w");for(i=0;i<100;i++){fprintf(fpzH%s%s%4d%5d%101d

134"zsell[i].dmzsell[i].mczsell[i].djzsell[i].slzsell[i].je);}fclose(fp);}33:请编制函数ReadDat()实现从文件IN.DAT中读取!000个卜进制整数到数组xx中;请编制函数Compute。分别计算出xx中奇数的个数odd,奇数的平均值avel,偶数的平均值ave2以及所有奇数的方差totfc的值,最后调用函数WriteDat()把结果输出到OUT.DAT文件中。计算方差的公式如下:totfc=l/NL(xx[i]-avel)2设N为奇数的个数,xx[i)为奇数,avel为奇数的平均值。原始数据文件存放的格式是:每行存放!0个数,并用逗号隔开。(每个数均大于0且小于等j•.2000)注意:部分源程序已给出。请勿改动主函数main。和输出数据函数writeDat。的内容。intReadDat(void)/・标准答案・/{FILE*fp;intIJ;if((fp=fopen(""IN.DAr,";,"r",,))==NULL)return1;for(l=0;l<100;l++){for(j=0;j<10;j++)fscanf(fpr&xx[l*10+j]);fscanfffp,nMM);if(feof(fp))break;}fclose(fp);return0;}

135voidCompute(void){intI,yy[MAX];for(l=0;l<1000;l++)if(xx[l]%2){odd++;avel+=xx[l];}else{even++;ave2+=xx[l];yy[even-l]=xx[l];}avel/=odd;aveツニeven;for(l=0;l

136");}fclose(fp);return0;}voidCompute(void){inti;for(i=0;iinclude#include#defineMAX1000intxx[MAX],odd=0/even=0;doubleaver=0.0ztotfc=0.0;voidWriteDat(void);intReadDat(void){inti;FILE*fp;if((fp=fopen("IN.DAT",,'r"))==NULL)return1;/**/fclose(fp);return0;}

137voidCompute(void)voidmain()(inti;for(i=0;i

138OVEN=%d

139AVER=%lf

140TOTFC=%lf

141"/odd/even/aver/totfc);WriteDat();}voidWriteDat(void){FILE*fp;inti;fp=fopen("OUT.DAT","w");fprintf(fp,"%d

142%lf

143%lf

144%lf

145”,odd,even,aver,totfc);fclose(fp);|34:下列程序的功能是:选取出100以上1000以内所有个位数字与十位数字之和被10除所得余数恰是百位数字的素数(如293)。计算并输出上述这些素数的个数CNT以及这些素数值的和SUM»请编写函数COUNTvalue。实现程序要求,最后调用函数WRITEDAT。把结果CNT和SUM输出到文件OUT.DAT中,注意:部分源程序已给出。请勿改动主函数main。和函数readwriteDAT。的内容。类型:素数。voidcountvalue〇/・标准答案・/{intリ,half,hun,ten,data;for(l=101;l<1000;l++){hun=l/100;ten=l%100/10;data=l%10;if(hun==(ten+data)%10){half=l/2;for(j=2;j=half){cnt++;sum+=l;}}})或者:intSS(intm){inti,k=l;

146for(i=2;iintent,sum;voidcountvalue()(}voidmain(){ent=sum=0;countvalue();printf("素数的个数=%d

147",ent);printf("满足条件素数值的和=%d",sum);writeDAT();system("pause");}writeDAT(){FILE*fp;fp=fopenC'bclO.out*',Hw");fprintf(fp,"%d

148%d

149"/ent,sum);fclose(fp);}35:某级数的前两项A1=1,A2=1,以后各项具有如下关系:An=An-2+2An-l.下列程序的功能是:耍求依次对于整数M=100,1000和10000求出对应的n值,使其满足:Sn=M,这里Sn=Al+A2+...+An,并依次把n值存入数组单元b⑼,b[l]和b⑵中,请编制jsvalue()函数来实现此功能,最后调用函数writeDat。把数组b口中的值输出到out.dat文件中。注意:部分源程序存在文件PR0G1.C文件中。请勿改动主函数main()和写函数writeDat。的内容。voidjsvalue()/・标准答案・/{intal=l,a2=l,n=l,an;intsum0zsum;

150sum0=al+a2;while(l){an=al+a2*2;sum=sum0+an;al=a2;a2=an;n++;if(sum0<100&&sum>100)b[O]=n;if(sum0<1000&asum>1000)b[l]=n;if(sum0<10000&&sum>10000){b[2]=n;break;}sum0=sum;}}jsvalue(){intal=l,a2=l,al2,sn,k=2;sn=al+a2;while(l){al2=al+2*a2;if(sn<100&&sn+al2>=100)b[O]=k;if(sn<1000&asn+al2>=1000)b[l]=k;if(sn<10000&asn+al2>=10000){b[2]=k;break;}sn=sn+al2;al=a2;a2=al2;k++;|原程序如下:includeintb[3];voidjsvalue()(}main(){jsvalue();printf("M=100,n=%d

151M=1000,n=%d

152M=10000,n=%d

153",b[0],b[l],b[2]);writeDat();}writeDat(){FILE*fp;fp=fopen("out.dat","w");fprintf(fp,"%d

154%d

155%d

156",b[O],b[l],b[2]);fclose(fp);}36:函数ReadDat()实现从文件ENG.IN中读取ー篇英文文章,存入到字符串数组xx中;请编制函数encryptChar。,按给定的替代关系对数组xx中的所有字符进行替代,仍存入数组xx的对应的位置上,最后调用函数WriteDat()把结果xx输出到文件PS6.DAT中。替代关系:f(p)=p*llmod256(p是数组中某ー个字符的ASCI!值,f(p)是计算后新字符的ASCI!值),如果计算后f(p)值小于等于32或f(p)对应的字符是数字0至9,则该字符不变,否则将f(p)所对应的字符进行替代。注意:部分源程序已给出。原始数据文件存放的格式是:每行的宽度均小于80个字符。请勿改动主函数main。、读数据函数ReadDat()和输出数据函数WriteDat。的内容。voidencryptChar。/・标准答案・/{intI;char*pf;for(l=0;l='0'&&*pf*ll%256<='9')11*pf*ll%256<=32){pf++;continue;}

157*pf=*pf*ll%256;pf++;})}或者:voidencryptChar()(inti,j,strl;intt;for(i=0;i='0'&&t<='9'))continue;xx[i][j]=t;})}原程序如下:#include#include#include#includeunsignedcharxx[50][80];intmaxline=0;/・文章的总行数・/intReadDat(void);voidWriteDat(void);voidencryptChar()|}voidmain()(clrscr();if(ReadDat()){printf("数据文件ENG.IN不能打开!、n\00ア・);return;}encryptChar();WriteDat();system("pause");}intReadDat(void)(FILE*fp;inti=0;

158unsignedchar*p;if<(fp=fopen("eng.in";'rH))==NULL)return1;while(fgets(xx[i]/80/fp)!=NULL){p=strchr(xx[i]/

159');if(P)*P=O;i++;|maxline=i;fclose(fp);return0;}voidWriteDat(void)(FILE*fp;inti;fp=fopen("ps6.dat","w");for(i=0;i

160",xx[i]);fprintf(fp,"%s

161",xx[i]);|fclose(fp);|37Z函数ReadDat()实现从文件ENG.IN中读取・篇英文文章,存入到字符串数组xx中:请编制函数encryptChar。,按给定的替代关系对数组xx中的所有字符进行替代,仍存入数组xx的对应的位置上,最后调用函数WriteDat()把结果xx输出到文件PS6.DAT中。替代关系:f(p)=p*llmod256(p是数组中某ー个字符的ASCI!值,f(p)是计算后新字符的ASCII值),如果原字符是大写字母或计算后f(p)值小于等于32,则该字符不变,否则将f(p)所对应的字符进行替代。注意:部分源程序已给出。原始数据文件存放的格式是:每行的宽度均小于80个字符。请勿改动主函数main。、读数据函数ReadDat。和输出数据函数WriteDat。的内容。voidencryptChar〇/・标准答案・/{intI;char*pf;for(l=0;l='A'&&*pf<=,Z,)11♦pf*ll%256<=32){pf++;continue;}*pf=*pf*ll%256;pf++;}})或者:voidencryptChar(){inti,j,t;for(i=0;i

162{for(j=0;j='A,&&xx[i][j]<='Z"))continue;xx[i][j]=t;}}原程序如下:#include#include#include#includeunsignedcharxx[50][80];intmaxlineニ〇;/・文章的总行数・/intReadDat(void);voidWriteDat(void);voidencryptChar()(}voidmain()(clrscr();if(ReadDat()){printf("数据文件ENG.IN不能打开!

163\007");return;)encryptChar();WriteDat();system("pauseH);}intReadDat(void)(FILE*fp;inti=0;unsignedchar*p;if((fp=fopen("eng.in",,,r"))==NULL)return1;while(fgets(xx[i],80,fp)!:NULL){p=strchr(xx[i]/

164');if(p)*p=O;i++;}maxline=i;fclose(fp);return0;}voidWriteDat(void){FILE*fp;

165inti;fp=fopen("ps7.dat"/"w");for(i=0;i

166",xx[i]);fprintf(fp,"%s

167",xx[i]);}fclose(fp);}38:已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称me(字符型10位),单价dj(整型),数量si(整型),金额je(长整型)四部分组成。其中:金额=单价・数量计算得出。函数ReadDat()是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按产品代码从小到大进行排列,若产品代码相同,则按金额从小到大进行排列.最终排列结果仍存入结构数组sell中,最后调用函数WriteDat。把结果输出到文件〇UT9.DAT中。注意:部分源程序存放在PR0G1.C中。请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。voidSortDat()/・标准答案・/{intl,j;PROxy;for(l=0;lO){xy=sell[IJ;sell[l]=sell[j];sell[j]=xy;}elseif(strcmp(sell[l].dm,sell[j].dm)==O)if(sell[l].je>sell[j].je){xy=sell[l];sell[l]=sell[j];sell[j]=xy;}|原程序如下:#include#include#include#include#include#defineMAX100typedefstruct{chardm[5];/・产品代码・/char产品名称・/intdj;/*单价*/intsi;/・数量・/longje;/・金额ッ}PRO;PROsell[MAX];voidReadDat();voidWriteDat();

168voidSortDat()voidmain(){memsetfsellAsizeoffsell));ReadDat();SortDat();WriteDat();}voidReadDat(){FILE*fp;charstr[80]zch[ll];inti;fp=fopen("IN.DAT"/"r");for(i=0;i<100;i++){fgets(str,80,fp);memcpy(sell[i].dm/str/4);memcpy(sell[i].mc,str+4,10);memcpy(ch/str+14/4);ch[4]=0;sell[i].dj=atoi(ch);memcpy(ch/str+18/5);ch[5]=0;sell[i].sl=atoi(ch);sell[i].je=(long)sell[i].dj*sell[i].sl;}fclose(fp);}voidWriteDat(void){FILE*fp;inti;fp=fopen("OUT9.DArz"w");for(i=0;i<100;i++){fprintf(fp;'%s%s%4d%5d%101d

169"zsell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je);}fclose(fp);}39Z对10个候选人进行选举,现有一个100条记录的选票数据文件IN.DA1:其数据存放的格式是每条记录的长度均为10位,第一位表示第一个人的选中情况,第二位表示第二个人的选中情况,依此类推:内容均为字符〇和1,1表示此人被选中,。表示此人未被选中,全选或不选均为无效的选票.。给定函数ReadDat。的功能是把选票数据读入到字符串数组XX中。请编制函数CountRs()来统计每个人的选票数并把得票数依次存入yy[〇]到yy[9]中。把结果yy输出到文件OUT.DAT中。注意:部分源程序已给出。请勿改动主函数main。、读数据函数ReadDat()和输出数据函数writeDat。的内容。类型:选票问题。voidCountRs(void)/・标准答案,有问题!!!*/{intリニ。,kニ〇;char*str;for(l=0;l<10;l++)yy[i]=o;for(l=0;l<100;l++)

170{str=xx[l];j=O;while(*str)if(*str=='l'){j++;str++;}elsestr++;if(j!=0&&j!=10){str=xx[l];k=O;while(*str)if(*str++==*l*)yy[k++]+=l;elsek++;}}}或者:voidCountRs(void){inti,j,k;for(i=0;i<100;i++){k=0;for(j=0;j<10;j++)if(xx[i]0J=='l')k++;if(k==O||k==10)continue;for(j=0;j<10;j++)if(xx[i][j]=='l')yy[j]++;)}本题要求将那些全选取或不先的选票均视为无效,全选即为“1111111111”不选即为“0000000000”,只要xx[i]为上述两种情况即视为无效。本题对这两种情况的判断采用strcmpO函数,注意字符串的比较不能直接进行即不能用:xx[i]==“1111111111”的方式。*/voidcountrs(void){inti,j;for(i=0;i<100;i++){if(strcmp(xx[i],"llllllllll")==O||strcmp(xx[i],"0000000000")==0)continue;for(j=0;j<10;j++)if(xx[i]U]==,l')yyU]++;}|原程序如下:#includecharxx[100][ll];intyy[10];intReadDat(void);voidWriteDat(void);voidCountRs(void){intij,k;

171for(i=0;i<100;i++){k=0;for(j=0;j<10;j++)if(xx[i][j]=='l')k++;if(k==O||k==10)continue;for(j=0;j<10;j++)if(xx[i][j]=l)yy[j]++;})voidmain(){inti;for(i=0;i<10;i++)yy[i]=O;if(ReadDat()){printf("IN.DATcan'topen!

172\007");return;)CountRs();WriteDat();system("pauseH);}intReadDat(void){FILE*fp;inti;chartt[13];if((fp=fopen(,,in.dat"/,rH))==NULL)return1;for(i=0;i<100;i++){if(fget5(tt,13,fp)==NULL)return1;memcpy(xx[iLtt,10);xx[i][10]=0;)fclose(fp);return0;}voidWriteDat(void){FILE*fp;inti;fp二fopen(“〇UT.DArjw”);for(i=0;i<10;i++){fprintf(fp,"%d

173",yy[i]);printf(MNO.%dnotes二%d

174",i+l,yy[i]);fclose(fp);40:已知在文件in.dat中存有若干个(个数<200)四位数字的正整数,函数readdat()读取这若干个正整数并存入数组xx中。请编制函数calvalueO,其功能要求:1、求出这文件中共有多少个正整数

175totnum;2、求出这些数中的各位数字之和是偶数的数的个数totcnt,以及满足此条件的这些数的算术平均值totpjz,最后调用函数writedat()把所求的结果输出到文件out.dat中〇注意:部分源程序已给出。请勿改动主函数main。、读数据函数readdat()和输出数据函数writedat()的内容。voidCalValue(void)/・标准答案,有问题!!!*/{intI,thou,hun,ten,data;intab,sum=0;for(l=0;l0)totNum++;{thou=xx[l]/1000;hun=xx[l]%1000/100;ten=xx[l]%100/10;data=xx[l]%10;ab=thou+hun+ten+data;if(ab%2==0){totCnt++;sum=sum+xx[l];}})totPjz=sum/totCnt;)或者:voidCalvalue(void){inti,k,a,b,c,d;for(i=0;i#include

176#defineMAXNUM200intxx[MAXNUM];inttotNum=0;/・文件IN.DAT中共有多少个正整数*/inttotCnt=0;/*符合条件的正整数的个数・/doubletotPjz=0.0;/*平均值+/intReadDat(void);voidWriteDat(void);voidCalvalue(void)(}voidmain()(inti;clrscr();for(i=0;i

177,totPjz);WriteDat();system("pause");}intReadDat(void){FILE*fp;inti=0;if((fp=fopen("in.dat”Jr"))==NULL)return1;while(!feof(fp)){fscanf(fp,"%d,”,&xx[i++]);}fclose(fp);return0;}voidWriteDat(void)(FILE*fp;fp二fopen(“〇UT.DAT”,“w”);fprintf(fp,"%d

178%d

179%.2lf

180"/totNum,totCnt,totPjz);fclose(fp);41I下列程序的功能是:计算出自然数SIX和NINE,它们满足的条件是SIX+SIX+SIX=NINE+NINE的个数ent,以及满足此条件所有的SIX与NINE的和SUM。请编写函数countvalue。实现程序的要求,最后调用函数writedat()把结果ent和sum,输出到文件outl5.dat中.其中S,I,X,N,E各代表一

181个十进制数字。注意:部分源程序已给出。请勿改动主函数main。的内容。voidcountValue〇/・标准答案,有问题!!!*/{int1=100;while(l){if(3*l%2==0&&3*l〃>=1000&&3*l/2<=9999){cnt++;sum+=l+3*l/2;l++;}else1++;if(l>999||3*l/2>9999)break;}}或者:注:由于有SIX+SIX+SIX=NINE+NINE可看出SIX的3倍必须大于等于2000(右边是ー个四位数字的数可知),因此从666开始循环,再由三个数的和是个偶数(右边为ー个数的2倍可知)可循环时步长为2。再由SIX和NINE中有一个共同数字I所以得出第一个if()判断,还有NINE中有一共同数字N所以得出第二个if()判断。ッvoidcountValue(){inti;for(i=666;i<=999;i=i+2)if((i/10%10==(3*i/2)/100%10)&&((3*i/2)/1000==(3*i/2)%100/10))/・以I为准・/{cnt++;sum+=i+3*i/2;}|原程序如下:#includeintent,sum;voidcountvalue(){|voidmain(){cnt=sum=0;countvalue();printf("满足条件的个数=%d

182",ent);printf("满足条件所有的SIX与NINE的和=%d

183",sum);writeDat();system("pause");

184writeDat(){FILE*fp;fp=fopen("OUT15.DAr;'w");fprintf(fp,"%d

185%d

186"/cnt/sum);fclose(fp);}42:已知在文件IN.DAT中存有!00个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称me(字符型10位),单价dj(整型),数量si(整型),金额je(长整型)四部分组成。其中:金额=单价・数量计算得出。函数ReadDat()是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat。,其功能要求:按产品名称从大到小进行排列,若产品名称相同,则按金额从大到小进行排列.最终排列结果仍存入结构数组sell中,最后调用函数WriteDatO把结果输出到文件OUT8.DAT中。注意:部分源程序存放在PR0G1.C中。请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat。的内容。voidSortDat〇/・标准答案・/{intl,j;PROxy;for(l=0;l<99;l++)for(j=l+l;j<100;j++)if(strcmp(sell[l].mc,sell[j].mc)#include#include#include#include#defineMAX100typedefstruct{chardm⑸;/・产品代码ッcharmc[ll];/・产品名称37intdj;/*单价*/intsi;/・数量・/longje;/・金额ッ}PRO;PROsell[MAX];voidReadDat();voidWriteDatO;voidSortDat())voidmain(){memset(sell/0/sizeof(sell));ReadDat();SortDat();WriteDat();}voidReadDat(){FILE*fp;

187charstr[80],ch[ll];inti;fp=fopen("IN.DAT","r");for(i=0;i<100;i++){fgets(str,80zfp);memcpy(sell[i].dm/sti;4);memcpy(sell[i].mc,str+4,10);memcpy(ch,str+14,4);ch[4]=0;sell[i].dj=atoi(ch);memcpy(ch,str+18,5);ch[5]=O;sell[i].sl=atoi(ch);sell[i].je=(long)sell[i].dj*sell[i].sl;}fclose(fp);}voidWriteDat(void){FILE*fp;inti;fp=fopen("OUT8.DAT","w");for(i=0;i<100;i++){fprintf(fp;'%s%s%4d%5d%101d

188",sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je);}fclose(fp);}题43:函数ReadDat。实现从文件in.dat中读取20行数据存放到字符串数组xx中(第行字符串长度均小于80)。请编制函数jsSort(),其函数的功能是:以行为单位对字符串变量的下标为奇数的字符按其ASCII值从小到大的顺序进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数WriteDat()把结果xx输出到文件out.dat中。例如:位置01234567源字符串hgfedcba则处理后字符串hafcdebg部分源程序已给出。请勿改动主函数main。、读数据函数ReadDat()和输出数据函数WriteDat。的内容。类型:字符串左右排序和比较。voidjsSort()/・标准答案・/{intl,j,k,strl;charch;for(l=0;l<20;l++){strl=strlen(xx[l]);for(j=l;jxx[l][k]){ch=xx[l]U];xx[l][j]=xx[l][k];xx[l][k]=ch;})}原程序如下:#include#include#includecharxx[20][80];

189voidjsSort()(}voidmain()(readDat();jsSort();writeDat();system("pauseH);}readDat()(FILE*in;inti=O;char*p;in=fopen("in.dat"/"r");while(i<20&&fgets(xx[i]/80Jn)!=NULL){p=strchr(xx[i]/

190');if(P)*P=O;i++;}fclose(in);}writeDat(){FILE*out;inti;out=fopen("out.dat";'w");clrscr();for(i=0;i<20;i++){

191printf("%s

192,xx[i]);fprintf(o此"%s

193”,xx[i]);fclose(out);}题44:函数ReadDat。实现从文件in.dat中读取20行数据存放到字符串数组xx中(第行字符串长度均小于80)。请编制函数jsSort(),其函数的功能是:以行为单位对字符串按给定的条件进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数WriteDat。把结果xx输出到文件out.dat中。条件:从字符串中间一分为二,左边部分按字符的ASCII值降序排序,排序后左边部分与右边部分进行交换。如果原字符串长度为奇数,则最中间的字符不参加处理,字符仍放在原位置上。例如:位置012345678源字符串abcdhgfe123498765则处理后字符串hgfedcba876594321部分源程序已给出。请勿改动主函数main。、读数据函数ReadDat()和输出数据函数WriteDat。的内容。类型:字符串左右排序和比较。voidjsSort()/・标准答案・/{intl,j,k,strl,half;charch;for(l=0;l<20;l++){strl=strlen(xx[l]);half=strl/2;for(j=0;j=0;j—,k-){ch=xx[l][j];xx[l][j]=xx[l][k];xx[l][k]=ch;}}}原程序如ド:#include#include#includecharxx[20][80];voidjsSort()(}

194readDat();jsSort();writeDat();system("pause");)readDat(){FILE*in;inti=O;char*p;in=fopen("in.dat","rn);while(i<20&&fgets(xx[i]/80/in)!=NULL){p=strchr(xx[i]/

195');if(p)*p=O;i++;}fclose(in);)writeDat(){FILE*out;inti;clrscr();out=fopen("out.dat"/"w");for(i=0;i<20;i++){printf("%s

196”,xx[i]);fprintf(out,"%s

197”,xx[i]);)fclose(out);}45:一知数据文件IN.DAT中存有200个四位数,并己调用读函数readDat。把这些数存入数组a中,请考生编制ー函数jsVal(),其功能是:依次从数组a中取出ー个四位数,如果该数连续大于该四位数以前的5个数且该数是偶数,则统计出满足此条件的个数ent,并把这些四位数按从大到小的顺序存入数组b中。并要计算满足上述条件的四位数的个数ento最后main()函数调用写函数writeDat()把结果ent以及数组b中符合条件的四位数输出到OUT.DAT文件中。注意:部分源程序存在文件PR0G1.C文件中。程序中已定义数组:a[200],b[200],已定义变量:ent请勿改动数据文件IN.DAT中的任何数据、主函数main。、读函数readDat()和写函数writeDat()的内容voidjsVal()/・标准答案・/{intLj,flag=O;for(l=5;l

198{for(j=l-5;ja[j])flag=l;elseflag=O;if(a[l]%2!=0)flag=O;if(flag==O)break;}if(flag==l){b[cnt]=a[l];cnt++;}}for(l=0;l#defineMAX200inta[MAX],b[MAX]zent=0;voidjsVal()(}voidreadDat(){inti;FILE*fp;fp=fopenC'in.dat",Hr");for(i=0;i

199”,ent);for(i=0;i

200",ent);for(i=0;i

201”,b[i]);fclose(fp);}46:己知数据文件IN.DAT中存有200个四位数,并己调用读函数readDat()把这些数存入数组a中,请考生编制ー函数jsVal(),其功能是:依次从数组a中取出ー个四位数,如果该数连续大于该四位数以前的5个数且该数是奇数,但该数必须能被7整除。则统计出满足此条件的个数ent,并把这些四位数按从大到小的顺序存入数组b中。并要计算满足上述条件的四位数的个数ent〇最后main。函数调用写函数writeDat()把结果ent以及数组b中符合条件的四位数输出到OUT.DAT文件中。注意:部分源程序存在文件PROG1.C文件中。程序中已定义数组:a[200],b[200],已定义变量:ent请勿改动数据文件IN.DAT中的任何数据、主函数main。、读函数readDat。和写函数writeDat()

202的内容。voidjsVal〇/・标准答案・/{intl,j,flag=O;for(l=5;laU])flag=l;else{flag=O;break;}}if(flag==l&&a[l]%2==l&&a[l]%7==0){b[cnt]=a[l];cnt++;}}for(l=0;l#defineMAX200inta[MAX],b[MAX],ent=0;voidjsVal()(}voidreadDat(){inti;FILE*fp;fp=fopenC'in.dat",nr");for(i=0;i

203”,ent);for(i=0;i

204");writeDat();system("pause");|writeDat(){FILE*fp;inti;fp=fopenCout.dat","w");

205fprintf(fp,"%d

206",ent);for(i=0;i

207”,b[i]);fclose(fp);}47:已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录山产品代码dm(字符型4位),产品名称me(字符型10位),单价dj(整型),数量si(整型),金额je(长整型)四部分组成。其中:金额=单价・数量计算得出。函数ReadDat。是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:金额从大到小进行排列,若金额相等,则按产品代码从小到大进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT3.DAT中。注意:部分源程序存放在PR0G1.C中。请勿改动主函数main()、读数据函数ReadDat。和输出数据函数WriteDat()的内容。voidSortDat()/・标准答案・/{intl,j;PROxy;for(l=0;lO){xy=sell[l];sell[l]=sell[j];sell[j]=xy;})原程序如下:#include#include#include#include#include#defineMAX100typedefstruct{chardm[5];/・产品代码ッchar产品名称・/intdj;/*单价*/intsi;/・数量・/longje;/・金额・/}PRO;PROsell[MAX];voidReadDat();voidWriteDat();voidSortDat()voidmain(){memset(sell,〇,sizeof(sell));ReadDat();SortDat();WriteDat();}voidReadDat(){FILE*fp;charstr[80],ch[ll];inti;fp=fopen("IN.DAT","r");for(i=0;i<100;i++){fgets(str,80,fp);memcpy(sell[i].dm,str;4);memcpy(sell[i].mc,str+4,10);memcpy(ch,str+14,4);ch[4]=0;sell[i].dj=atoi(ch);memcpy(ch,str+18,5);ch[5]=0;sell[i].sl=atoi(ch);sell[i].je=(long)sell[i].dj*sell[i].sl;}fclose(fp);}voidWriteDat(void)

208{FILE*fp;inti;fp=fopen("OUT3.DAr,"w");for(i=0;i<100;i++){fprintf(fp,"%s%s%4d%5d%101d

209",sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je);}fclose(fp);}48:已知数据文件IN.DAT中存有300个四位数,并已调用读函数READDAT。把这些数存入数组A中.请编制ーー函数SVALUE。,其功能是:求出千位数上的数加个位数上的数等于百位数上的数加十位数上的数的个数CNT,再把所有满足条件的四位数依次存入数组bb中,然后对数组bb的四位数按从小到大的顺序进行排序,最后调用写函数WRITEDATO把数组b中的数输出到OUT.DAT文件.例如:6712,6+2=7+1,则该数满足条件存入数组bb中,且个数CNT=CNT+1.8129,8+1<>2+9,则该数不满足条件忽略.注意:部分源程序已给出。程序中已定义数组:a[300],已定义变量:ent请勿改动主函数main。、读函数ReadDat。和写函数writeDat。的内容。voidjsValue。/・标准答案・/{intI,thou,hun,ten,data,j;for(l=0;l<300;l++){thou=a[l]/1000;hun=a[l]%1000/100;ten=a[l]%100/10;data=a[l]%10;if(thou+data==hun+ten){b[cnt]=a[l];cnt++;}}for(l=0;lb[j]){data=b[l];b[l]=b[j];b[j]=data;}|原程序如下:#includeinta[300]zb[300]zcnt=0;voidjsValue()(}main(){inti;readDat();jsValue();writeDat();for(i=O;i

210"J/b[i]);system("pauseH);}readDat()

211(FILE*fp;inti;fp=fopen(,,in.dat"/"r");for(i=0;i<300;i++)fscanf(fp,"%d,",&a[i]);fclose(fp);}writeDatf)(FILE*fp;inti;fp=fopen("out.dat","w");fprintf(fp,"%d

212",cnt);for(i=0;i

213",b[i]);fclose(fp);|49:已知数据文件IN.DAT中存有300个四位数,并已调用读函数ReadDat()把这些数存入数组3中,请编制ーー函数jsvalue(),其功能是:求出千位数上的数减百位数减十位数上的数减个位数上的数大于零的个数ent,再求出所有满足此条件的四位数平均值pjzl,以及不满足此条件的四位数平均值pjz2,最后调用写函数writeDat()把结果输出到OUT.DAT文件。例如:9123,9-l-2-3>0,则该数满足条件计算平均值pjzl,且个数cnt=cnt+l«9812,9-8-l-2<0,则该数不满足条件计算平均值pjz2.注意:部分源程序已给出。程序中已定义数组:a[300],已定义变量:ent请勿改动主函数main。、读函数ReadDat()和写函数writeDat()的内容。voidjsValue。/・标准答案・/{intl,thou,hun,ten,data,n二〇;for(l=0;l<300;l++){thou=a[l]/1000;hun=a[l]%1000/100;ten=a[l]%100/10;data=a[l]%10;if(thou-hun-ten-data>0){cnt++;pjzl+=a[l];}else{n++;pjz2+=a[l];})pjzl/=cnt;pjzy=n;}原程序如ド:#includeinta[300]/b[300]zcnt=0;doublepjzl=0.0,pjz2=0.0;jsValue(){)main(){inti;readDat();jsValue();writeDat();

214printf("cnt=%d

215满足条件的平均值pzjl=%7.21f

216不满足条件的平均值pzj2=%7.21f

217"/cnt/pjzl/pjz2);system("pause");}readDat()(FILE*fp;inti;fp=fopen("in.dat";'r");for(i二〇;i<3OO;i++)fscanf(fp,"%dj,&a[i]);fclose(fp);}writeDat()(FILE*fp;inti;fp=fopen("out.dat";'w");fprintf(fp,"%d

218%7.21f

219%7.21f

220"/cnt/pjzl/pjz2);fclose(fp);}50:函数ReadDat()实现从文件in.dat中读取20行数据存放到字符串数组xx中(每行字符串长度均小于80)。请编制函数jsSort(),其函数的功能是:以行为单位对字符串按给定的条件进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数WriteDat。把结果xx输出到文件out.dat中。条件:从字符串中间一分为二,左边部分按字符的ASCII值升序排序,排序后左边部分与右边部分进行交换。如果原字符串长度为奇数,则最中间的字符不参加处理,字符仍放在原位置上O例如:位置012345678源字符串dcbahgfe432198765则处理后字符串hgfeabed876591234部分源程序已给出。请勿改动主函数main。、读函数ReadDat。和写函数WriteDat。的内容。类型:字符串左右排序和比较.注:先采用冒泡法对左边部分进行升序排序,然后将排序后的左半与右半按对应位进行调换。voidjsSort(){inti,strl,half,j,k;charch;for(i=0;i<20;i++)/・行循环・/{strl二strlen(xx[i]);/*每行长度・/half=strl/2;for(j=0;j

221if(xx[i][j]>xx[i][k]){ch=xx皿j];/*每次将最小数赋给xx[i]U]*/xx[i][j]=xx[i][k];xx[i][k]=ch;}for(j=half-l/k=strl-l;j>=0;j-/k--){ch=xx[i][j];xx[i][j]=xx[i][k];xx[i][k]=ch;}}|原程序如下:#include#include#includecharxx[20][80];voidjsSort()(|voidmain()(readDat();jsSort();writeDat();system("pause");}readDat()(FILE*in;inti=0;char*p;in=fopen("in.dat";,r");while(i<20&&fgets(xx[i]/80Jn)!=NULL){p=strchr(xx[i]/

222');if(P)*P=O;i++;}fclose(in);|writeDat()(FILE*out;inti;clrscr();out=fopenC'outdat'Y'w");for(i=0;i<20;i++){printf("%s

223“,xx[i]);fprintf(outj%s

224”,xx[i]);}fclose(out);)

22551:一知数据文件IN.DAT中存有200个四位数,并一调用读函数readDat()把这些数存入数组a中,请考生编制ー函数jsVal(),其功能是:把千位数字和十位数字重新组成一个新的十位数(新十位数的十位数字是原四位数的千位数字,新十位数的个位数字是原四位数的十位数字),以及把个位数字和百位数字组成另ー个新的十位数(新十位数的十位数字是原四位数的个位数字,新十位数的个位数字是原四位数的百位数字),如果新组成的两个十位数均是素数,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组b中,并要计算满足上述条件的四位数的个数ent〇最后main()函数调用写函数writeDat()把结果ent以及数组b中符合条件的四位数输出到OUT.DAT文件中。注意:部分源程序存在文件PROG1.C文件中。程序中已定义数组:a[200],b[200],已定义变量:ent请勿改动数据文件IN.DAT中的任何数据、主函数main。、读函数readDat()和写函数writeDat()的内容。voidjsVal()/・标准答案・/{intI,thou,hun,ten,data,j;intab,cd;for(l=0;l<200;l++){thou=a[l]/1000;hun=a[l]%1000/100;ten=a[l]%100/10;data=a[l]%10;ab=10*thou+ten;cd=10*data+hun;if(isprime(ab)&&isprime(cd)&&ab!=O&&cd!=O){b[cnt]=a[l];cnt++;})for(l=0;l#defineMAX200inta[MAX],b[MAX],ent=0;intisprime(intm){inti;for(i=2;i<=m/2;i++)if(m%i==O)return0;return1;}voidjsVal(){}voidreadDat(){inti;FILE*fp;

226fp=fopenCIn.dat","r");for(i=0;i

227”,ent);for(i=0;i

228");writeDat();system("pause");}writeDat(){FILE*fp;inti;fp=fopenC'out.dat","w");fprintf(fp,"%d

229ツent);for(i=0;i

230”,b[i]);fclose(fp);)52:一知数据文件IN.DAT中存有200个四位数,并己调用读函数readDat()把这些数存入数组a中,请考生编制ー函数jsVal(),其功能是:把千位数字和个位数字重新组成一个新的十位数(新十位数的H立数字是原四位数的千位数字,新ト位数的个位数字是原四位数的个位数字),以及把十位数字和百位数字组成另ー个新的十位数(新十位数的十位数字是原四位数的百位数字,新十位数的个位数字是原四位数的十位数字),如果新组成的两个十位数均是奇数并且两个十位数中至少有一个能被5整除,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组b中,并要计算满足上述条件的四位数的个数ent。最后main。函数调用写函数writeDat()把结果ent以及数组b中符合条件的四位数输出到OUT.DAT文件中。注意:部分源程序存在文件PROG1.C文件中。程序中己定义数组:a[200Lb[200],已定义变量:ent请勿改动数据文件IN.DAT中的任何数据、主函数main。、读函数readDat。和写函数writeDat()的内容voidjsVal()/・标准答案・/{intI,thou,hun,ten,dataj;intab,cd;for(l=0;l<200;l++){thou=a[l]/1000;hun=a[l]%1000/100;ten=a[l]%100/10;data=a[l]%10;ab=10*thou+data;cd=10*hun+ten;if(ab%2==l&&cd%2==l&&(ab%5==0||cd%5==0)&&ab!=0&&cd!=0){b[cnt]=a[l];cnt++;})for(l=0;lf(b[l]#defineMAX200inta[MAX],b[MAX],ent=0;intisprime(intm){inti;

231for(i=2;i<=m/2;i++)if(m%i==0)return0;return1;}jsVal()(}voidreadDat(){inti;FILE*fp;fp二fopen(,,in.dat","r");for(i=0;i

232",ent);for(i=0;i

233");writeDat();system("pause");}writeDat(){FILE*fp;inti;fp=fopen("out.dat","w");fprintf(fp,"%d

234",ent);for(i=0;i

235",b[i]);fclose(fp);)53:已知数据文件IN.DAT中存有300个四位数,并已调用读函数READDAT。把这些数存入数组A中.请编制ー函数SVALUE(),其功能是:求出个位数上的数减千位数上的数减百位数上的数减十位数上的数大于零的个数ent,再把所有满足此条件的四位数依次存入数组b中,然后对数组b的四位数按从大到小的顺序进行排序,最后调用写函数WRITEDAT()把数组b中的数输出到OUT.DAT文件.例如:1239,9-l-2-3>0,则该数满足条件存入数组b中,且个数cnt=cnt+l.8129,9-8-l-2<0,则该数不满足条件忽略。注意:部分源程序已给出。程序中已定义数组:a[300],已定义变量:ent请勿改动主函数main。、读函数ReadDat()和写函数writeDat()的内容。voidjsValue()/・标准答案・/{intI,thou,hun,ten,data,j;for(l=0;l<300;l++){thou=a[l]/1000;hun=a[l]%1000A00;ten=a[l]%100/10;data=a[l]%10;if(data-thou-hun-ten>0){b[cnt]=a[l];cnt++;}|for(l=0;l

236{data=b[l];b[l]=b[j];b[j]=data;}}原程序如下:#includeinta[300]/b[300]/cnt=0;voidjsValue()main(){inti;readDat();jsValue();writeDat();for(i=O;i

237w/i/b[i]);system("pauseH);}readDat()(FILE*fp;inti;fp=fopen("in.dat","r");for(i=O;i<3OO;i++)fscanf(fp,"%d,”,&a[i]);fclose(fp);)writeDat()|FILE*fp;inti;fp=fopen("out.dat";'w");fprintf(fpj%d

238”,cnt);for(i二〇;i

239",b[i]);fclose(fp);}54:已知数据文件IN.DA!中存有300个四位数,并已调用读函数READDAT。把这些数存入数组A中.请编制ー函数SVALUE(),其功能是:求出千位数上的数加个位数上的数等于百位数上的数加十位数上的数的个数CN1再把所有满足条件的四位数依次存入数组b中,然后对数组b的四位数按从大到小的顺序进行排序,最后调用写函数WRITEDAT()把数组b中的数输出到OUT.DAT文件.例如:7153,7+1=5+3,则该数满足条件存入数组bb中,且个数CNT=CNT+1.8129,8+1<>2+9,则该数不满足条件忽略.注意:部分源程序已给出。程序中已定义数组:a[300],已定义变量:ent请勿改动主函数main。、读函数ReadDat。和写函数writeDat()的内容。voidjsValue。/・标准答案・/{intI,thou,hun,ten,data,j;for(l=0;l<300;l++)

240{thou=a[l]/1000;hun=a[l]%1000/100;ten=a[l]%100/10;data=a[l]%10;if(thou+hun==data+ten){b[cnt]=a[l];cnt++;}}for(1=0;kcnt-1;1++)for(j=l+l;jbU]){q=b[i];b[i]=b[j];b[j]=q;}}jsvalue(){inti,k,m,al,a2,a3,a4J=0;for(i=0;i<300;i++){al=a[i]/1000;a2=(a[i]%1000)/100;a3=(a[i]%100)/10;a4=a[i]%10;if(al+a2==a3+a4){cnt++;bU++]=a[i];}}for(i=0;iinta[300]zb[300]zcnt=0;voidjsValue(){}main(){inti;readDat();jsValue();writeDat();for(i=O;i

241"/i/b[i]);system("pause");}readDat()(FILE*fp;inti;fp=fopen("in.dat";,r");for(i=0;i<300;i++)fscanf(fp,"%d,”,&a[i]);fclose(fp);

242}writeDat()(FILE*fp;inti;fp二fopen-out.datツW);fprintf(fp,"%d

243”,cnt);for(i=O;i

244",b[i]);fclose(fp);}55:已知数据文件IN.DAT中存有300个四位数,并已调用读函数READDAT。把这些数存入数组A中.请编制ー函数SVALUEO,其功能是:求出所有这些四位数是素数的个数ent,再把所有满足此条件的四位数依次存入数组b中,然后对数组b的四位数按从小到大的顺序进行排序,最后调用写函数writeDat()把结果输出至りOUT.DAT文件。例如:5591是素数,则该数满足条件存入数组b中,且个数cnt=cnt+lo9812是非素数,则该数不满足条件忽略。注意:部分源程序已给出。程序中已定义数组:a[300],b[300],已定义变量:ent请勿改动主函数main。、读函数ReadDat。和写函数writeDat()的内容。voidjsValue。/・标准答案・/{intj,l,value;for(l=0;l<300;l++)if(isP(a[l])){b[cnt]=a[l];cnt++;}for(l=0;lbU]){value=b[l];b[l]=b[j];b[j]=value;}}原程序如下:#includeinta[300]zb[300]zcnt=0;intisP(intm){inti;for(i=2;i

245"/i/b[i]);system("pause");}readDat()(FILE*fp;inti;fp=fopen("in.dat"/"r");for(i=O;iv30〇;i++)fscanf(fp,"%dj,&a[i]);fclose(fp);}writeDat()(FILE*fp;inti;fp=fopen("out.dat";'w");fprintf(fpj%d

246,cnt);for(i=O;i

247",b[i]);fclose(fp);|56:函数ReadDat。实现从文件ENG.IN中读取ー篇英文文章,存入到字符串数组xx中;请编制函数encryptChar。,按给定的替代关系对数组xx中的所有字符进行替代,仍存入数组xx的对应的位置匕最后调用函数WriteDat()把结果xx输出到文件PS5.DAT中。替代关系:f(p)书256(p是数组中某ー个字符的ASCI!值,f(p)是计算后新字符的ASCII值),如果计算后f(p)值小于等于32或f(p)对应的字符是小写字母,则该字符不变,否则将f(p)所对应的字符进行替代。注意:部分源程序已给出。原始数据文件存放的格式是:每行的宽度均小于80个字符。请勿改动主函数main。、读数据函数ReadDat()和输出数据函数WriteDat()的内容。voidencryptChar〇/・标准答案・/{intI;char*pf;for(l=0;l

248{if((♦pf*ll%256>='a'&&*pf*ll%256<='z,)||*pf*ll%256<=32){pf++;continue;}*pf=*pf*ll%256;Pf++;}}}或者:voidencryptChar(){inti,j,t;for(i=0;i='a'&&t<='z'))continue;xx[i][j]=t;}}}原程序如下:#include#include#include#includeunsignedcharxx[50][80];intmaxlineニ。;/・文章的总行数・/intReadDat(void);voidWriteDat(void);voidencryptChar()()voidmain()clrscr();if(ReadDat()){printf("数据文件ENG.IN不能打开!、n\OO7");return;}encryptChar();WriteDat();system("pause");}intReadDat(void)(FILE*fp;inti=O;unsignedchar*p;if((fp=fopen("eng.in"/',r"))==NULL)return1;while(fgets(xx[i]/80/fp)!=NULL){

249p=strchr(xx[i];

250');if(P)*P=O;i++;|maxline=i;fclose(fp);return0;}voidWriteDat(void)(FILE*fp;inti;fp二fopen("ps5.dat”Jw“);for(i=0;i

251",xx[i]);fprintf(fp,"%s

252,xx[i]);)fclose(fp);}57:设有n个人围坐一圈并按顺时针方向从1到n编号,从第s个人开始进行1到m的报数,报数到第个m人,此人出圈,再从他的下ー个人重新开始1到m的报数,如此进行下去直到所有的人都出圈为止。现要求按出圈次序,每10人ー组,给出这n个人的顺序表。请考生编制函数Josegh。实现此功能并调用函数WriteDat()把结果p输出到文件OUT.DAT中。设n=100,s=l,m=10.⑴将1到n个人的序号存入ー维数组p中;⑵若第i个人报数后出圈,则将p[i]置于数组的倒数第i个位置上,而原来第i+!个至倒数第i个元素依次向前移动ー个位置;(3)重复第⑵步直至圈中只剩下p[l]为止。部分源程序已给出。请勿改动主函数main()和输出数据函数writeDat()的内容。voidJosegh(void)/・标准答案・/{intl,j,k,sl,w;sl=s;or(l=l;l<=n;l++)p[l-l]=l;for(l=n;l>=2;l-){sl=(sl+m-l)%l;if(sl==0)sl=l;w=p[sl-l];for(j=sl;j<=l-l;j++)pU-l]=pUl;p[l-l]=w;}}注:题中第一个for()循环是先对数组p赋初值。在第二个for()中用i来控制没出圈的

253总人数,sl=(sl+m-l)%i的作用是找出报数后出圈人的下标,其中对i求余的作用是使报数按圈进行(即报到尾后又从头报),该算法在很多中都用到。由于求余的作用当报数正好到最后ー个时s!为〇,故而要进行if(sl==O)的判断。内嵌的for()循环是将出圈以后的人依次往前移。原程序如下:include#defineN100#defineS1#defineM10intp[100],n,s,m;voidWriteDat(void);voidJosegh(void)(}voidmain(){m=M;n=N;s=S;Josegh();WriteDat();system("pause");}voidWriteDat(void){inti;FILE*fp;fp=fopenC'jose.out","w");for(i=N-1;i>=0;i-){printf("%4d",p[i]);fprintf(fpz"%4d",p[i]);if(i%10==0){printf("

254");fprintf(fpハバ);}}fclose(fp);}58:对10个候选人进行选举,现有一个100条记录的选票数据文件IN.DAT,其数据存放的格式是每条记录的长度均为!0位,第一位表示第一个人的选中情况,第二位表示第二个人的选中情况,依此类推:内容均为字符0和1,1表示此人被选中,〇表示此人未被选中,若一张选票人数小于等于5个人时被认为无效的选票。给定函数ReadDatO的功能是把选票数据读入到字符串数组xx中。请编制函数CountRs()来统计每个人的选票数并把得票数依次存入yy⑼到yy闻中。把结果yy输出到文件OUT.DAT中。注意:部分源程序已给出。请勿改动主函数main。、读数据函数ReadDat()和输出数据函数writeDat()的内容。类型:选票问题。voidCountRs(void)/・标准答案,有问题!!!*/{intl,countj;

255char*pf;for(l=0;l<10;l++)yy[l]=O;for(l=0;l<100;l++){pf=xx[l];count=0;while(*pf)if(*pf=='1'){count++;pf++;}elsepf++;if(count>5){pf=xx[l];j=0;while(*pf)if(*pf=='i'){yy[j]+=i;j++;pf++;}elseif(*pf==’〇'){pf++;j++;}}||或者:要求将那些选了不超过5人的选票视为无效票,即ー张选票中如果’1’不超过5个则为无效选票。该题先用for()循环对100行选票进行循环,在循环内先进行用for()循环数出这张选票中选中的人数(count)再用if()判断,如果选中人数小于等于5则continue即判断下ー张选票,否则用内嵌的for()对行内的数据进行判断,注意如果数据为'T时オ对对应的人增加1。voidCountRs(void){intij,count;for(i=0;i<100;i++){countニ〇;for(j=0;j<10;j++)if(xx[i][j]==,l,)count++;if(count<=5)continue;for(j=0;j<10;j++)if(xx[i][j]=='l')yy[j]++;)}原程序如下:#includecharxx[100][ll];intyy[10];intReadDat(void);voidWriteDat(void);voidCountRs(void)()voidmain(){inti;

256for(i=0;i<10;i++)yy[i]=O;if(ReadDat()){printf("IN.DATcan'topen!

257\007");return;}CountRs();WriteDat();system("pausen);}intReadDat(void){FILE*fp;inti;chartt[13];if((fp二fopen("in.daピズr"))==NULL)return1;for(i=0;i<100;i++){if(fgets(tt,13,fp)==NULL)return1;memcpy(xx[i]/tt/10);xx[i][10]=0;}fclose(fp);return0;}voidWriteDat(void)FILE*fp;inti;fp二fopen("OUT.DATヴw”);for(i=0;i<10;i++){fprintfffp,"%d

258"/yy[i]);printf(HNO.%dnotes二%d

259”}fclose(fp);)59:己知数据文件IN.DAT中存有200个四位数,并己调用读函数readDat()把这些数存入数组a中,请考生编制ー函数jsVal(),其功能是:把千位数字和十位数字重新组成一个新的十位数ab(新十位数的十位数字是原四位数的千位数字,新十位数的个位数字是原四位数的十位数字),以及把个位数字和百位数字组成另ー个新的十位数cd(新十位数的十位数字是原四位数的个位数字,新十位数的个位数字是原四位数的百位数字),如果新组成的两个十位数ab

260voidjsVal〇/・标准答案・/{intI,thou,hun,ten,data』;intab,cd;for(l=0;l<200;l++){thou=a[l]/1000;hun=a[l]%1000/100;ten=a[l]%100/10;data=a[l]%10;ab=10*thou+ten;cd=10*data+hun;if(((ab-cd)<0&&ab%2==l&&ab%5!=0)&&cd%2!=l&&ab!=0&&cd!=0){b[cnt]=a[l];cnt++;})for(l=0;l#defineMAX200inta[MAX],b[MAX],ent=0;jsVal()voidreadDat(){inti;FILE*fp;fp=fopenC'in.dat","r");for(i=0;i

261”,ent);for(i=0;i

262");writeDat();system("pause");}writeDat(){FILE*fp;inti;fp=fopenC'out.dat","w");fprintf(fp,"%d

263",ent);for(i=0;i

264",b[i]);fclose(fp);}60:在文件in.dat中有200组数据,毎组有3个数,每个数均是三位数。函数ReadDat。读取这200组数据存放到结构数组aa中,请编制函数jsSort(),其函数的功能是:要求在200组数据中找出条件为每组中的第二个数大于第一个数加第三个数的之和,其中满足条件的个数作为函数jsSort()的返回值,同时把满足条件的数据存入结构数组bb中,再对bb中的数据按照每组数据的第二个数加第三个之和的大小进行升序排列(第二个数加第三个数的和均不相等),排序

265后的结果仍重新存入结构数组bb中,最后调用函数WriteDat()把结果bb输出到文件out.dat中。注意:部分源程序已给出。请勿改动主函数main。、读数据函数ReadDat()和输出数据函数WriteDat。的内容。intjsSort〇ノ・标准答案・/{intl,ent=0,j;Datach;for(l=0;l<200;l++)if(aa[l].x2>aa[l].xl+aa[l].x3){bb[cnt]=aa[l];cnt++;}for(l=0;l#include#includetypedefstruct{intxl,x2,x3;}data;dataaa[200Lbb[200];dataaa[200]/bb[200]/m;intjsSort()()voidmain(){intcount;readDat();count:jsSort();/・返回满足条件的个数ッwriteDat(count);}readDat(intcount){FILE*in;inti;in=fopen("in.dat'7'r");for(i=0;i<200;i++)fscanf(in/"%d/%dz%d"/&aa[i].xl/&aa[i].x2/&aa[i].x3);fclose(in);}writeDat(){FILE*out;inti;clrscr();out=fopen(,,out.dat";,wM);for(i=0;i<10;i++){printf("%d,%d,%d第二个数+第三个数=%d

266"/bb[i].xl/bb[i].x2,bb[i].x3,bb[i].x2+bb[i].x3);

267fprintf(out/,%d/%d/%d

268",bb[i].xlzbb[i].x2zbb[i].x3);}fclose(out);}61:已知在文件IN.DAT中存有!00个产品销售记录,毎个产品销售记录由产品代码dm(字符型4位)产品名称me(字符型!0位),单价dj(整型),数量si(整型),金额je(长整型)四部分组成。其中:金额=单价・数量计算得出。函数ReadDat。是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按金额从小到大进行排列,若金额相等,则按产品代码从大到小进行排列.最终排列结果仍存入结构数组sell中,最后调用函数WriteDat。把结果输出到文件OUT2.DAT中。注意:部分源程序存放在PR0G1.C中。请勿改动主函数main()、读数据函数ReadDat。和输出数据函数WriteDat()的内容。voidSortDat()/・标准答案・/{intl,j;PROxy;for(l=0;l<99;l++)for(j=l+l;j<100;j++)if(sell[l].je>sell[j].je){xy=sell[l];sell[l]=sell[j];sellO]=xy;}elseif(sell[l].je==sell[j].je)if(strcmp(sell[l].dm,sell[j].dm)#include#include#include#include#defineMAX100typedefstruct{chardm[5];/・产品代码ッcharmc[ll];/・产品名称・/intdj;/*单价*/intsi;/*数量ッlongje;/・金额・/}PRO;PROsell[MAX];voidReadDat();voidWriteDat();voidSortDat()(}voidmain(){memset(sell,0,sizeof(sell));ReadDat();SortDat();WriteDat();}voidReadDat(){FILE*fp;charstr[80],ch[ll];inti;fp=fopen(,,IN.DAT","r");for(i=0;i<100;i++){fgets(str,80zfp);memcpy(sell[i].dm/str;4);memcpy(sell[i].mc,str+4,1〇);memcpy(ch,str+14,4);ch[4]=0;sell[i].dj=atoi(ch);memcpy(ch,str+18,5);ch[5]=0;sell[i].sl=atoi(ch);sell[i].je=(long)sell[i].dj*sell[i].sl;}fclose(fp);}voidWriteDat(void){FILE*fp;inti;

269fp=fopen("OUT2.DAT',/,,w");for(i=0;i<100;i++){fprintf(fp,"%s%s%4d%5d%101d

270",sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je);}fclose(fp);}62:函数ReadDat。实现从文件ENG.IN中读取一篇英文文章,存入到字符串数组xx中;请编制函数encryptChar(),按给定的替代关系对数组xx中的所有字符进行替代,仍存入数组xx的对应的位置上,最后调用函数WriteDat()把结果xx输出到文件PS2.DAT中。替代关系:f(p)=p*13mod256(p是数组中某ー个字符的ASCI!值,f(p)是计算后新字符的ASCI!值),如果计算后f(p)值小于等于32或其ASCI!值是偶数,则该字符不变,否则将f(p)所对应的字符进行替代。注意:部分源程序已给出。原始数据文件存放的格式是:每行的宽度均小于80个字符。请勿改动主函数main。、读数据函数ReadDat()和输出数据函数WriteDat。的内容。voidencryptChar。/・标准答案,有问题!り・/{intI;char*pf;for(l=0;l#include#include#includeunsignedcharxx[50][80];intmaxline=0;/・文章的总行数・/intReadDat(void);voidWriteDat(void);voidencryptChar()

271|}voidmain()(clrscr();if(ReadDat()){printf("数据文件ENG.IN不能打开!、n\00ア・);return;}encryptChar();WriteDat();system("pause");}intReadDat(void)(FILE*fp;inti=0;unsignedchar*p;if<(fp=fopen("eng.in";'rH))==NULL)return1;while(fgets(xx[i]/80/fp)!=NULL){p=strchr(xx[i]/

272');if(P)*P=O;i++;|maxline=i;fclose(fp);return0;}voidWriteDat(void){FILE*fp;inti;fp=fopen("ps2.dat,,/,,w");for(i=0;i

273”,xx[i]);fprintf(fp,"%s

274”,xx[i]);}fclose(fp);}63:下列程序的功能是:把S字符串中的所有字符左移ー个位置,串中的第一个字符移到最后.请编写函数CHG(CHAR*S)实现程序要求,最后调用函数READWRITEDAT()把结果输出到OUT.DAT文件中.例如:S字符串中原有内容为:Mn.l23xyZ,则调用函数お,结果为:n.l23xyZM.注意:部分源程序已给出。请勿改动主函数main。和输出।数据函数readwriteDat。的内容。

275voidchg(char*s)/・标准答案・/{intl,strl;charch;strl=strlen(s);ch=*s;for(l=0;l#include#defineN81voidreadwriteDAT();voidchg(char*s){}main()(chara[N];clrscr();printf("Enterastring:ツ;gets(a);printf("Theoriginalstringis:ツ;puts(a);chg(a);printf("Thestringaftermodified:puts(a);readwriteDAT();system("pause");)voidreadwriteDAT(){inti;chara[N];FILE*rf,*wf;rf=fopen("in.dat"/"r");wf二fopen(“〇ut.dat",W);for(i=0;i<10;i++){

276fscanf(rf,"%s",a);chg(a);fprintf(wfz"%s

277",a);)fclose(rf);fclose(wf);}64:下列程序的功能是:找出所有100以内(含100)满足1,1+4,1+10都是素数的整数1(1+10也在100以内)的个数ent以及这些I之和sum。请编写函数countvalue。实现程序要求,最后调用函数writeDat。把结果ent和sum输出到文件out.dat中。注意:部分源程序已给出。请勿改动主函数main()和函数writeDAT。的内容。类型:素数。voideountValue()/・标准答案・/{intl/count=0,xx[30];intj,k,m;cnt=0;sum=0;for(l=l;l<=90;l++)if(isPrime(l)){xx[count]=l;count++;}for(l=0;lintent,sum;intisPrime(intnumber){inti,tag=1;if(number==l)return0;for(i=2;tag&&i<=number/2;i++)if(number%i==0)tag=0;

278returntag;}voidcountvalue()(}voidmain(){ent=sum=0;countvalue();printf("满足条件的整数的个数二%d

279",ent);printf("满足条件的整数的和值=%d

280”,sum);writeDAT();system("pauseH);}writeDAT(){FILE*fp;fp=fopen("out.out","w");fprintf(fp,"%d

281%d

282",ent,sum);fclose(fp);65:已知在文件in.dat中存有若干个(个数<200)四位数字的正整数,函数readdat()读取这若干个正整数并存入数组xx中。请编制函数cah/alueO,其功能要求:1、求出这文件中共有多少个正整数totnum;2、求出这些数中的各位数字之和是奇数的数的个数totcnt,以及满足此条件的这些数的算术平均值totpjz,最后调用函数writedat()把所求的结果输出到文件out.dat中。注意:部分源程序已给出。请勿改动主函数main。、读数据函数readdat。和输出数据函数writedat()的内容。voidCalValue(void)/・标准答案・/{intI,thou,hun,ten,data;for(l=0;l0)totNum++;thou=xx[l]/1000;hun=xx[l]%1000/100;ten=xx[l]%100/10;data=xx[l]%10;if((thou+hun+ten+data)%2){totCnt++;totPjz+=xx[l];}}totPjz/=totCnt;}或者:voidCalvalue(void){inti,k,a,b,c,d;for(i=0;i

283{a=xx[i]/1000;b=(xx[i]%1000)/100;c=(xx[i]%100)/10;d=xx[i]%10;k=a+b+c+d;if(k%2){totCnt++;totPjz+=xx[i];}}totPjz/=totCnt;}原程序如ド:#include#include#defineMAXNUM200intxx[MAXNUM];inttotNum=0;/・文件IN.DAT中共有多少个正整数・/inttotCnt=0;/*符合条件的正整数的个数ッdoubletotPjz=0.0;/*平均值*/intReadDat(void);voidWriteDat(void);voidCalvalue(void)|}voidmain(){inti;clrscr();for(i=0;i

284");return;}Calvalue();printf("文件IN.DAT中共有正整数二%d个、n”,totNum);printf("符合条件的正整数的个数二%d个、n”,totCnt);printf(”平均值二%.2lf

285”,totPjz);WriteDat();system("pause");}intReadDat(void)(FILE*fp;inti=0;if((fp二fopen(”in.dat”,”r”))ニニNULL)return1;while(!feof(fp)){fscanf(fp,”%d,”,&xx[i++]);}fclose(fp);return0;}voidWriteDat(void)(FILE*fp;

286fp二fopen(”〇UT.DAT”,”w”);fprintf(fp,”%d

287%d

288%.2lf

289”,totNum,totCnt,totPjz);fclose(fp);|66:下列程序的功能是:计算500-800区间内素数的个数ent,并按所求素数的值从大到小的顺序,再计算其间隔加、减之各,即第1个素数一第2个素数+第3个素数一第4个素数+第5个素数……的值sum。请编写函数countvalue。实现程序的要求,最后调用函数writedat。把结果ent和sum,输出到文件outll.dat中。注意:部分源程序已给出。请勿改动主函数main。和输出数据函数writedat。的内容。voidcountvalue〇/・标准答案,有问题ッ{intl,j,half,yy[100];for(l=500;l<=800;l++){half=l/2;for(j=2;j=half){yy[cnt]=l;cnt++;}|for(l=O,j=-l;l=500;i-){for(j=2;j=i){cnt++;sum+=k*i;k=-l*k;}}}intss(intm){inti,k=l;for(i=2;i

290{inti,j=0,a[300],k=l;cnt=O;sum=0;for(i=800;i>500;i-)if(ss(i)){cnt++;a[j++]=i;}for(i=0;iintcntzsum;voidcountvalue()(}voidmain(){cnt=sum=0;countvalue();printf("素数的个数=%d

291",cnt);printf("按要求计算的值=%d

292",sum);writeDat();system("pause");}writeDat(){FILE*fp;fp=fopen("OUTll.DAr;'w");fprintf(fp/'%d

293%d

294"/cnt/sum);fclose(fp);}67:下列程序的功能是:先出5000以下符合条件的自然数。条件是:千位数字与百位数字之和等于十位数字与个位数字之和,且千位数字与百位数字之和等于个位数字与千位数字之差的确10倍。计算并输出这些四位自然数的个数ent以及这些数的和sum。请编写函数countvalue()实现程序的要求,最后调用函数writedat()把结果ent和sum,输出到文件outl3.dat中。注意:部分源程序已给出。请勿改动主函数main。和输入输出数据函数writeDAT。的内容。voidcountValue〇/・标准答案・/{intI,thou,hun,ten,data;for(l=5000;l>=1000;l-){thou=l/1000;hun=l%1000/100;ten=l%100/10;data=l%10;if(thou+hun==ten+data&&thou+hun==(data-thou)*10){cnt++;sum+=l;}|)或者:voidcountvalue(){inti,a,b,c,d;for(i=1000;i<5000;i++){a=i/1000;b=(i%1000)/100;c=(i%100)/10;

295d=i%10;if((a+b==c+d)&&((a+b)==10*(d-a))){cnt++;sum+=i;}}}原程序如下:#includeintent,sum;voidcountvalue()(}voidmain(){cnt=sum=0;countvalue();printf("满足条件的自然数的个数=%d

296”,cnt);printf("满足条件的自然数的个数二%d

297ツsum);writeDat();system("pauseH);}writeDat(){FILE*fp;fp=fopen("OUT13.DAT","w");fprintf(fp,"%d

298%d

299",cnt,sum);fclose(fp);}68:已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制ー函数jsVal(),其功能是:如果四位数各位上的数字均是奇数,则统计出满足此条件的个数ent,并把这些四位数按从大到小的顺序存入数组b中。最后main。函数调用写函数writeDat()把结果ent以及数组b中符合条件的四位数输出到OUT.DAT文件中。注意:部分源程序存在文件PR0G1.C文件中。程序中已定义数组:a[200],b[200],已定义变量:ent请勿改动数据文件IN.DAT中的任何数据、主函数main。、读函数readDat。和写函数writeDat。的内容voidjsVal()/・标准答案・/voidjsVal()intI,thou,hun,ten,data,j;for(l=0;l<200;l++){thou=a[l]/1000;hun=a[l]%1000/100;ten=a[l]%100/10;data=a[l]%10;if(thou%2!=0&&hun%2!=0&&ten%2!=0&&data%2!=〇){b[cnt]=a[l];cnt++;}}for(l=0;l

300{data=b[l];b[l]=b[j];b[j]=data;}}原程序如下:#include#defineMAX200inta[MAX],b[MAX],ent=0;voidjsVal()voidreadDat(){inti;FILE*fp;fp=fopen("in.dat","r");for(i=0;i

301“,ent);for(i=0;i

302");writeDat();system("pauseH);}writeDat(){FILE*fp;inti;fp=fopen("out.dat","w");fprintf(fp,"%d

303",ent);for(i=0;i

304",b[i]);fclose(fp);69:已知数据文件IN.DAT中存有200个四位数,并己调用读函数readDat。把这些数存入数组a中,请考生编制ー函数jsVal(),其功能是:若一个四位数的千位数字上的值减去百位数字上的值减去十位数字上的值再减去个位数字上的值,并且此四位数是奇数,则统计出满足此条件的个数ent,并把这些四位数按从小到大的顺序存入数组b中。最后main()函数调用写函数writeDat()把结果ent以及数组b中符合条件的四位数输出到OUT.DAT文件中。注意:部分源程序存在文件PR0G1.C文件中。程序中已定义数组:a[200],b[200],已定义变量:ent请勿改动主函数main。、读函数readDat。和写函数writeDat。的内容。voidjsVal〇/・标准答案・/{intI,thou,hun,ten,data,j;for(l=0;l=0)&&a[l]%2==l){b[cnt]=a[l];cnt++;}}

305for(l=0;lb[j]){data=b[l];b[l]=b[j];b[j]=data;}}原程序如下:#include#defineMAX200inta[MAX],b[MAX],cnt=O;voidjsVal()(}voidreadDat(){inti;FILE*fp;fp=fopen("in.dat","r");for(i=0;i

306”,ent);for(i=0;i

307");writeDat();system("pause'*);)writeDat(){FILE*fp;inti;fp=fopenC'out.dat","w");fprintf(fp,"%d

308”,ent);for(i=0;i

309”,b[i]);fclose(fp);}70:已知在文件in.dat中存有若干个(个数<200)四位数字的正整数,函数readdat()读取这若干个正整数并存入数组xx中。请编制函数eah/alue(),其功能要求:1、求出这文件中共有多少个正整数totnum;2、求这些数右移1位后,产生的新数是奇数的数的个数totent,以及满足此条件的这些数(右移前的值)的算术平均值totpjz,最后调用函数writedat()把所求的结果输出到文件out.dat中。注意:部分源程序已给出。请勿改动主函数main。、读数据函数readdat。和输岀数据函数writedat()的内容。voidCalValue(void)/・标准答案・/{intl,data;for(l=0;l0)totNum++;data=xx[l]»l;if(data%2){totCnt++;totPjz+=xx[l];}}

310totPjz/=totCnt;}或者:voidCalvalue(void){inti,k,a,b,e,d;for(i=0;i#include#defineMAXNUM200intxx[MAXNUM];inttotNumニ〇;/・文件IN.DAT中共有多少正整数・/inttotCnt=0;/*符合条件的正整数的个数・/doubletotPjz=0.0;/・平均值・/intReadDat(void);voidWriteDat(void);voidCalvalue(void){}voidmain()(inti;clrscr();for(i=0;i

311”);return;}Calvalue();printf("文件IN.DAT中共有正整数二%d个、n”,totNum);printf("符合条件的正整数的个数:%d个、n”,totCnt);printf(”平均值二%.2lf、n”,totPjz);WriteDat();system("pause");)intReadDat(void)(

312FILE*fp;inti=0;if((fp二fopen(”in.dat”,”r”))ニニNULL)return1;while(!feof(fp)){fscanf(fp,”%d,”,&xx[i++]);)fclose(fp);return0;}voidWriteDat(void)(FILE*fp;fp二fopenCOUT.DAT","w");fprintf(fp,”%d、n%d、n%.2lf、n”,totNum,totCnt,totPjz);fclose(fp);}71:函数ReadDat。实现从文件in.dat中读取20行数据存放到字符串数组xx中(第行字符串长度均小于80)。请编制函数jsSort(),其函数的功能是:以行为单位对字符串按给定的条件进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数WriteDat。把结果xx输出到文件out.dat中。条件:从字符串中间一分为二,左边部分按字符的ASCII值降序排序,右边部分按字符的ASCII值升序排序。如果原字符串长度为奇数,则最中间的字符不参加排序,字符仍放在原位置±o例如:位置012345678源字符串abcdhgfe123498765则处理后字符串dcbaefgh432195678部分源程序已给出。请勿改动主函数main。、读数据函数ReadDat()和输出数据函数WriteDat。的内容。类型:字符串左右排序和比较。注:要注意当要进行右半部分排序时,一定要判断原字符串个数是否为奇数,若是则要half加1,本题对右半部分采用选择法对其进行升序排序。voidjsSort()/・标准答案・/{intl,j,k,strl,half;charch;for(l=0;l<20;l++){strl=strlen(xx[l]);half=strl/2;for(j=0;j

313xx[l][k]=ch;}if(strl%2)half++;for(j=half;jxx[l][k]){ch=xx[l][j];xx[l][j]=xx[l][k];xx[l][k]=ch;}}}原程序如下:#include#include#includecharxx[20][80];voidjsSort())voidmain(){readDat();jsSort();writeDat();system("pauseH);)readDat(){FILE*in;inti=O;char+p;in=fopen("in.dat";'rn);while(i<20&&fgets(xx[i]/80Jn)!=NULL){p=strchr(xx[i]/

314');if(P)*P=O;i++;}fclose(in);}writeDat()(FILE*out;inti;clrscr();out=fopen("out.dat";'w");for(i=0;i<20;i++){

315printf("%s

316”,xx[i]);fprintf(out,"%s

317”,xx[i]);)fclose(out);)72:已知数据文件IN.DAT中存有200个四位数,并丄调用读函数readDat。把这些数存入数组a中,请考生编制ー函数jsVal(),其功能是:把千位数字和个位数字重新组成一个新的十位数(新十位数的H立数字是原四位数的千位数字,新ト位数的个位数字是原四位数的个位数字),以及把十位数字和百位数字组成另ー个新的十位数(新十位数的十位数字是原四位数的百位数字,新十位数的个位数字是原四位数的十位数字),如果新组成的两个十位数均是偶数并且两个十位数中至少有一个能被9整除,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组b中,并要计算满足上述条件的四位数的个数ent。最后main。函数调用写函数writeDat()把结果ent以及数组b中符合条件的四位数输出到OUT.DAT文件中。注意:部分源程序存在文件PR0G1.C文件中。程序中一定义数组:a[200],b[200],已定义变量:ent请勿改动数据文件IN.DAT中的任何数据、主函数main。、读函数readDat。和写函数writeDat。的内容voidjsVal()/・标准答案・/{intl,thou,hun,ten,data,j;intab,cd;for(l=0;ltfdefineMAX200inta[MAX]zb[MAX],ent=0;jsVal()(}voidreadDat(){inti;FILE*fp;fp=fopen("in.dat","rn);for(i=0;i

318“,ent);for(i=0;i

319");writeDat();

320systemC'pause");}writeDat(){FILE*fp;inti;fp=fopenC'out.dat","w");fprintf(fp,"%d

321ツent);for(i=0;i

322”,b[i]);fclose(fp);}73:函数ReadDat()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中;请编制函数ConvertCharD(),其函数的功能是:以行为单位把字符串中的所有小写字母改写成该字母的上一个字母,如果是字母a,则改写成字母z,大写字母和其它字符保持不变。把已处理的字符串仍按行重新存入字符串数组xx中。最后main。函数调用函数WriteDat()把结果xx输出到文件OUT4.DAT中。例:原文:Adb.Bedzaabck.LLhj结果:Aca.Bbcyzzabj.LLgi原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。注意:部分源程序存放在PROG1.C中。请勿改动主函数main()、读数据函数ReadDat。和输出数据函数WriteDat()的内容。类型:字符串(单词)的倒置和删除。voidConvertCharD(void)/・标准答案・/{intI;char*pf;for(l=0;l='b,&&*pf<='z,){*pf-=l;pf++;}elsepf++;}}或者:voidConvertCharD(void){inti,j;charc;for(i=0;i

323elseif(xx[i][j]>='b'&&xx[i]O]<=,z')xx[i皿一;}|原程序如下:#includeinclude#includecharxx[50][80];intmaxline=0;/・文章的总行数♦/intReadDat(void);voidWriteDat(void);voidConvertCharD(void)(}voidmain(){clrscr();if(ReadDat()){printf("数据文件IN.DAT不能打开!'n\007");return;)ConvertCharD();WriteDat();system("pauseH);}intReadDat(void){FILE*fp;inti=0;char*p;if((fp=fopenC'IN.DAT","r"))==NULL)return1;while(fgets(xx[i],80,fp)!=NULL){p=strchr(xx[i],'

324');if(p)*p=O;i++;}maxline=i;fclose(fp);return0;}voidWriteDat(void)(FILE*fp;inti;clrscr();fp=fopen("〇UT4.DAT,“w");for(i=0;i

325M,xx[i]);fprintf(fp,*'%s

326"/xx[i]);}fclose(fp);}74:函数READDAT()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组XX中;请编制函数STRCHARJLO,其函数功能是:以行为单位把字符串中的所有字符的ASCI!值左移4位,如果左移后,其字符的ASCII值小于等于32或大于100,则原字符保持不变.否则就把左移后的字符ASCI!

327值再加上原字符的ASCII值,得到新的字符仍存入原字符串对应的位置上。最后把已处理的字符串仍按行重新存入字符串数组XX中,最后调用函数WRITEDAT()把结果XX输出到文件OUT7.DAT文件中.原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格.注意:部分源程序已给出。请勿改动主函数main。、读数据函数ReadDat()和输出数据函数writeDat。的内容。voidStrChar儿(void)/・标准答案,有问题!!!*/{intl,j,str;for(l=0;l100)relsexx[l][j]+=xx[l][j]«4;}}voidStrCharJL(void){intij;charc;for(i=0;i100))xx[i][j]+=c;}|原程序如下:#include#include#includecharxx[50][80];intmaxline=0;/・文章的总行数・/intReadDat(void);voidWriteDat(void);voidStrCharJL(void)()voidmain(){clrscr();if(ReadDat()){printf("数据文件IN.DAT不能打开!

328\007");return;)StrCharJL();WriteDat();}

329intReadDat(void){FILE*fp;inti=0;char*p;if((fp=fopenC'IN.DAT","r"))==NULL)return1;while(fgets(xx[i],80,fp)!=NULL){p=strchr(xx[i],'

330');if(p)*p=0;i++;}maxline=i;fclose(fp);return0;}voidWriteDat(void){FILE*fp;inti;clrscr();fp=fopen("OUT7.DAT"z"w");for(i=0;i

331”,xx[i]);fprintf(fp,H%s

332",xx[i]);}fclose(fp);}75:在文件in.dat中有200组数据,每组有3个数,每个数均是三位数。函数ReadDat()读取这200组数据存放到结构数组aa中,请编制函数jsSort(),其函数的功能是:要求在200组数据中找出条件为每组中的第一个数大于第二个数加第三个数的之和,其中满足条件的个数作为函数jsSort()的返回值,同时把满足条件的数据存入结构数组bb中,再对bb中的数据按照每组数据的第一个数加第三个之和的大小进行升序排列(第一个数加第三个数的和均不相等),排序后的结果仍重新存入结构数组bb中,最后调用函数WriteDat()把结果bb输出到文件out.dat中。注意:部分源程序已给出。请勿改动主函数main。、读数据函数ReadDat()和输出数据函数WriteDat。的内容。intjsSor!〇/・标准答案37{intIJ,count=0;Dataval;for(l=0;l<200;l++)if(aa[l].xl>aa[l].x2+aa[l].x3){bb[count].xl=aa[l].xl;bb[count].x2=aa[l].x2;bb[count].x3=aa[l].x3;count++;}for(l=0;l#include#includetypedefstruct{intxl,x2,x3;

333}data;dataaa[200]/bb[200];dataaa[200]/bb[200]/m;intjsSort()(}voidmain(){intcount;readDat();count二jsSort();/・返回满足条件的个数*/writeDat(count);}readDat(intcount){FILE*in;inti;in=fopen("in.dat"(;'r");for(i=0;i<200;i++)fscanf(in/"%d/%dz%d"/&aa[i].xl/&aa[i].x2/&aa[i].x3);fclose(in);|writeDat(){FILE*out;inti;clrscr();out=fopen("out.dat","w");for(i=0;i<10;i++){printf("%d,%d,%d第一个数+第三个数=%d

334",bb[i].xl,bb[i].x2,bb[i].x3,bb[i].xl+bb[i].x3);fprintf(out,"%d,%d,%d

335",bb[i].xl,bb[i].x2,bb[i].x3);}fclose(out);}76:已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat。把这些数存入数组a中,请考生编制ー函数jsVal(),其功能是:把千位数字和个位数字重新组成一个新的十位数(新十位数的十位数字是原四位数的千位数字,新十位数的个位数字是原四位数的个位数字),以及把十位数字和百位数字组成另ー个新的十位数(新十位数的十位数字是原四位数的百位数字,新十位数的个位数字是原四位数的十位数字),如果新组成的两个十位数必须ー个是奇数另ー个是偶数,并且两个十位数中至少有一个能被1?整除,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组b中,并要计算满足上述条件的四位数的个数ent〇最后main()函数调用写函数writeDat()把结果ent以及数组b屮符合条件的四位数输出到OUT.DAT文件中。注意:部分源程序存在文件PROG1.C文件中。程序中已定义数组:a[200],b[200],已定义变量:ent请勿改动数据文件IN.DAT中的任何数据、主函数main。、读函数readDat()和写函数writeDat()的内容voidjsVal()/・标准答案・/{intI,thou,hun,ten,data,j;intab,cd;

336for(l=0;l<200;l++){thou=a[l]/1000;hun=a[l]%1000/100;ten=a[l]%100/10;data=a[l]%10;ab=10*data+thou;cd=10*hun+ten;if((ab%2!=l&&cd%2==l)||(ab%2==l&&cd%2!=l)&&(ab%17==0||cd%17==0)&&ab!=0&&cd!=0){b[cnt]=a[l];cnt++;}}for(l=0;l#defineMAX200inta[MAX]zb[MAX],ent=0;voidjsVal()voidreadDat(){inti;FILE*fp;fp=fopen(Min.dat","r");for(i=0;i

337ッent);for(i=0;i

338");writeDat();system("pause");}writeDat(){FILE*fp;inti;fp=fopen("out.dat","w");fprintf(fp,"%d

339",ent);for(i=0;i

340",b[i]);fclose(fp);}77:已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat。把这些数存入数组a中,请考生编制ー函数JsVal(),其功能是:若一个四位数的千位数字上的值加上十位数字上的值等于百位数字上的值加上个位数字上的值,并且此四位数是偶数,则统计出满足此条件的个数ent,并把这些四位数按从小到大的顺序存入数组b中。最后main()函数调用写函数writeDat()把结果

341ent以及数组b中符合条件的四位数输出到OUT.DAT文件中。注意:部分源程序存在文件PR0G1.C文件中。程序中已定义数组:a[200],b[200],已定义变量:ent请勿改动主函数main。、读函数readDat()和写函数writeDat。的内容。voidjsVal()/・标准答案・/{intI,thou,hun,ten,data,j;for(l=0;lbU]){data=b[l];b[l]=b[j];b[j]=data;}}原程序如下:#include#defineMAX200inta[MAX],b[MAX]/cnt=O;voidjsVal()(}voidreadDat(){inti;FILE*fp;fp=fopenC'in.dat","r");for(i=0;i

342”,ent);for(i=0;i

343");writeDat();system("pause");}writeDat(){FILE*fp;inti;fp=fopenC'out.dat","wH);fprintf(fp,"%d

344",ent);for(i=0;i

345”,b[i]);fclose(fp);)78:已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat。把这些数存入数组a中,请考生编制ー函数jsVal(),其功能是:若一个四位数的千位数字上的值大于等于百位数字上的值,百位数字上的值大于等于十位数字上的值,十位数字上的值大于等于个位数字上的值,并且此四位数是奇数,则统计出满足此条件的个数ent,并把这些四位数按从小到大的顺序存入数组b中。最后main。函数调用写函数writeDat()把结果ent以及数组b中符合条件的四位

346数输出到OUT.DAT文件中。注意:部分源程序存在文件PROG1.C文件中。程序中已定义数组:a[200],b[200],已定义变量:ent请勿改动主函数main。、读函数readDat。和写函数writeDat。的内容。voidjsVal()/・标准答案・/{intI,thou,hun,ten,data,j;for(l=0;l=hun)&&(hun>=ten)&&(ten>=data)&&a[l]%2!=0){b[cnt]=a[l];cnt++;})for(l=0;lbU]){data=b[l];b[l]=b[j];b[j]=data;}}原程序如下:#include#defineMAX200inta[MAX],b[MAX],ent=0;voidjsVal()(}voidreadDat(){inti;FILE*fp;fp=fopenC,in.dat","r");for(i=0;i

347",ent);for(i=0;i

348");writeDat();system("pause");}writeDat(){FILE*fp;inti;fp=fopen(Hout.dat","w");fprintf(fp,"%d

349",ent);for(i=0;i

350",b[i]);fclose(fp);)79:请编写函数voideountvalue(int*a,int*n),它的功能是:求出1到1000之内能被7或11整除但不能同时被7和11整除的所有整数放在数组a中,并通过n返回这些数的个数。注意:部分源程序已给出。请勿改动主函数main。的内容。

351voideountValue(int*a,int*n)/・标准答案・/{intI;♦n=0;for(l=l;l<=1000;l++)if(l%7==0&&l%H){*a=|;*n=*n+l;a++;}elseif(l%7&&l%ll==0){*a=l;*n=*n+l;a++;}}原程序如下:#include#includevoidcountvalue(int*a,int*n){}main(){intaa[1000],n,k;clrscrO;eountvalue(aa,&n);for(k=0;k

352");elseprintf("%5d",aa[k]);writeDAT();system("pause");}writeDAT(){intaa[1000],n,k;FILE*fp;fp=fopen(Houtl9.dat","w");countvalue(aa,&n);for(k=0;k

353");fclose(fp);}80:已知数据文件IN.DAT中存有300个四位数,并已调用读函数READDAT。把这些数存入数组A中.请编制ー函数SVALUE0,其功能是:求出个位数ヒ的数减千位数上的数减百位数上的数减十位数上的数大于零的个数ent,再求出所有满足此条件的四位数平均值pjzl,以及不满足此条件的四位数平均值pjz2,例如:1239,9コー2-3>0,则该数满足条件计算平均值pjzl,且个数cnt=cnt+l。8129,9-8-l-2<0,则该数不满足条件计算平均值pjz2.注意:部分源程序已给出。程序中已定义数组:a[300],已定义变量:cnt,pjzl,pjz2.请勿改动主函数main()、读函数ReadDat。和写函数writeDat()的内容。

354voidjsValue。/・标准答案・/{intl,thou,hun,ten,data,n二〇;for(l=0;l<300;l++){thou=a[l]/1000;hun=a[l]%1000/100;ten=a[l]%100/10;data=a[l]%10;if(data-thou-hun-ten>0){cnt++;pjzl+=a[l];}else{n++;pjz2+=a[l];}}pjzl/=cnt;pjzy=n;}jsvalue(){inti,al,a2,a3,a4;for(i=0;i<300;i++){al=a[i]/1000;a2=(a[i]%1000)/100;a3=(a[i]%100)/10;a4=a[i]%10;if(a4-al-a2-a3>0){cnt++;pjzl+=a[i];}elsepjz2+=a[i];}pjzl/=cnt;pjz2/=(3OO-cnt);}原程序如下:#includeinta[300],cntニ〇;doublepjzl=0.0zpjz2=0.0;voidjsvalue(){}main()(inti;readDat();jsvalue();writeDat();printf("cnt=%d

355满足条件的平均值pzjl=%7.21f

356不满足条件的平均值pzj2=%7.21f

357"/cnt/pjzl/pjz2);}readDat()(FILE*fp;inti;fp=fopen("in.dat"/"r");for(i=0;i<300;i++)fscanf(fp/'%d/"/&a[i]);fclose(fp);}

358writeDat()(FILE*fp;inti;fp=fopen("out.dat";'w");fprintf(fp/,%d

359%7.21f

360%7.21f

361",cnt/pjzl/pjz2);fclose(fp);}81i已知数据文件IN.DAT中存有300个四位数,并ー调用读函数ReadDat()把这些数存入数组3中,请编制ー函数jsvalue(),其功能是:求出千位数上的数加百位数等于十位数上的数加个位数上的数的个数ent,再求出所有满足此条件的四位数平均值pjzl,以及不满足此条件的四位数平均值pjz2,最后调用写函数把结果输出到OUT.DAT文件。例如:7153,7+1=5+3,则该数满足条件计算平均值pjzl,且个数cnt=cnt+l,8129,8+1<>2+9,则该数不满足条件计算平均值pjz2.注意:部分源程序已给出。程序中已定义数组:a[300],已定义变量:ent请勿改动主函数main。、读函数ReadDat。和写函数writeDat。的内容。voidjsValue。/・标准答案・/{intI,thou,hun,ten,data,n二〇;for(l=0;l<300;l++){thou=a[l]/1000;hun=a[l]%1000/100;ten=a[l]%100/10;data=a[l]%10;if(thou+hun==ten+data){cnt++;pjzl+=a[l];}else{n++;pjz2+=a[l];}}pjzl/=cnt;pjz?/=n;}原程序如下:#includeinta[300]/b[300]/cnt=0;doublepjzl=O.O,pjz2=O.O;voidjsValue()(}main(){inti;readDat();jsValue();writeDat();printf("cnt=%d

362满足条件的平均值pzjl=%7.21f

363不满足条件的平均值pzj2=%7.21f

364"/cnt,pjzl/pjz2);system("pause");}readDat(){FILE*fp;inti;fp=fopen("in.dat","r");for(i=0;i<300;i++)fscanf(fp,"%d/'z&a[i]);fclose(fp);)writeDat(){FILE*fp;inti;fp=fopen(Mout.dat"/"wM);fprintf(fp,"%d

365%7.21f

366%7.21f

367”,ent,pjzl,pjz2);fclose(fp);|82:已知数据文件IN.DAT中存有300个四位数,并已调用读函数READDAT。把这些数存入数组A中.请编制ー函数SVALUE0,其功能是:求出所有这些四位数是素数的个数CNT,再求出所有满足此条件的四位数平均值PJZ1,以及不满足条件的四位数平均值PJZ2,最后调用写函数

368WRITEDATO把结果CNT,PJZ1,PJZ2输出至UOUT.DAT文件.例如:5591是素数,则该数满足条件计算平均值PJZ1,且个数CNT=CNT+1.9812是非素数,则该数不满足条件计算平均值PJZ2o注意:部分源程序已给出。程序中已定义数组:a[300],己定义变量:cnt,pjzl,pjz2.请勿改动主函数main。、读函数ReadDat。和写函数writeDat。的内容。voidjsValue。/・标准答案・/{intI;for(l=0;l<300;l++)if(isP(a[l]»{pjzl+=a[l];cnt++;}elsepjz2+=a[l];pjzl=pjzl/cnt;pjz2=pjz?/(3OO-cnt);}原程序如下:#includeinta[3OO],cnt=O;doublepjzl=O.Ozpjz2=O.O;intisP(intm)|inti;for(i=2;i

369满足条件的平均值pzjl=%7.21f

370不满足条件的平均值pzj2=%7.21f

371"/cnt/pjzl/pjz2);system("pause");)readDat()FILE*fp;inti;fp=fopen(,,in.dat,7,rH);for(i=0;i<300;i++)fscanf(fp/"%d"/&a[i]);fclose(fp);

372}writeDat()(FILE*fp;inti;fp=fopen("out.dat"/"w");fprintf(fp/'%d

373%7.21f

374%7.21f

375"/cnt/pjzl,pjz2);fclose(fp);}83:请编制函数ReadDat()实现从文件IN.DAT中读取!000个十进制整数到数组xx中;请编制函数Compute。分别计算Hlxx中奇数的个数odd,奇数的平均值avel,偶数的平均值ave2以及所有奇数的方差totfc的值,最后调用函数WriteDat()把结果输出到OUT.DAT文件中。计算方差的公式如下:totfc=1/NE(xx[i]-avel)2设N为奇数的个数,xx[i]为奇数,avel为奇数的平均值。原始数据文件存放的格式是:每行存放10个数,并用逗号隔开。(每个数均大于0且小于等于2000)注意:部分源程序已给出。请勿改动主函数main。和输出数据函数writeDat。的内容。intReadDat(void)/・标准答案・/{FILE*fp;intl,j;if((fp=fopen(""IN.DAT"",,H,r""))==NULL)return1;for(l=0;l<100;l++){for(j=0;j<10;j++)fscanf(fp,""%dド,&xx[l*10+j]);fscanf(fp,'""n"");if(feof(fp))break;}fclose(fp);return0;}voidCompute(void){intI,yy[MAX];for(l=0;l<1000;l++)if(xx[l]%2){odd++;avel+=xx[l];yy[odd-l]=xx[l];}else{even++;ave2+=xx[l];}ave]/=odd;avey=even;for(l=0;l

376if((fp=fopen("IN.DAT"/"r"))==NULL)return1;for(i=0;i

377");}voidCompute(void){inti,j,k;for(i=0;iinclude#include#defineMAX1000intxx[MAX]zodd=0zeven=0;doubleaver=0.0/totfc=0.0;voidWriteDat(void);intReadDat(void){inti;FILE*fp;if((fp=fopen("IN.DAT",,'r"))==NULL)return1;/**/fclose(fp);return0;}voidCompute(void)voidmain()(inti;for(i=0;i

378");return;

379}Compute();printf("ODD=%d

380OVEN=%d

381AVER=%lf

382TOTFC=%lf

383"/odd/even/aver/totfc);WriteDat();)voidWriteDat(void){FILE*fp;inti;fp二fopen(“〇UT.DATヴw“);fprintf(fp,"%d

384%lf

385%lf

386%lf

387,',odd,even,aver,totfc);fclose(fp);}84:对10个候选人进行选举,现有一个100条记录的选票数据文件IN.DA1:其数据存放的格式是每条记录的长度均为10位,第一位表示第一个人的选中情况,第二位表示第二个人的选中情况,依此类推:内容均为字符〇和1,1表示此人被选中,〇表示此人未被选中,若一张选票人数大于5个人时认为无效的选票.给定函数ReadDat()的功能是把选票数据读入到字符串数组xx中。请编制函数CountRs()来统计每个人的选票数并把得票数依次存入yy[〇]到yy[9]中。把结果yy输出到文件。UT.DAT中。注意:部分源程序已给出。请勿改动キ函数main。、读数据函数ReadDat。和输出数据函数writeDat。的内容。类型:选票问题。voidCountRs(void)/・标准答案,有问题!!!*/{intI,count,j;char*pf;for(l=0;l<10;l++)yy[i]=o;for(l=0;l<100;l++){pf=xx[l];count=0;while(*pf)if(*pf==,l'){count++;pf++;}elsepf++;if(count<=5){pf=xx[l];j=0;while(*pf)if(*pf=='l'){yy[j]+=l;j++;pf++;}elseif(*pf=='O'){pf++;j++;}}}}或者:voidCountRs(void){intijk;for(i=0;i<10;i++){k=0;for(j=0;j<10;j++)if(xx[i]U]=='l')k++;if(k>5)continue;for(j=0;j<10;j++)if(xx[i]U]==l')yyU]++;}}本题要求将那些选了超过5个人的选票视为无效票,在外层for()循环是用来ー张ー张选票地数。在循环内的第一个for()循环用来数一张选票中共选了几个人,第二个if()用来将选了超过5人的选票去掉。voidcountrs(void){inti,j,count;for(i=0;i<100;i++){count=0;for(j=0;j<10;j++)

388if(xx[i]U]=='r)count++;if(count>5)continue;for(j=0;j<10;j++)if(xx[i][j]=='l')yy[j]++;}}原程序如下:#includecharxx[100][ll];intyy[10];intReadDat(void);voidWriteDat(void);voidCountRs(void)voidmain(){inti;for(i=0;i<10;i++)yy[i]=0;if(ReadDat()){printf("IN.DATcan'topen!

389\007");return;}CountRs();WriteDat();system("pausen);)intReadDat(void){FILE*fp;inti;chartt[13];if((fp=fopen("in.dat"/"r"))==NULL)return1;for(i=0;i<100;i++){if(fgets(tt/13/fp)==NULL)return1;memcpy(xx[i],tt,10);xx[i][10]=0;}fclose(fp);return0;}voidWriteDat(void)(FILE*fp;inti;fp=fopen("OUT.DAT","w");for(i=0;i<10;i++){fprintf(fp,"%d

390",yy[i]);printf("NO.%dnotes=%d

391",i+l,yy[i]);|fclose(fp);}85:已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制ー函数jsVal(),其功能是:若一个四位数的个位数字上的值减去千位数字上的

392值减去百位数字上的值再减去十位数字上的值,并且此四位数是偶数,则统计出满足此条件的个数ent,并把这些四位数按从小到大的顺序存入数组b中。最后main。函数调用写函数writeDat()把结果ent以及数组b中符合条件的四位数输出到OUT.DAT文件中。注意:部分源程序存在文件PR0G1.C文件中。程序中已定义数组:a[200],b[200],已定义变量:ent请勿改动主函数main。、读函数readDat()和写函数writeDat。的内容。voidjsVal()/・标准答案・/{intI,thou,hun,ten,data,j;for(l=0;l<300;l++)/・答案有误,应为for(l=0;l=0&&a[l]%2!=l){b[cnt]=a[l];cnt++;}}for(l=0;lbU]){data=b[l];b[l]=b[j];b[j]=data;})原程序如下:#include#defineMAX200inta[MAX],b[MAX],cnt=0;voidjsVal()voidreadDat(){inti;FILE*fp;fp=fopen("in.dat","r");for(i=0;i

393”,ent);for(i=0;i

394");writeDat();system("pause");}writeDat(){FILE*fp;inti;fp=fopen("out.dat","w");

395fprintf(fp,"%d

396",ent);for(i=0;i

397”,b[i]);fclose(fp);}86:已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制ー函数jsVal(),其功能是:把千位数字和十位数字重新组成一个新的十位数ab(新十位数的十位数字是原四位数的千位数字,新十位数的个位数字是原四位数的十位数字),以及把个位数字和百位数字组成另ー个新的十位数cd(新十位数的十位数字是原四位数的个位数字,新十位数的个位数字是原四位数的百位数字),如果新组成的两个十位数ab>cd,ab必须是偶数且能被5整除,cd必须是奇数,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组b中,并要计算满足上述条件的四位数的个数ent〇最后main。函数调用写函数writeDat()把结果ent以及数组b中符合条件的四位数输出到OUT.DAT文件中。注意:部分源程序存在文件PROG1.C文件中。程序中已定义数组:a[200],b[200],已定义变量:ent请勿改动数据文件iN.DAT中的任何数据、主函数main。、读函数readDat()和写函数writeDat()voidjsVal()/・标准答案・/{intI,thou,hun,ten,data,j;intab,cd;for(l=0;l<200;l++){thou=a[l]/1000;hun=a[l]%1000/100;ten=a[l]%100/10;data=a[l]%10;ab=10*thou+ten;ed=l〇・data+hun;if((ab-ed)>0&&(ab%2!=l&&ab%5==0)&&ed%2==l&&ab!=0&&ed!=0){b[cnt]=a[l];cnt++;}}for(l=0;l#defineMAX200inta[MAX],b[MAX],ent=0;jsValf)}voidreadDat(){inti;FILE*fp;fp=fopenC'in.dat","r");for(i=0;i

398voidmain(){inti;readDat();jsVal();printf("满足条件的数:%d

399”,ent);for(i=0;i

400");writeDat();system("pause");writeDat(){FILE*fp;inti;fp=fopenC^ut.dat","w");fprintf(fp,"%d

401",ent);for(i=0;i

402",b[i]);fclose(fp);)87:已知数据文件IN.DAT中存有300个四位数,并已调用读函数ReadDat()把这些数存入数组a中,请编制ー函数jsvalue(),其功能是:求出千位数上的数加个位数等于百位数上的数加十位数上的数的个数ent,再求出所有满足此条件的四位数平均值pjzl,以及不满足此条件的四位数平均值pjz2,最后调用写函数把结果输出到OUT.DAT文件。例如:6712,6+2=7+1,则该数满足条件计算平均值pjzl,且个数cnt=cnt+l«8129,8+9<>1+2,则该数不满足条件计算平均值pjz2.注意:部分源程序己给出。程序中已定义数组:a[300],已定义变量:ent请勿改动主函数main。、读函数ReadDat。和写函数writeDat。的内容。voidjsValue〇/・标准答案・/{intl,n=0,thou,hun,ten,data;for(l=0;l<300;l++){thou=a[l]/1000;hun=a[l]%1000/100;ten=a[l]%100/10;data=a[l]%10;if(thou+data==hun+ten){cnt++;pjzl+=a[l];}else{n++;pjz2+=a[l];}pjzl/=cnt;pjz〃ニn;)原程序如下:includeinta[300],b[300]zcnt=0;doublepjzl=O.O,pjz2=O.O;jsValue()(}main(){inti;

403readDat();jsValue();writeDat();printf("cnt=%d

404满足条件的平均值pzjl=%7.21f

405不满足条件的平均值pzj2=%7.21f

406"zcntzpjzlzpjz2);system("pause");}readDat(){FILE*fp;inti;fp=fopen("in.dat,7'r");for(i=O;i<3OO;i++)fscanf(fpz"%dz"z&a[i]);fclose(fp);}writeDat(){FILE*fp;inti;fp=fopen("out.dat"z"w");fprintf(fpz"%d

407%7.21f

408%7.21f

409"zcntzpjzlzpjz2);fclose(fp);}88:函数READDAT()实现从文件IN.DAT中读取ー篇英文文章存入到字符串数组XX中;请编制函数SORTCHARA0,其函数功能是:以行为单位对字符按从小到大的顺序进行排序,排序后的结果仍按行重新存入字符串数组XX屮,最后调用函数WRITEDAT()把结果XX输出到文件。UT1.DAT.例源文:dAe,BfC.CCbbAA结果:,.ABCdefAACCbb原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。注意:部分源程序存放在PR0G1.C中。请勿改动主函数main()、读数据函数ReadDat。和输屮।数据函数WriteDat。的内容。类型:字符串(单词)的倒置和删除。voidConvertCharA(void)/・标准答案・/{intl,j,k,strl;charch;for(l=0;lxx[l][k]){ch=xx[l][j];xx[l][j]=xx[l][k];xx[l][k]=ch;}})原程序如下:

410#include#include#includecharxx[50][80];intmaxline=0;/・文章的总行数・/intReadDat(void);voidWriteDat(void);voidConvertCharA(void)()voidmain(){clrscr();if(ReadDat()){printぐ数据文件IN,DAT不能打开!'n'007”);return;)ConvertCharA();WriteDat();system("pause");)intReadDat(void){FILE*fp;inti=0;char*p;if((fp=fopenClN.DAT","r**))==NULL)return1;while(fgets(xx[i],80,fp)!=NULL){p=strchr(xx[i],'

411');if(p)*p=0;i++;maxline=i;fclose(fp);return0;}voidWriteDat(void)FILE*fp;inti;clrscr();fp=fopenC'OUTl.DAT","w");for(i=0;i

412"zxx[i]);fprintf(fp,"%s

413”,xx[i]);}fclose(fp);}89:已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat。把这些数存入数组a中,请考生编制ー函数jsVal(),其功能是:若一个四位数的千位数字上的值加上个位数字上的值等于百位数字上的值加上十位数字上的值,并且此四位数是奇数,则统计出满足此条件的个数ent,并把这些四位数按从小到大的顺序存入数组b中。最后main()函数调用写函数writeDat()把结果ent以及数组b中符合条件的四位数输出到OUT.DAT文件中。注意:部分源程序存在文件PROG1.C文件中。

414程序中已定义数组:a[200],b[200],已定义变量:ent请勿改动主函数main()、读函数readDat。和写函数writeDat。的内容。voidjsVal〇/・标准答案・/{intI,thou,hun,ten,data,j;for(l=0;lb[j]){data=b[l];b[l]=b[j];b[j]=data;}|原程序如下:#include#defineMAX200inta[MAX],b[MAX],ent=0;voidjsVal()voidreadDat(){inti;FILE*fp;fp=fopen("in.dat"z"r");for(i=0;i

415”,ent);for(i=0;i

416");writeDat();system("pause");)writeDat(){FILE*fp;inti;fp=fopen("out.dat","w");fprintf(fp,"%d

417",ent);for(i=0;i

418",b[i]);fclose(fp);

419}90:下列程序的功能是:将一正整数序列{K1,K2,…,K9}重新排列成一个新的序列。新序列中,比K1小的数都在K1的左面(后继的再向U左存放),比K1大的数都在K1的右面(后续的再向右存放),从k!想右扫描。要求编写函数jsvalue()实现此功能,最后调用writeDat()函数所新序列输出到文件。ut.dat中。说明:在程序中」给出了10个序列,每个序列有9个正整数,并存入数组a[10][9]中,分别求出这10个新序列。例:序歹リ{6,8,9,1,2,5,4,7,3}经重排后成为{3,4,5,2,1,6,8,9,7}注意:部分源程序已给出。请勿改动主函数main()和写函数writeDat。的内容。jsValue(inta[10][9])/・标准答案・/{intvalue,Lj,k,num;for(l=0;l<10;l++){value=a[l][0];for(j=0;j<9;j++)if(a[l][j]0;k--){num=a[l][j];for(k=j;k>0;k-)a[l][k]=a[l][k-l];a[l][O]=num;}})}或者:jsvalue(inta[10][9]){inti,j,k,m,c,b[10][9];for(i=0;i<10;i++)for(j=0;j<9;j++)b[i][j]=a[i][j];for(i=0;i<10;i++){k=b[i][0];for(j=l;j<9;j++)if(b[i][j]0;m—)a[i][m]=a[i][m-l];a[i][0]=c;}}}原程序如下:#includejsvalue(inta[10][9]){}main(){inta[10][9]={{6,8,9,l,2,5,4,7,3},

420{3,5,8,9,1,2,6,4,7},{8,2,1,93,5,4,6,7),(3,5,1,2,9,8,6,7,4},{4,7,8,94,2,5,3,6},{4,7,3,54,2,6,8,9},{94,3,5,8,6,2,4,7},{2,64,9,8,3,5,7,4},{5,3,7,94,8,2,6,4),{74,3,2,5,8,9,4,6},);inti,j;jsvalue(a);for(i=0;i<10;i++){for(j=0;j<9;j++){printf(”%d”,a[i][j]);if(j<=乃printf");}printf("

421");}writeDat(a);}writeDat(inta[10][9]){FILE*fp;intij;fp=fopen("out.dat"/"w");for(i=0;i<10;i++){for(j=0;j<9;j++){fprintf(fpj%d"ai皿);if(j<=7)fprintf(fp;7');}fprintf(fp;'

422");}fclose(fp);system("pause");}91:请编制程序,从文件in.dat中读取200个整数至数组xx中,求出奇数的个数cntl和偶数的个数cnt2以及数组xx值为偶数的元素值的算术平均值pj(保留2位小数)。结果cntl,cnt2,pj输出到out.dat中。部分程序、读数据函数read_dat(intxx[200])及输出格式已给出。for(l=0,j=0,cntl=0,cnt2=0;l#include#defineN200voidread_dat(intxx[N]){inti,j;

423FILE*fp;fp二fopen(”in.datヴビ);for(i=0;i<20;i++){for(j=0;j<10;j++){fscanf(fp;'%d/"/&xx[i*10+j]);printf("%d"/xx[i*10+j]);}printf("

424");}fclose(fp);}voidmain(){intcntl,cnt2/xx[N]J;floatpj;FILE*fw;fw=fopen("out.dat";(w");clrscr();read_dat(xx);/・请补充…*/printf("

425

426cntl=%d,cnt2=%d/pj=%6.2f

427"/cntl/cnt2/pj);fprintf(fw,"%d

428%d

429%6.2f

430"/cntl/cnt2/pj);fclose(fw);|92;请编制程序,从文件in.dat中读取200个整数至数组xx中,求出最大数max及最大数的个数ent和数组xx中值能被3整除或能被7整除的算求增均值pj(保留2位小数)。结果cntl,cnt2,pj输出到out.dat中。部分程序、读数据函数read_dat(intxx[200])及输出格式已给出。max=xx[0];/・标准答案・/for(l=l/k=0;lmax)max=xx[l];if(xx[l]%3==0||xx[l]%7==0){j+=xx[l];k++;)}for(l=0/cnt=0;linclude#defineN200voidread_dat(intxx[N]){intij;FILE*fp;fp=fopen("in.dat"/"r");for(i=0;i<20;i++){

431for(j=0;j<10;j++){fscanf(fp;'%d/"/&xx[i*10+j]);printf("%d"/xx[i*10+j]);}printf("

432H);}fclose(fp);}voidmain(){intcntl/cnt2/xx[N]/i;floatpj;FILE*fw;fw=fopen(,,out.dat";'w");clrscr();read_dat(xx);/・请补充…*/printf("

433

434cntl=%d,cnt2=%d,pj=%6.2f

435",cntl,cnt2,pj);fprintf(fw,"%d

436%cl

437%6.2f

438",cntl,cnt2/pj);fclose(fw);}93:请编制函数ReadDat()实现从文件IN.DAT中读取!000个十进制整数到数组xx中;再编制函数COMPUTE。分别计算出XX中奇数的个数〇DD,偶数的个数EVEN,平均值AVER以及方差TOTFE的值,最后调用函数WriteDat()把结果输出到。UT.DAT文件中。计算方差的公式如下:totfc=l/NL(xx[i]-avel)2设N为奇数的个数,xx川为奇数,avel为奇数的平均值。原始数据文件存放的格式是:每行存放!0个数,并用逗号隔开。(每个数均大于0且小于等于2000)注意:部分源程序已给出。请勿改动主函数main()和输出数据函数writeDat。的内容。intReadDat(void)/・标准答案・/intReadDat(void){FILE*fp;intIJ;if((fp=fopen(""IN.DAT""/""r""))==NULL)return1;for(l=0;l<100;l++){for(j=0;j<10;j++)fscanf(fp,&xx[l*10+j]);fscanf(fp,"'"n"");if(feof(fp))break;}fclose(fp);return0;}voidCompute(void){intI;for(l=0;l<1000;l++)

439{if(xx[l]%2)odd++;}else{even++;aver=aver+xx[l];}}aver/=even;for(l=0;l<1000;l++)totfc+=(xx[l]-aver)*(xx[l]-aver)/MAX;}或者:intReadDat(void){inti;FILE*fp;if((fp=fopen("IN.DAT"/"rH))==NULL)return1;for(i=0;i

440");}fclose(fp);return0;)voidCompute(void){inti;for(i=0;i#include#include#defineMAX1000intxx[MAX]/odd=0/even=0;doubleaver=0.0ztotfc=0.0;voidWriteDat(void);intReadDat(void){inti;FILE*fp;if((fp=fopen("IN.DAT"/"r"))==NULL)return1;/*ツfclose(fp);

441return0;}voidCompute(void)voidmain()(inti;for(i=0;i

442OVEN=%d

443AVER=%lf

444TOTFC=%lf

445"zodd/even/aver/totfc);WriteDat();}voidWriteDat(void){FILE*fp;inti;fp=fopen("OUT.DAr/"w");fprintf(fp,"%d

446%lf

447%lf

448%lf

449”,odd,even,aver,totfc);fclose(fp);}94:请编制程序,从文件in.dat中读取200个整数至数组xx中,求出奇数的个数cntl和偶数的个数cnt2以及数组xx值为偶数的元素值的算术平均值pj(保留2位小数)。结果cntl,cnt2,pj输出至リout.dat中。部分程序、读数据函数read_dat(intxx[200])及输出格式已给出。for(l=0,j=0,cntl=0,cnt2=0;l#include#defineN200voidread_dat(intxx[N]){intij;FILE*fp;fp=fopen("in.dat";'r");for(i=0;i<20;i++){for(j=0;j<10;j++){

450fscanf(fp;'%d/"/&xx[i*10+j]);printf("%d"zxx[i*10+j]);}printf("

451H);}fclose(fp);}voidmain(){intcntl/cnt2,xx[N],i;floatpj;FILE*fw;fw=fopen("out.dat"/"w");clrscr();read__dat(xx);/*请补充…*/printf(,,

452

453cntl=%d/cnt2=%d/pj=%6.2f

454"/cntl/cnt2/pj);fprintf(fw,"%d

455%d

456%6.2f

457H/cntl/cnt2/pj);fclose(fw);)95:函数ReadDat()实现从文件ENG.IN中读取ー篇英文文章,存入到字符串数组xx中:请编制函数encryptChar。,按给定的替代关系对数组xx中的所有字符进行替代,仍存入数组xx的对应的位置上,最后调用函数WriteDat()把结果xx输出到文件PS4.DAT中。替代关系:f(p)=p*13mod256(p是数组中某ー个字符的ASCI!值,f(p)是计算后新字符的ASCI!值),如果计算后f(p)值小于等于32或其ASCI!值是偶数,则该字符不变,否则将f(p)所对应的字符进行替代。注意:部分源程序已给出。原始数据文件存放的格式是:每行的宽度均小于80个字符。请勿改动主函数main。、读数据函数ReadDat。和输出।数据函数WriteDat。的内容。voidencryptChar〇ノ・标准答案・/{intI;char*pf;for(l=0;l='A,&&*pf*ll%256<='Z,)||*pf*ll%256<=32){pf++;continue;}*pf=*pf*ll%256;pf++;})|或者:voidencryptChar(){intij;char*p;for(i=0;i='A'&&p<='Z,))/

458elsexx[i][j]=p;}}或者:voidencryptChar(){intij,t;for(i=0;i="A'&&t<='Z*))continue;xx[i]U]=t;}}|原程序如下:#include#include#include#includeunsignedcharxx[50][80];intmaxline=O;/・文章的总行数・/intReadDat(void);voidWriteDat(void);voidencryptChar()(}voidmain(){clrscr();if(ReadDat()){printf("数据文件ENG.IN不能打开!

459\007");return;}encryptChar();WriteDat();system("pauseH);}intReadDat(void)|FILE*fp;inti=0;unsignedchar*p;if((fp=fopen("eng.in"7'r"))==NULL)return1;while(fgets(xx[i],80,fp)!=NULL){p=strchr(xx[i]/

460');if(p)*p=O;i++;

461}maxline=i;fclose(fp);return0;}voidWriteDat(void)(FILE*fp;inti;fp=fopen("ps4.dat";,w");for(i=0;i

462”,xx[i]);fprintf(fp,"%s

463”,xx[i]);}fclose(fp);)96:函数ReadDat()实现从文件ENG.IN中读取一篇英文文章,存入到字符串数组xx中;请编制函数encryptChar。,按给定的替代关系对数组xx中的所有字符进行替代,仍存入数组xx的对应的位置匕最后调用函数WriteDat()把结果xx输出到文件PS8.DAT中。替代关系:f(p)=p*llmod256(p是数组中某ー个字符的ASCI!值,f(p)是计算后新字符的ASCI!值),如果原字符是小写字母或计算后f(p)值小于等于32,则该字符不变,否则将セp)所对应的字符进行替代。注意:部分源程序已给出。原始数据文件存放的格式是:每行的宽度均小于80个字符。请勿改动主函数main。、读数据函数ReadDat()和输出数据函数WriteDat。的内容。voidencryptChar。/・标准答案・/{intI;char*pf;for(l=0;l=,a'&&*pf<=,z,)11*pf*ll%256<=32){pf++;continue;}*pf=*pf*ll%256;pf++;})}或者:voidencryptChar(){inti,j,t;for(i=0;i='a'&&xx[i][j]<="z'))continue;xx[i][j]=t;}}

464)原程序如下:#include#include#include#includeunsignedcharxx[50][80];intmaxline=0;/・文章的总行数・/intReadDat(void);voidWriteDat(void);voidencryptChar()voidmain()(clrscr();if(ReadDat()){printf("数据文件ENG.IN不能打开!

465\007");return;}encryptChar();WriteDat();system("pause");|intReadDat(void)(FILE*fp;inti=O;unsignedchar*p;if((fp=fopen("eng.in"7'r"))==NULL)return1;while(fgets(xx[i],80,fp)!=NULL){p=strchr(xx[i]/

466l);if(p)*p=O;i++;}maxline=i;fclose(fp);return0;|voidWriteDat(void)(FILE*fp;inti;

467fp=fopen("ps8.dat";,w");for(i=0;i

468“,xx[i]);fprintf(fp,"%s

469”,xx[i]);}fclose(fp);|97:函数ReadDat()实现从文件ENG.IN中读取一篇英文文章,存入到字符串数组xx中;请编制函数encryptChar(),按给定的替代关系对数组xx中的所有字符进行替代,仍存入数组xx的对应的位置上,最后调用函数WriteDat()把结果xx输出到文件PS8.DAT中。替代关系:f(p)=p*llmod256(p是数组中某ー个字符的ASCI!值,f(p)是计算后新字符的ASCII值),如果原字符是数字字符0至9或计算后f(p)值小于等于32,则该字符不变,否则将f(p)所对应的字符进行替代。注意:部分源程序已给出。原始数据文件存放的格式是:每行的宽度均小于80个字符。请勿改动主函数main。、读数据函数ReadDat。和输出数据函数WriteDat()的内容。voidencryptChar。/・标准答案・/{intI;char*pf;for(l=0;l='0,&&*pf<='9,)11*pf*ll%256<=32){pf++;continue;}*pf=*pf*ll%256;pf++;})}或者:voidencryptChar(){inti,j,t;for(i=0;i='0'&&xx[i][j]<='9'))continue;xx[i][j]=t;}}}原程序如下:#include#include#include#includeunsignedcharxx[50][80];

470intmaxline=0;/・文章的总行数・/intReadDat(void);voidWriteDat(void);voidencryptChar()(}voidmain()clrscr();if(ReadDat()){printf("数据文件ENG.IN不能打开!'n\007");return;}encryptChar();WriteDat();system("pause");}intReadDat(void){FILE*fp;inti=O;unsignedchar*p;if((fp=fopen("eng.in"/'r"))==NULL)return1;while(fgets(xx[i]/80,fp)!=NULL){p=strchr(xx[i]/

471');if(P)*P=O;i++;}maxline=i;fclose(fp);return0;}voidWriteDat(void)(FILE*fp;inti;fp=fopen("ps9.dat",,,w'');for(i=0;i

472”,xx[i]);fprintf(fp,"%s

473,xx[i]);}fclose(fp);}98:函数ReadDat()实现从文件ENG.IN中读取一篇英文文章,存入到字符串数组xx中:请编制

474函数encryptChar(),按给定的替代关系对数组xx中的所有字符进行替代,仍存入数组xx的对应的位置上,最后调用函数WriteDat()把结果xx输出到文件PS3.DAT中。替代关系:f(p)=p*17mod256(p是数组中某ー个字符的ASCI!值,f(p)是计算后新字符的ASCII值),如果计算后f(p)值小于等于32或其ASCII值是奇数,则该字符不变,否则将f(p)所对应的字符进行替代。注意:部分源程序已给出。原始数据文件存放的格式是:每行的宽度均小于80个字符。请勿改动主函数main。、读数据函数ReadDat()和输出数据函数WriteDat。的内容。voidencryptChar()/・标准答案,有问题!!!*/{intI;char*pf;for(l=0;l#include#include

475#includeunsignedcharxx[50][80];intmaxlineニ〇;/・文章的总行数・/intReadDat(void);voidWriteDat(void);voidencryptChar()voidmain(){clrscr();if(ReadDat()){printf("数据文件ENG.IN不能打开!'n\OO7");return;}encryptChar();WriteDat();system("pause");|intReadDat(void)(FILE*fp;inti=O;unsignedchar*p;if((fp=fopen("eng.in"7'r"))==NULL)return1;while(fgets(xx[i]/80/fp)!=NULL){p=strchr(xx[i]/

476');if(p)*p=O;i++;}maxline=i;fclose(fp);return0;}voidWriteDat(void){FILE*fp;inti;fp=fopen("ps3.dat","w");for(i=0;i

477",xx[i]);fprintf(fp,"%s

478",xx[i]);}fclose(fp);

479|99:已知在文件!N.DAT中存有!00个产品销售记录,每个产品销售记录山产品代码dm(字符型4位),产品名称me(字符型!0位),单价dj(整型),数量si(整型),金额je(长整型)四部分组成。其中:金额=单价・数量计算得出。函数ReadDat()是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按金额从小到大进行排列,若金额相等,则按产品代码从小到大进行排列最终排列结果仍存入结构数组sel!中,最后调用函数WriteDat。把结果输出到文件OUT1.DAT中。注意:部分源程序存放在PR0G1.C中。请勿改动主函数main(读数据函数ReadDat。和输出数据函数WriteDat。的内容。voidSortDat〇/・标准答案・/{intIJ;PROxy;for(l=0;l<99;l++)for(j=l+l;j<100;j++)if(sell[l].je>sell[j].je){xy=sell[l];sell[l]=sell[j];sell[j]=xy;}elseif(sell[l].je==sell[j].je)if(strcmp(sell[l].dm,sell[j].dm)>O){xy=sell[l];sell[l]=sell[j];sell[j]=xy;})原程序如下:#include#include#include#include#include#defineMAX100typedefstruct{chardm[5];/・产品代码・/char产品名称・/intdj;/*单价*/intsi;/*数量*/longje;/・金额・/}PRO;PROsell[MAX];voidReadDat();voidWriteDat();voidSortDat()()voidmain(){memset(sell,0,sizeof(sell));ReadDat();SortDat();WriteDat();}voidReadDat(){FILE*fp;charstr[80],ch[ll];inti;fp=fopen(,,IN.DAT"/"r");for(i=0;i<100;i++){fgets(str,80,fp);memcpy(sell[i].dm/str/4);memcpy(sell[i].mc,str+4,10);memcpy(ch,str+14,4);ch[4]=0;sell[i].dj=atoi(ch);memcpy(ch,str+18,5);ch[5]=0;sell[i].sl=atoi(ch);sell[i].je=(long)sell[i].dj*sell[i].sl;}fclose(fp);}voidWriteDat(void){FILE*fp;inti;fp=fopen("OUTl.DAT"z"w");for(i=0;i<100;i++){fprintf(fp,"%s%s%4d%5d%101d

480",sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je);}fclose(fp);}100:函数READDAT()实现从文件IN.DAT中读取篇英文文章存入到字符串数组XX中;请编制函数CHA(),其函数功能是:以行为单位把字符串中的最后一个字符的ASCI!值右移4位后加最后第二个字符的ASCII值,得到最后ー个新的字符,最后第二个字符的ASCI1值右移4位后加最后第三个字符的ASCII值,得到最后第二个新的字符,依此类推一直处理到第二个字符,第一个字符的ASCII值加原最后ー个字符的ASCII值,得到第一个新的字符,得到的新字符分别存放在原字符串

481对应的位置上。最后已处理的字符串仍按行重新存入字符串数组xx中,最后调用函数writeDat()把结果xx输出到文件OUT10.DAT中。原始数据文件存放的格式是:每行的寛度均小于80个字符,含标点符号和空格。注意:部分源程序已给出。请勿改动主函数main。、读数据函数ReadDat()和输出数据函数writeDat()的内容。voidCharConvA(void)/・标准答案・/{intbhstrl;charch;for(l=0;l0;j-){xx[l][j]»=4;xx[l][j]+=xx[l][j-l];}xx[l][0]+=ch;}voidCharConvA(void){intij;charp,c;for(i=0;i0;j-)xx[i][j]=(xx[i][j]»4)+xx[i][j-l];xx[i][0]=p+c;}}原程序如下:#include#includeincludecharxx[50][80];intmaxline=0;/・文章的总行数・/intReadDat(void);voidWriteDat(void);voidCharConvA(void)(}voidmain()(clrscr();if(ReadDat()){printf("数据文件IN.DAT不能打开!'n\00ア・);return;}CharConvA();WriteDat();)

482intReadDat(void){FILE*fp;inti=0;char*p;if((fp=fopenf^N.DAT","r"))==NULL)return1;while(fgets(xx[i],80,fp)!=NULL){p=strchr(xx[i],'

483');if(P)*P=O;i++;)maxline=i;fclose(fp);return0;)voidWriteDat(void)(FILE*fp;inti;clrscr();fp=fopen("OUT10.DAT,\"w");for(i=0;i

484ツxx[i]);fprintf(fpj%s

485”,xx[i]);}fclose(fp);}PDF文件以,TinePrintpdfFactoryPro"

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
最近更新
更多
大家都在看
近期热门
关闭