全国计算机等级考试三级C语言上机100题

全国计算机等级考试三级C语言上机100题

ID:83018218

大小:153.86 KB

页数:141页

时间:2023-09-19

上传者:灯火阑珊2019
全国计算机等级考试三级C语言上机100题_第1页
全国计算机等级考试三级C语言上机100题_第2页
全国计算机等级考试三级C语言上机100题_第3页
全国计算机等级考试三级C语言上机100题_第4页
全国计算机等级考试三级C语言上机100题_第5页
全国计算机等级考试三级C语言上机100题_第6页
全国计算机等级考试三级C语言上机100题_第7页
全国计算机等级考试三级C语言上机100题_第8页
全国计算机等级考试三级C语言上机100题_第9页
全国计算机等级考试三级C语言上机100题_第10页
资源描述:

《全国计算机等级考试三级C语言上机100题》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

全国计算机等级考试三级C语言上机100题☆题目1请编写一个函数jsValue(intm,intk,intxx[D,该函数的功能是:将大于整数m且紧靠m的k个素数存入数组xx传回。最后调用函数writeDat()读取10组数据,分别得出结果且把结果输出到文件out.dat中。部分源程序存在文件progl.c中。例如:若输入175则应输出:19,23,29,31,37。请勿改动主函数main。和写函数writeDat。的内容.#include#includevoidreadwriteDat();intisP(intm)(inti;for(i=2;i0;m++)if(isP(m)){xx[s++]=m;k—;})main()(intm,n,xx[1000];clrscr();printf("

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

2”);readwriteDat();}voidreadwriteDat()(intm,n,xx[1000],i;FILE*rf,*wf;rf=fopen(',in.dat',,"rn);

3wf=fopen(,'out.datH,Mwn);for(i=0;i<10;i++){fscanf(rf,M%d%d”,&m,&n);num(m,n,xx);for(m=0;m)fclose(rf);fclose(wf);☆题目2已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:如果四位数各位上的数字均是0或2或4或6或8,则统计出满足此条件的个数ent,并把这些四位数按从大到小的顺序存入数组b中。最后main()函数调用写函数writeDat。把结果ent以及数组b中符合条件的四位数输出到OUT.DAT文件中。注意:部分源程序存在文件progl.c中。程序中已定义数组:a[200],b[200],已定义变量:ent请勿改动数据文件IN.DAT中的任何数据、主函数main。、读函数readDat。和写函数writeDat()的内容。#include#defineMAX200inta[MAX],b[MAX],ent=0;voidjsValO{inti,j,qw,bw,sw,gw;for(i=0;i

4voidmain()[inti;readDat();jsVal();printf("满足条件的数=%d

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

6H);writeDat();)writeDat()(FILE*fp;inti;fp=fopen("out.datM,''w'');fprintf(fp,"%d

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

8",b[i]);fclose(fp);★题目3函数ReadDat()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中;请编制函数StrOR(),其函数的功能是:以行为单位依次把字符串中所有小写字母。左边的字符串内容移到该串的右边存放,然后把小写字母。删除,余下的字符串内容移到已处理字符串的左边存放,之后把已处理的字符串仍按行重新存入字符串数组xx中。最后main。函数调用函数WriteDat。把结果xx输出到文件OUT5.DAT中。原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。注意:部分源程序存放在文件progl.c中。请勿改动主函数main。、读数据函数ReadDat。和输出数据函数WriteDat。的内容。#include#include#includecharxx[5O][8O];intmaxline=0;/*文章的总行数*/intReadDat(void);voidWriteDat(void);voidStrOR(void)

9{inti,rightoj,s,k;chartem[80];for(i=0;ifor(j=strlen(xx[i])-l;j>=O;j-){k=0;memset(tem,0,80);if(xx[i][j]=='o'){righto=j;for(s=righto+1;stem[k++]=xx[i][s];for(s=0;sif(xx[i][s]!='o')tem[k++]=xx[i][s];strcpy(xx[i],tem);)elsecontinue;voidmain()(clrscr();if(ReadDat()){printf("数据文件IN.DAT不能打开!

10\007");return;}StrOR();WriteDat();)intReadDat(void)[HLE*fp;inti=0;char*p;if((fp=fopen("IN.DATn,V))==NULL)return1;while(fgets(xx[i],80,fp)!=NULL){p=strchr(xx[i],'

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

12FILE*fp;inti;clrscr();fp=fopen("OUT5.DAT“,“w“);for(i=0;i

13\xx[ij);fprintf(fp,M%s

14n,xx[i]);)fclose(fp);★题目4函数ReadDat。实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中,请编制函数StrOL(),其函数的功能是:以行为单位对行中以空格或标点符号为分隔的所有单词进行倒排。最后把已处理的字符串(应不含标点符号)仍按行重新存入字符串数组xx中,最后调用函数writeDat。把结果xx输出到文件OUT6.DAT中。例如:原文:YouHeMeIamastudent.结果:MeHeYoustudentaamI原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。部分源程序存在文件progLc中。请勿改动主函数main。、读数据函数ReadDat。和输出数据函数writeDat。的内容。#include#include#include#includecharxx[5O][8O];intmaxline=0;/*文章的总行数*/intReadDat(void);voidWriteDat(void);voidStrOL(void){inti,j,k,s,m,strl;charstr[8O];for(i=0;i=O;j-){if(isalpha(xx[i][j]))k++;else{fbr(m=1;m<=k;m++)

15str[s++]=xx[i][j+m];k=0;}if(!isalpha(xx[i][j]))str[s++]=**;}for(m=1;m<=k;m++)str[s++]=xx[i]|j+m];str[s]=W;strcpy(xx[i],str);})voidmain()(clrscr();if(ReadDat()){printf("数据文件IN.DAT不能打开!

16\007");return;}StrOL();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],,

17,);if(p)*p=O;i++;)maxline=i;fclose(fp);return0;}voidWriteDat(void)[FILE*fp;inti;

18clrscr();fp=fopen(,,OUT6.DAT","wn);for(i=0;i

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

20M,xx[i]);}fclose(fp);☆题目5在文件in.dat中有200个正整数,且每个数均在1000至9999之间。函数ReadDat()读取这200个数存放到数组aa中。请编制函数jsSort。,其函数的功能是:要求按每个数的后三位的大小进行升序排列,然后取出满足此条件的前10个数依次存入数组bb中,如果后三位的数值相等,则按原先的数值进行降序排列。最后调用函数WriteDat。把结果bb输出到文件out.dat中。例:处理前60125099901270258088处理后90126012702580885099部分源程序存在文件progl.c中。请勿改动主函数main。、读数据函数ReadDat。和输出数据函数WriteDat。的内容。#include#include#includeintaa[200],bb[10];voidjsSort()inti,j,data;for(i=0;i<199;i++)for(j=i+l;j<200;j++)if(aa[i]%1000>aa[j]%1000llaa[i]%lOOO==aa[j]%1000&&aa[i]fdr(i=O;i<10;i++)bb[i]=aa[i];)voidmain()(readDat();jsSort();writeDat();)readDat()(FILE*in;inti;

21in=fopen(Min.dat,';'rM);for(i=0;i<200;i++)fscanf(in,n%d;',&aa[i]);fclose(in);}writeDat()(FILE*out;inti;clrscr();out=fopen(,'out.dat,',"w");for(i=0;i<10;i++){printf(n%d\bb[i]);fprintf(out,M%d

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

23}voidmain()(readDat();jsSort();writeDat();system("pause");)readDat()(FILE*in;inti;in=fopen("in.dat,,,',r,');for(i=0;i<200;i++)fscanf(in/'%d,'f,&aa[i]);fclose(in);)writeDat()inti;clrscr();out=fopen(Mout.datM,MwM);for(i=0;i<10;i++){printf(ui=%d,%d

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

25",bb[i]);)fclose(out);☆题目7已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称me(字符型10位),单价dj(整型),数量si(整型),金额je(长整型)五部分组成。其中:金额=单价*数量计算得出。函数ReadDat。是读取这100个销售记录并存入结构数组sell中。请编制函数SortDatO,其功能要求:按产品代码从大到小进行排列,若产品代码相同,则按金额从大到小进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat。把结果输出到文件OUT6.DAT中。部分源程序存在文件progl.c中。请勿改动主函数main。、读数据函数ReadDat。和输出数据函数WriteDat。的内容。#include#include#include

26#include#include#defineMAX100typedefstruct{chardm[5];/*产品代码*/char产品名称*/intdj;/*单价*/intsi;/*数量*/longje;金额}PRO;PROsell[MAX];voidReadDat();voidWriteDat();voidSortDat(){intij;PROxy;for(i=0;i<99;i++)for(j=i+1;j<100;j++)if(strcmp(sellfi].dm,sell[j].dm)

27memcpy(ch,str+l4,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(nOUT6.DAT";'wn);for(i=0;i<100;i++){printf(n%s%s%4d%5d%5d

28M,sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je);fprintf(fp,n%s%s%4d%5d%5d

29M,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是数组中某一个字符的ASCH值,f(p)是计算后新字符的ASCII值),如果计算后f(p)值小于等于32或大于130,则该字符不变,否则将f(p)所对应的字符进行替代。(注意中间变量用无符号整型),部分源程序存在文件progl.c中。原始数据文件存放的格式是:每行的宽度均小于80个字符。请勿改动主函数main。、读数据函数ReadDat。和输出数据函数WriteDat。的内容。#include#include#include#includeunsignedcharxx[50][80];intmaxline=0;/*文章的总行数*/intReadDat(void);voidWriteDat(void);voidencryptChar(){inti,j;for(i=0;i130)continue;

30elsexx[i]|j]=xx[i][j]*ll%256;voidmain()(clrscr();if(ReadDat()){printf("数据文件ENGIN不能打开!

31\007M);return;)encryptChar();WriteDat();intReadDat(void)FILE*fp;inti=0;unsignedchar*p;if((fp=fopen(,,eng.inM,,,r,,))==NULL)return1;while(fgets(xx[i],80,fp)!=NULL){p=strchr(xx[ij,,

32,);if(p)*p=O;i++;}maxline=i;fclose(fp);return0;)voidWriteDat(void)(FILE*fp;inti;fp=fopen("ps1for(i=0;i

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

34”,xx[i]);}fclose(fp);★☆题目9

35函数ReadDal。实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中,请编制函数SortCharDO,其函数的功能是:以行为单位对字符按从大到小的顺序进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数writeDat。把结果xx输出到文件OUT2.DAT中。例:原文:dAe,BfC.CCbbAA结果:fedCBA.bbCCAA原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。部分源程序存在文件progLc中。请勿改动主函数main。、读数据函数ReadDat。和输出数据函数writeDat。的内容。#include#include#includecharxx[50][80];intmaxline=O;/*文章的总行数*/intReadDat(void);voidWriteDat(void);voidSortCharD(void){inti,j,k,strl;charch;for(i=0;i

36\007");return;)SortCharD();WriteDat();}

37intReadDat(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],

38,);if(p)*p=O;i++;maxline=i;fclose(fp);return0;)voidWriteDat(void)[FILE*fp;inti;fp=fopen(”OUT2.DAT”,W);for(i=0;i

39\xx[i]);fprinlf(fp,"%s

40”,xx[i]);)fclose(fp);★☆题目10函数ReadDat。实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中,请编制函数ConvertCharA(),其函数的功能是:以行为单位把字符串中的所有小写字母改写成该字母的下一个字母,如果是字母z,则改写成字母a。大写字母仍为大写字母,小写字母仍为小写字母,其他字符不变。把己处理的字符串仍按行重新存入字符串数组xx中,最后调用函数writeDat。把结果xx输出到文件OUT1.DAT中。例:原文:Adb.Bcdzaabck.LLhj结果:Aec.Bdeabbcdl.LLik原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。部分源程序存在文件progl.c中。请勿改动主函数main。、读数据函数ReadDat。和输出数据函数writeDat。的内容。#include#include

41#includecharxx[50][80];intmaxline=0;/*文章的总行数*/intReadDat(void);voidWriteDat(void);voidConvertCharA(void){inti,j;for(i=0;i=,a,&&xx[i][j]<=y)xx[ij|j]+=l;voidmain()(clrscr();if(ReadDat()){printf("数据文件IN.DAT不能打开!

42\007)return;)ConvertCharA();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],,

43,);if(p)*p=O;i++;}maxline=i;fclose(fp);return0;)voidWriteDat(void)

44[FILE*fp;inti;clrscr();fp=fopen(HOUT1.DAT";'wu);for(i=0;i

45\xx[i]);fprintf(fp,',%s

46M,xx[i]);}fclose(fp);)☆题目11程序progl.c的功能是:把s字符串中的所有字母改写成该字母的下一个字母,字母z改写成字母a。要求大写字母仍为大写字母,小写字母仍为小写字母,其它字符不做改变。请考生编写函数chg(char*s)实现程序要求,最后调用函数readwriteDAT()把结果输出到文件be1.out中。例如:s字符串中原有的内容为:Mn.l23Zxy,则调用该函数后,结果为:No.l23Ayzo注意:部分源程序存在文件progl.c文件中。请勿改动主函数main()和输出数据函数readwriteDAT()的内容。#include#include#include#include#defineN81voidreadwriteDAT();voidchg(char*s){intI;for(I=0;I=(a'&&s[i]<=yils[i]>=,A,&&s[i]<='Y,)s[i]+=l;}main()(chara[N];clrscr();printf("Enterastring:");gets(a);printf("Theoriginalstringis:");puts(a);chg(a);printf(nThestringaftermodified:");puts(a);readwriteDAT();}voidreadwriteDAT()(

47inti;chara[N];FILE*rf,*wf;rf=fopen("bcl.inH,"r");wf=fopen(nbcl.outM,"wH);for(i=0;i<50;i++){fscanf(rf,”%s”,a);chg(a);fprintf(wf,n%s

48M,a);)fclose(rf);fclose(w0;★☆题目12已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称me(字符型10位),单价dj(整型),数量si(整型),金额je(长整型)五部分组成。其中:金额=单价*数量计算得出。函数ReadDat。是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat。,其功能要求:按产品名称从小到大进行排列,若产品名称相等,则按金额从小到大进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat。把结果输出到文件OUT5.DAT中。部分源程序存在文件progl.c中。请勿改动主函数main。、读数据函数ReadDat。和输出数据函数WriteDat。的内容。#include#include#include#include#include#defineMAX100typedefstruct{chardm[5];/*产品代码*/char产品名称*/intdj;/*单价*/intsi;/*数量*/longje;/*金额*/}PRO;PROsell[MAX];voidReadDat();voidWriteDat();voidSortDat(){intij;PROxy;

49for(i=0;i<99;i++)for(j=i+l;j<100;j++)if(strcmp(sell[i].mc,sell[j].mc)>Ollstrcmp(sell[iJ.mc,sell[j].mc)==O&&sell[i].je>sell[jJ.je){xy=sell[i];sell[i]=sell[j];sell|j]=xy;}]voidmain(){memset(sell,0,sizeof(sell));ReadDatO;SortDat();WriteDat();}voidReadDat()(FILE*fp;charstr[8O],ch[ll];inti;fp=fopen("IN.DAT",T);for(i=0;i<100;i++){fgets(str,8O,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()(FILE*fp;inti;fp=fopen(,,OUT5.DAT,,/'wn);for(i=0;i<100;i++){printf(n%s%s%4d%5d%5d

50M,sell[i].dm,selI[i].mc,sell[i].dj,sell[i].sl,sell[i]je);fprintf(fp,n%s%s%4d%5d%5d

51M,sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je);

52fclose(fp);题目13已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称me(字符型10位),单价dj(整型),数量si(整型),金额je(长整型)五部分组成。其中:金额=单价*数量计算得出。函数ReadDat。是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按产品代码从小到大进行排列,若产品代码相等,则按金额从大到小进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT9.DAT中。部分源程序存在文件progl.c中。请勿改动主:函数main。、读数据函数ReadDat()和输出数据函数WriteDat。的内容。#include#include#include#include#include#defineMAX100typedefstruct{char产品代码*/char11^[11];/*产品名称*/intdj;/*单价*/intsi;/*数量*/longje;/*金额*/}PRO;PROsell[MAX];voidReadDat();voidWriteDat();voidSortDat(){intij;PROxy;for(i=0;i<99;i++)for(j=i+l;j<100;j++)if(strcmp(sell[i].dm,sell[j].dm)>Ollstrcmp(sell[i].dm,sell[j].dm)==O&&sell[i].je

53memset(sell,0,sizeof(sell));ReadDatO;SortDat();WriteDat();)voidReadDat()(FILE*fp;charstr[8O],ch[ll];inti;fp=fopen("IN.DAT",MrH);for(i=0;i<100;i++){fgets(str,8O,fp);memcpy(sell[i].dm,str,4);memcpy(sell[iJ.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()(FILE*fp;inti;fp=fopen(,,OUT9.DAT',;,wn);for(i=0;i<100;i++){printf(M%s%s%4d%5d%5d

54n,sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je);fprintf(fp,H%s%s%4d%5d%5d

55M,seU[i].dm,sell[i].mc,seU[i].dj9sell[i].sl,sell[i].je);}fclose(fp);}★☆题目14已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat。把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:依次从数组a中取出一个四位数,如果该四位数连续大于该四位数以后的五个数且该数是奇数(该四位数以后不满五个数,则不统计),

56则统计出满足此条件的个数ent并把这些四位数按从小到大的顺序存入数组b中,最后调用写函数writeDat()把结果ent以及数组b中符合条件的四位数输出到OUT.DAT文件中。注意:部分源程序存在文件progl.c中。程序中已定义数组:a[200],b[200],已定义变量:ent请勿改动数据文件IN.DAT中的任何数据、主函数main()、读函数readDat。和写函数writeDat()的内容。#include#defineMAX200inta[MAX],b[MAX],ent=0;voidjsVal(){intiJ,flag;for(i=0;ia|j]&&a[i]%2)flag=1;else(flag=O;break;}if(flag==I)b[cnt++]=a[i];)for(i=0;ib[j]){flag=b[i];b[i]=b[j];b|j]=flag;})voidreadDat()(inti;FILE*fp;fp=fopenCIn.dat'1,V);for(i=0;i

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

58u);writeDat();)writeDat()FILE*fp;inti;

59fp=fopen(Hout.datM,''w");fprintf(fp,M%d

60\ent);for(i=0;i

61'\b[i]);fclose(fp);★题目15已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat。把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:若一个四位数的千位数字上的值小于等于百位数字上的值,百位数字上的值小于等于十位数字上的值,以及十位数字上的值小于等于个位数字上的值,并且原四位数是偶数,则统计出满足此条件的个数ent并把这些四位数按从小到大的顺序存入数组b中,最后调用写函数writeDat。把结果ent以及数组b中符合条件的四位数输出到OUT.DAT文件中。注意:部分源程序存在文件progl.c中。程序中已定义数组:a[200],b[200],已定义变量:ent请勿改动数据文件IN.DAT中的任何数据、主函数main。、读函数readDat。和写函数writeDat()的内容。#include#defineMAX200inta[MAX],b[MAX],cnt=0;voidjsValO{inti,j;intqw,bw,sw,gw;for(i=0;ib[j]){qw=b[i];b[i]=b[j];b[j]=qw;)voidreadDat()(inti;FILE*fp;fp=fopen(Min.datn,Mrn);for(i=0;i

62readDat();jsVal();printf("满足条件的数二%d

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

64M,ent);for(i=0;i

65'\b[i]);fclose(fp);}★☆题目16函数ReadDatO实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中,请编制函数StrCharJR。,其函数的功能是:以行为单位把字符串中所有字符的ASCII值右移4位,然后把右移后的字符ASCII值再加上原字符的ASCII值,得到新的字符仍存入原字符串对应的位置匕最后把已处理的字符串仍按行重新存入字符串数组xx中,最后调用函数writeDat()把结果xx输出到文件OUT8.DAT中。原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。部分源程序存在文件progl.c中。请勿改动主函数main。、读数据函数ReadDat。和输出数据函数wrileDat。的内容。#include#include#includecharxx[50][80];intmaxline=0;/*文章的总行数*/intReadDat(void);voidWriteDat(void);voidStrCharJR(){inti,j;for(i=0;i

66voidmain()(clrscr();if(ReadDat()){prinlf("数据文件IN.DAT不能打开!

67\007M);return;}StrCharJRO;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],

68,);if(p)*p=O;i++;)maxline=i;fclose(fp);return0;)voidWriteDat(void)(FILE*fp;inti;clrscr();fp=fopen(,,OUT8.DAT",;'wu);for(i=0;i

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

70M,xx[i]);)fclose(fp);☆题目17函数READDAT()实现从文件1N.DAT中读取一篇英文文章存入到字符串数组XX中;请编制函数CHA(),其函数功能是:以行为单位把字符串中的第一个字符的ASCII值加第二个字符的ASCH

71值,得到第一个亲朋字符,第二个字符的ASCH值加第三个字符的ASCH值,得到第二个新字符,依此类推一直处理到最后第二个字符,最后一个字符的ASCII值加原第一个字符的ASCII值,得到最后一个新的字符,得到的新字符分别存放在原字符串对应的位置上。最后把已处理的字符串逆转后按行重新存入字符串数组XX中,最后调用函数WRITEDAT()把结果XX输出到文件OUT9.DAT中.原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格.注意:部分源程序已给出。请勿改动主函数main。、读数据函数ReadDat。和输出数据函数writeDat()的内容。#include#include#includecharxx[50][80];intmaxline=0;/*文章的总行数*/intReadDat(void);voidWriteDat(void);voidChA(void){inti,j;charch;for(i=0;i

72\007");return;}ChA();WriteDat();)intReadDat(void)[FILE*fp;inti=0;

73char*p;if((fp=fopen(nIN.DAT",V))==NULL)return1;while(fgets(xx[ij,80,fp)!=NULL){p=strchr(xx[i],'

74*);if(p)*p=0;i++;}maxline=i;fclose(fp);return0;)voidWriteDat(void)[HLE*fp;inti;clrscr();fp=fopen("OUT9.DAT,"w");for(i=0;i

75,'»xx[i]);fprintf(fjp,M%s

76M,xx[i]);}fclose(fp);☆题目18函数ReadDatO实现从文件ENGIN中读取一篇英文文章,存入到字符串数组xx中;请编制函数encryptChar(),按给定的替代关系对数组xx中的所有字符进行替代,仍存入数组xx的对应的位置上,最后调用函数WriteDat()把结果xx输出到文件PS10.DAT中。替代关系:f(p)=p*llmod256(p是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果原字符的ASCII值是偶数或计算后f(p)值小于等于32,则该字符不变,否则将f(p)所对应的字符进行替代。部分源程序存在文件progl.c中。原始数据文件存放的格式是:每行的宽度均小于80个字符。请勿改动主函数main。、读数据函数ReadDat。和输出数据函数WriteDat。的内容。#include#include#include#includeunsignedcharxx[50][80];intmaxline=0;/*文章的总行数*/

77intReadDat(void);voidWriteDat(void);voidencryptChar(){inti,j;for(i=0;i

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

79,);if(p)*p=O;i++;)maxline=i;fclose(fp);return0;}voidWriteDat(void)[FILE*fp;inti;fp=fopen(,,psl0.dat,,7,wn);for(i=0;i

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

81M,xx[i]);

82}fclose(fp);☆题目19编写一个函数findStr(char*str,char*substr),该函数统计一个长度为2的子字符串在另-一个字符串中出现的次数。例如,假定输入的字符串为”asdasasdfgasdaszx67asdmklo",子字符串为“as",函数返回值是6。函数ReadWrite。实现从文件in.dat中读取两个字符串,并调用函数findStr。,最后把结果输出到文件out.dat中。注意:部分源程序存在文件progl.c中。请勿改动主函数main。和其它函数中的任何内容,仅在函数findStr()的花括号中填入你编写的若干语句。#include#include#includeintfindStr(char*str,char*substr){inti,j,lenl,len2,cnt=0,flag;lenl=strlen(str);len2=strlen(substr);for(i=0;i

83n=findStr(str,substr);printf(Mn=%d

84M,n);ReadWrite();)ReadWrite()[charstr[81],substr[3],ch;intn,len,i=0;HLE*rf,*wf;rf=fopen(Hin.datn,Hrn);wf=fopen(,'out.dat,',nwn);while(i<25){fgets(str,80,rf);fgets(substr,10,rf);len=strlen(substr)-1;ch=substr[len];if(ch==VIIch=0x1a)substr[len]=0;n=findStr(str,substr);fprintf(wf,n%d

85';n);i++;)fclose(rf);fclose(w0;★题目20编写函数jsValue,它的功能是:求Fibonacci数列中大于t的最小的一个数,结果由函数返回。其中Fibonacci数列F(n)的定义为:F(0)=0,F(l)=lF(n)=F(n-l)+F(n-2)最后调用函数writeDal()读取50个数据t,分别得出结果且把结果输出到文件oul.dal中。例如:当1=1000时,函数值为:1597。部分源程序存在文件prog1.c中。请勿改动主函数main。和写函数writeDat。的内容。#includeintjsValue(intt){intfO=O,fl=l,fn;fn=fO+fl;while(fn<=t){fO=fl;fl=fn;fn=fO+fl;)

86returnfn;main()fintn;n=1000;printf("n=%d,f=%d

87,',n,jsValue(n));writeDat();)writeDat()[FILE*in,*out;inti,n,s;in=fopen(uin.dat",nrn);oul=fopen("oul.dat“Jw");for(i=0;i<50;i++){fscanf(in,H%d'\&n);s=jsValue(n);printf(n%d

88n,s);fprintf(out,"%d

89”,s);}fclose(in);fclose(out);☆题目21卜一列程序progl.c的功能是:利用以下所示的简单迭代方法求方程:cos(x)-x=0的一个实根。Xn+l=cos(Xn)迭代步骤如下:⑴取XI初值为0.0:(2)X0=X1,把X1的值赋给X0;(3)Xl=cos(X0),求出一个新的XI;(4)若X0-X1的绝对值小于0.000001,执行步骤(5),否则执行步骤(2);(5)所求XI就是方程cos(X)-X=0的一个实根,作为函数值返回。请编写函数countValue()实现程序的耍求,最后调用函数writeDat()把结果输出到文件OUT17.DAT中。部分源程序已给出。请勿改动主函数main。和输出数据函数writeDat。的内容。#include#include#include

90floatcountValue(){floatx0,xl;x1=0.0;do{x0=xl;xl=cos(x0);}while(fabs(x0-xl)>=0.000001);returnx1;)main()(clrscr();printf("实根=%M”,countValue。);printf("%f

91”,cos(counlValue())-counlValue());writeDat();writeDalOFILE*wf;wf=fopen("OUT17.DAT”,W);fprintf(wf,M%f

92M,countValue());fclose(wf);★题目22请编写函数countValue(),它的功能是:求n以内(不包括n)同时能被3与7整除的所有自然数之和的平方根s,并作为函数值返回,最后结果s输出到文件out.dat中。例如若n为1000时,函数值应为:s=l53.909064»部分源程序存在文件progLc中。请勿改动主函数main()和输入输出数据函数progReadWrite()的内容。#include#include#includedoublecountValue(intn){inti;doubles=0.0;for(i=l;i

93main()(clrscr();printf("自然数之和的平方根=%f\fT,countValue(1000));progReadWrite();)progReadWrite()(FILE*fp,*wf;inti,n;floats;fjp=fopen(win.datH,MrH);if(fp==NULL){printf("数据文件in.dat不存在!)return;)wf=fopen(,'out.dat,',,,w,');fdr(i=0;i<10;i++){fscanf(fp,"%d

94",&n);s=countValue(n);fprintf(wf,M%f

95M,s);}fclose(fp);fclose(w0;题目23已知在文件in.dat中存有N个(个数〈200)实数,函数readdat。读取这N个实数并存入数组xx中。请编制函数calvalue。,其功能要求:1、求出这N个实数的平均值aver;2、分别求出这N个实数的整数部分之和sumint以及小数部分之和sumdec,最后调用函数writedat。把所求的结果输出到文件out.dat中。注意:部分源程序已给出。请勿改动主函数main。、读数据函数readdat。和输出数据函数writedat。的内容。#include#include#defineMAXNUM200floatxx[MAXNUMl;intN=0;/*文件IN.DAT中共有多少个实数*/doubleaver=0.0;/*平均值*/

96doublesuminl=0.0;/*整数部分之和*/doublesumdec=0.0;/*小数部分之和*/intReadDat(void);voidWriteDat(void);voidCalValue(void){inti;for(i=0;i

97");return;}Calvalue();printf("文件IN.DAT中共有实数=%d个3",N);printf("平均值=%.21f

98",aver);printf("整数部分之和=%.21f

99",sumint);printf("小数部分之和=%.21f

100",sumdec);WriteDat();systemC^pause");)intReadDat(void)(FILE*fp;inti=0;if((fp=fopen("in.datn,"r"))==NULL)return1;while(!feof(fp)){fscanf(fp,n%d,H,&xx[i++]);)fclose(fp);return0;}

101voidWriteDat(void)(FILE*fp;fp=fopen("OUT.DAT”,W);fprintf(fp,,1%.21f

102%.21f

103%.21f

104,',aver,sumint,sumdec);fclose(fp);)题目24下列程序progl.c的功能是:在三位整数(100至999)中寻找符合条件的整数并依次从小到大存入数组中;它既是完全平方数,又是两位数字相同,例如144、676等。请编制函数实现此功能,满足该条件的整数的个数通过所编制的函数返回。最后调用函数writeDat。把结果输出到文件out.dat中。请勿改动主函数main。和写函数writeDat()的内容。#includeintjsValue(intbb[]){intij,k=O;inthun,ten,data;for(i=10;i<32;i++)hum=j/100;ten=j%100/10;data=j%10;if(hum==tenllhum==datallten==data)bb[k++]=j;}returnk;main()(intb[20],num;num=jsValue(b);writeDat(num,b);)writeDat(intnumjntb[])(FILE*out;inti;out=fopen("out.dat,,,,'w");

105printf("%d

106”,num);fprintf(out,n%d

107n,num);for(i=0;i=half)return1;elsereturn0;}main(){longm;FILE*out;out=fopen("out.dat"Jw");for(m=11;m<1000;m++){if(jsValue(m)&&jsValue(m*m)&&jsValue(m*m*m)){printf(,'m=%41d,m*m=%61d,m*m*m=%81d

108'\m,m*m,m*m*m);fprintf(out,,'m=%41d,m*m=%61d,m*m*m=%81d}1fclose(out);system(Mpause,');★☆题目26

109已知在文件IN.DAT中存有若干个(个数〈200)四位数字的正整数,函数ReadDat。读取这若干个正整数并存入数组xx中。请编制函数CalVahie。,其功能要求:1、求出这文件中共有多少个正整数totNum;2、求这些数右移1位后,产生的新数是偶数的数的个数totCnt,以及满足此条件的这些数(右移前的值)的算术平均值totPjz,最后调用函数writeDal。把所求的结果输出到文件OUT.DAT中。部分源程序存在文件progl.c中。请勿改动主函数main。、读函数ReadDat。和写函数writeDat。的内容。#include#include#defineMAXNUM200intxx[MAXNUM];inttotNum=0;/*文件IN.DAT中共有多少个正整数*/inttotCnt=0;/*符合条件的正整数的个数*/doubletotPjz=0.0;/*平均值*/intReadDat(void);voidwriteDat(void);voidCalValue(void){inti,data;for(i=0;i0){totNum++;data=xx[ij»l;if(data%2=0){totCnt++;totPjz+=xx[i];}}if(totCnt==0)totPjz=0;elsetotPjz/=totCnt;)voidmain()(inti;clrscr();for(i=0;iif(ReadDat()){printf("数据文件IN.DAT不能打开!\007

110");return;}CalValue();prinlf("文件IN.DAT中共有正整数=%d个

111\lotNum);printf("符合条件的正整数的个数二%d个

112”,totCnt);printf(”平均值=%.2f

113”,totPjz);

114writeDat();intReadDat(void)FILE*fp;inti=0;if((fp=fopen(MIN.DAT,,;,rH))==NULL)return1;while(!feof(fp)){fscanf(fp/'%d,'\&xx[i++]);}fclose(fp);return0;}voidwriteDat(void)(FILE*fp;fp=fopen(,'OUT.DAT'\',wn);fprintf(fp,H%d

115%d

116%6.2f

117u,totNum,totCnt,totPjz);fclose(fp);题目27已知数据文件in.dat中存有300个四位数,并已调用读函数ReadDat。把这些数存入数组a中,请编制-函数jsValue。,其功能是:求出千位数上的数减百位数上的数减十位数上的数减个位数上的数大于零的个数ent,再把所有满足此条件的四位数依次存入数组b中,然后对数组b的四位数按从小到大的顺序进行排序,最后调用写函数writeDat。把结果输出到out.dat文件。例如:9123,9-1-2-3>0,则该数满足条件存入数组b中,且个数cnt=cnt+l。9812,9-8-1-2>0,则该数不满足条件忽略。部分源程序存在文件progl.c中。程序中已定义数组:a[300],b[300],已定义变量:ent请勿改动主函数main。、读函数ReadDat。和写函数writeDat。的内容。#includeinta[3OO],b[3OO],cnt=O;jsValue(){intij,qw,bw,sw,gw;for(i=0;i<300;i++){qw=a[i]/1000;bw=a[i]/100%10;sw=a[i]%100/10;gw=a[i]%10;if(qw-bw-sw-gw>0)b[cnt++]=a[i];)for(i=0;i

118if(b[i]>b[j]){qw=b[i];b[i]=b(j];b[j]=qw;})main()inti;readDat();jsValue();writeDat();printf(Mcnt=%d

119'\cnt);for(i=0;i}readDat()(FILE*fp;inti;fp=fopen("in.dat","r");for(i=0;i<300;i++)fscanf(fp,"%d,",&a[i]);fclose(fp);)writeDat()(FILE*fp;inti;fp=fopen("out.dat","w");fprintf(fp,"%d

120",cnt);for(i=0;i=0且ab-cd<=10且两个数均是奇数,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组b中,并要计算满足上述条件的四位数的个数ent。最后main。函数调用写函数writeDat()把结果ent以及数组b中符合条件的四位数输出到OUT.DAT文件中。注意:部分源程序存在文件progLc中。程序中已定义数组:a[200],b[200],已定义变量:ent请勿改动数据文件IN.DAT中的任何数据、主函数main。、读函数readDat()和写函数

121writeDat()的内容。#include#defineMAX200inta[MAX],b[MAX],ent=0;voidjsVal(){inti,j,thou,hun,ten,data,ab,cd;for(i=0;i<200;i++){thou=a[i]/1000;hun=a[i]%1000/100;ten=a[i]%100/10;data=a[i]%IO;ab=10*thou+ten;cd=10*data+hun;if((ab-cd)>=O&&(ab-cd)<=10&&ab%2==1&&cd%2==1&&ab>=10&&cd>=10)b[cnt++]=a[i];}for(i=0;i

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

123n);writeDat();writeDat()[FILE*fp;inti;fp=fopen("out.datM,nw");fprintf(fp,,'%d

124H,ent);

125for(i=0;i

126u,b[i]);fclose(fp);☆题目29已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat。把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:把千位数字和十位数字重新组成一个新的十位数ab(新卜位数的卜位数字是原四位数的千位数字,新十位数的个位数字是原四位数的十位数字),以及把个位数字和百位数字组成另一个新的十位数cd(新十位数的十位数字是原四位数的个位数字,新卜位数的个位数字是原四位数的百位数字),如果新组成的两个十位数ab-cd>=10且ab-cd<=20且两个数均是偶数,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组b中,并要计算满足上述条件的四位数的个数cnto最后main。函数调用写函数writeDal()把结果ent以及数组b中符合条件的四位数输出至IJOUT.DAT文件中。注意:部分源程序存在文件progLc中。程序中已定义数组:al200],b[200J,已定义变量:ent请勿改动数据文件IN.DAT中的任何数据、主函数main。、读函数readDat。和写函数writeDat()的内容。#include#defineMAX200inta[MAX],b[MAX],ent=0;voidjsVaK){inti,j,qw,bw,sw,gw,ab,cd;for(i=0;i=10&&ab-cd<=20&&ab%2==0&&cd%2==0&&qw!=0&&gw!=0)b[cnt++]=a[i];}for(i=0;i

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

128printf(H

129n);writeDat();IwriteDat()(FILE*fp;inti;fp=fopen(nout.datn,"w");fprintf(fp,H%d

130n,ent);for(i=0;i

131",b[i]);fclose(fp);☆题目30已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat。把这些数存入数组a中,请考生编制•函数jsVal(),其功能是:依次从数组a中取出一个四位数,如果该四位数连续小于该四位数以后的五个数且该数是偶数(该四位数以后不满五个数,则不统计),则统计出满足此条件的个数ent并把这些四位数按从小到大的顺序存入数组b中,最后调用写函数writeDat()把结果ent以及数组b中符合条件的四位数输出到OUT.DAT文件中。注意:部分源程序存在文件progl.c中。程序中已定义数组:a[200],b[200],已定义变量:ent请勿改动数据文件IN.DAT中的任何数据、主函数main。、读函数readDat。和写函数writeDat()的内容。#include#defineMAX200inta[MAX],b[MAX],ent=0;voidjsVal(){inti,j,flag;for(i=0;ib|jj){flag=b[i];b[i]=b[j];b[j]=flag;)voidreadDat()[inti;

132FILE*fp;fp=fopen(nin.datM,Mrn);for(i=0;i

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

134");writeDat();writeDat()(FILE*fp;inti;fp=fopen(Mout.dat",0w");fprintf(fp,,'%d

135n,ent);for(i=0;i

136H,b[i]);fclose(fp);)☆题目31已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称me(字符型10位),单价dj(整型),数量si(整型),金额je(长整型)五部分组成。其中:金额=单价*数量计算得出。函数ReadDat。是读取这100个销售记录并存入结构数组sell中。请编制函数SortDatO,其功能要求:按金额从大到小进行排列,若金额相同,则按产品代码从大到小进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDatO把结果输出到文件OUT4.DAT中。部分源程序存在文件progl.c中。请勿改动主函数main。、读数据函数ReadDat。和输出数据函数WriteDatO的内容。#include#include#include#include#include#defineMAX100typedefstruct)chardm[5];/*产品代码*/

137char产品名称*/intdj;/*单价*/intsi;/*数量*/longje;/*金额*/}PRO;PROsell[MAX];voidReadDat();voidWriteDat();voidSortDat(){intij;PROxy;for(i=0;i<99;i++)for(j=i+l;j<100;j++)if(sell[i].je<0){xy=sell[i];sell[i]=sell|j];sell[j]=xy;})voidmain()(memset(sell,0,sizeof(seil));ReadDat();SortDat();WriteDat();voidReadDat()FILE*fp;charstr[80],ch[ll];inti;fp=fopenC,IN.DAT,,,,,rn);for(i=0;i

138[FILE*fp;inti;fp=fopen(,'OUT4.DAT'V'wH);for(i=0;i

139M,sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je);fprintf(fp,M%s%s%4d%5d%5d

140M,sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je);)fclose(fp);☆题目32已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称me(字符型10位),单价dj(整型),数量si(整型),金额je(长整型)五部分组成。其中:金额=单价*数量计算得出。函数ReadDat。是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按产品名称从大到小进行排列,若产品名称相等,则按金额从小到大进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat。把结果输出到文件OUT7.DAT中。部分源程序存在文件progLc中。请勿改动主函数main。、读数据函数ReadDat()和输出数据函数WriteDal。的内容。#include#include#include#include#include#defineMAX100typedefstruct)chardm[5];/*产品代码*/char产品名称*/intdj;/*单价*/intsi;/*数量*/longje;/*金额*/}PRO;PROse川MAX];voidReadDat();voidWriteDat();voidSortDat(){intij;PROxy;

141for(i=0;i<99;i++)for(j=i+1;j<100;j++)if(strcmp(sell[i].mc,sell[j].mc)sell[j].je){xy=sell[i];sell[i]=sell|j];sell[j]=xy;}}voidmain()(memset(sell,0,sizeof(sell));ReadDat();SortDat();WriteDat();}voidReadDat()(HLE*fp;charstr[8O],ch[ll];inti;fp=fopen(nIN.DATn,Mrn);for(i=0;i<100;i++){fgets(str,8O,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()(FILE*fp;inti;fp=fopen("OUT7.DAT","w");for(i=0;i<100;i++){printf("%s%s%4d%5d%5d

142",sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je);fprintf(fp,"%s%s%4d%5d%5d

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

144★☆题目33请编制函数ReadDat()实现从文件IN.DAT中读取1000个十进制整数到数组xx中:请编制函数Compute。分别计算出xx中偶数的个数even,奇数的平均值avel,偶数的平均值ave2以及方差totfc的值,最后调用函数WriteDat()把结果输出到OUT.DAT文件中。计算方差的公式如下:N2totfc=l/NL(xx[i]-ave2)i=l设N为偶数的个数,xx[i]为偶数,ave2为偶数的平均值。原始数据文件存放的格式是:每行存放10个数,并用逗号隔开。(每个数均大于0且小于等于2000)部分源程序存在文件progl.c中。请勿改动主函数main。和输出数据函数writeDat。的内容。#include#include#include#defineMAX1000intxx[MAX],odd=0,even=0;doubleave1=0.0,ave2=0.0,totfc=0.0;voidWriteDat(void);intReadDat(void){inti;HLE*fp;if((fp=fopen(,,IN.DAT,,;,r,,))==NULL)return1;for(i=0;i

145M);}fclose(fp);return0;}voidCompute(void){inti,yy[MAX];for(i=0;i

146if(even==0)ave2=0;elseave2/=even;for(i=0;i

147");return;)Compute();printfC'OVEN=%d

148AVEl=%f

149AVER2=%f

150TOTFC=%f

151n,even,avel,ave2,totfc);WriteDat();}voidWriteDat(void)FILE*fp;inti;fp=fopen(,'OUT.DATn;,wn);fprintf(fp,,,%d

152%f

153%f

154%f

155",even,ave1,ave2,totfc);fclose(fp);题目34无忧id102题提供了求素数isPrime。函数程序progl.c的功能是:选出100以上1000之内所有个位数字与十位数字之和被10除所得余数恰是百位数字的素数(如293)o计算并输出上述这些素数的个数ent以及这些素数值的和sum。请考生编写函数countValue()实现程序要求,最后调用函数writeDAT()把结果ent和sum输出到文件bclO.out中。注意:部分源程序存放在文件progl.c中。请勿改动主函数main()和输出数据函数writeDAT。的内容。#includeintent,sum;intisPrime(intm)(inti;for(i=2;i

156voidcountValue(){inti,j,bw,sw,gw;for(i=100;i<1000;i++){bw=i/100;sw=i%100/10;gw=i%10;if(isPrime(i)&&(gw+sw)%10=bw){cnt++;sum+=i;})voidmain(){cnt=sum=0;countValue();printf("素数的个数二%小11\ent);print"1满足条件素数值的和=%d”,sum);writeDAT();)writeDAT()(FILE*fp;fp=fopen(,,bcl0.out,\'V);fprintf(fp,,"%d

157%d

158n,ent,sum);fclose(fp);)★题目35某级数的前两项Al=l,A2=l»以后各项具有如卜关系:An=An-2+2An-1(注:n-2与n-1为下标)下列程序progl.c的功能是:要求依次对于整数M=100,1000和10000求出对应的n值,使其满足:Sn=M,这里Sn=Al+A2+...+An,并依次把n值存入数组单元b⑼,b[l]和b⑵中,请编制jsValue()函数来实现此功能,最后调用函数writeDat。把数组b[]中的值输出到out.dat文件中。请勿改动主函数main。和写函数writeDat。的内容。#includeintb[3];jsValue(){inta1=1,a2=1,a12,sn,k=2;sn=al+a2;while(l){al2=al+2*a2;if(sn<100&&sn+a12>=100)b[O]=k;if(sn<1000&&sn+a12>=1000)b[l]=k;

159if(sn=10000){b[2]=k;break;}sn=sn+al2;al=a2;a2=al2;k++;main()[jsValue();printf(HM=100,n=%d

160M=1000,n=%d

161M=10000,n=%d

162n,b[0],b[l],b[2]);writeDatO;writeDat()FILE*fp;fp=fopen(,,out.datn;,wn);printf(M%d

163%d

164%d

165H,b[0],b[l],b[2]);fprintf(fp,M%d

166%d

167%d

168H,b[O],b[1],b[2]);fclose(fp);★题目36函数ReadDal。实现从文件ENGIN中读取一篇英文文章,存入到字符串数组xx中;请编制函数encryptChar(),按给定的替代关系对数组xx中的所有字符进行替代,仍存入数组xx的对应的位置上,最后调用函数WriteDatO把结果xx输出到文件pS6.DAT中。替代关系:f(p)=p*Hmod256(p是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果计算后f(p)值小于等于32或f(p)对应的字符是数字。至9,则该字符不变,否则将f(p)所对应的字符进行替代。部分源程序存在文件progl.c中。原始数据文件存放的格式是:每行的宽度均小于80个字符。请勿改动主函数main。、读数据函数ReadDat。和输出数据函数WriteDatO的内容。#include#include#include#includeunsignedcharxx[50][80];intmaxline=0;/*文章的总行数*/intReadDat(void);voidWriteDat(void);

169voidencryptChar(){inti,j;for(i=0;i=,0,&&xx[i][j]*ll%256<=,9,)continue;elsexx[i][j]=xx[i][j]*ll%256;voidmain()clrscr();if(ReadDat()){printf("数据文件ENGIN不能打开!

170\007H);return;encryptChar();WriteDat();}intReadDat(void)FILE*fp;inti=0;unsignedchar*p;if((fp=fopen(Meng.inM,MrM))==NULL)return1;while(fgets(xx[i],80,fp)!=NULL){p=strchr(xx[i],,

171,);if(p)*p=O;i++;)maxline=i;fclose(fp);return0;)voidWriteDat(void)[HLE*fp;inti;fp二fopen("ps6.dat"Jw");for(i=0;i

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

173M,xx[i]);

174}fclose(fp);题目37函数ReadDatO实现从文件ENGIN中读取一篇英文文章,存入到字符串数组xx中;请编制函数encryptChar(),按给定的替代关系对数组xx中的所有字符进行替代,仍存入数组xx的对应的位置上,最后调用函数WriteDat()把结果xx输出到文件PS7.DAT中。替代关系:f(p)=p*llmod256(p是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果原字符是大写字母或计算后f(p)值小于等于32,则该字符不变,否则将f(p)所对应的字符进行替代。部分源程序存在文件progl.c中。原始数据文件存放的格式是:每行的宽度均小于80个字符。请勿改动主函数main。、读数据函数ReadDat。和输出数据函数WriteDat。的内容。#include#include#include#includeunsignedcharxx[50][80];intmaxline=0;/*文章的总行数*/intReadDat(void);voidWriteDat(void);voidencryptChar(){inti,j;for(i=0;i='A,&&xx[i]|j]<='Z')continue;elsexx[i][j]=xx[i][j]*ll%256;voidmain()(clrscr();if(ReadDat()){printf("数据文件ENGIN不能打开!

175\007u);return;)encryptChar();WriteDat();

176)intReadDat(void){FILE*fp;inti=0;unsignedchar*p;if((fp=fopen(Meng.inH,Hrn))==NULL)return1;while(fgets(xx[i],80,fp)!=NULL){p=strchr(xx[i],,

177,);if(p)*p=O;i++;)maxline=i;fclose(fp);return0;}voidWriteDat(void)[FILE*fp;inti;fp=fopen(,,ps7.dat,';,wn);for(i=0;i

178\xx[i]);fprintf(fp,,,%s

179,,,xx[i]);)fclose(fp);题目38已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称me(字符型10位),单价dj(整型),数量si(整型),金额je(长整型)五部分组成。其中:金额=单价*数量计算得出。函数ReadDat。是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按产品代码从小到大进行排列,若产品代码相同,则按金额从小到大进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat。把结果输出到文件OUT6.DAT中。部分源程序存在文件progl.c中。请勿改动主函数main。、读数据函数ReadDat()和输出数据函数WriteDat。的内容。#include

180#include#include#include#include#defineMAX100typedefstruct)chardm[5];/*产品代码*/char产品名称*/intdj;/*单价*/intsi;/*数量*/longje;/*金额*/}PRO;PROse川MAX];voidReadDat();voidWriteDat();voidSortDat(){intij;PROxy;for(i=0;i<99;i++)for(j=i+1;j<100;j++)if(strcmp(sell[i].dm,sell[j].dm)>Ollstrcmp(sell[i].dm,sell[j].dm)==O&&sen[i].je>sell[j].je){xy=sell[i];sell[i]=sell|j];sell[j]=xy;}}voidmain()(memset(sell,0,sizeof(sell));ReadDat();SortDat();WriteDat();}voidReadDat()(HLE*fp;charstr[8O],ch[ll];inti;fp=fopen(,,IN.DAT,,,Y,);for(i=0;i<100;i++){fgets(str,8O,fp);memcpy(sell[i].dm,str,4);

181memcpy(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(”OUT6.DAT",“w”);for(i=0;i<100;i++){printf(n%s%s%4d%5d%5d

182",sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je);fprintf(fp,H%s%s%4d%5d%5d

183",sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je);)fclose(fp);★☆题目39现有一个10个人100行的选票数据文件IN.DAT,其数据存放的格式是每条记录的长度均为10位,第一位表示第一个人的选中情况,第二位表示第二个人的选中情况,依此类推:内容均为字符。和1,1表示此人被选中,0表示此人未被选中,全选或不选均为无效的选票。给定函数ReadDat。的功能是把选票数据读入到字符串数组xx中。请编制函数CountRs()来统计每个人的选票数并把得票数依次存入yy⑼到yy[9]中。把结果”输出到文件OUT.DAT中。部分源程序存在文件progLc中。请勿改动主函数main。、读数据函数ReadDat。和输出数据函数writeDat。的内容。#includecharxx[100][ll];intyy[10];intReadDat(void);voidWriteDat(void);voidCountRs(void){inti,j,count;for(i=0;i

184if(count==Ollcount==10)continue;for(j=0;j<10;j-H-)if(xx[i]|j]='r)yy[j]++;

185voidmain()inti;for(i=0;i<10;i++)yy[i]=O;if(ReadDat()){printf("选票数据文件IN.DAT不能打开!

186\007");return;}CountRs();WriteDatO;intReadDat(void)(FILE*fp;inti;if((fp=fopen(,,IN.DAT,,;,rn))==NULL)return1;for(i=0;i<100;i++){if(fgets(xx[i],l1,fp)==NULL)return1;xx[i][10]=A0,;}fclose(fp);return0;}voidWriteDat(void)(FILE*fp;inti;fp=fopen(,'OUT.DAT,,;,wn);for(i=0;i<10;i++){fprintf(fp,H%d

187M,yy[i]);printf("第%d个人的选票数=%d

188”,i+l,yy[i]);)fclose(fp);

189☆题目40已知在文件IN.DAT中存有若干个(个数<200)四位数字的正整数,函数ReadDat()读取这若干个正整数并存入数组xx中。请编制函数CalValue。,其功能要求:1、求出这文件中共有多少个正整数totNum;2、求这些数中的各位数字之和是偶数的数的个数totCnt,以及满足此条件的这些数的算术平均值totPjz,最后调用函数writeDat()把所求的结果输出到文件OUT.DAT中。部分源程序存在文件progLc中。请勿改动主函数main。、读函数ReadDat。和写函数writeDat()的内容。#include#include#defineMAXNUM200intxx[MAXNUM];inttotNum=0;/*文件IN.DAT中共有多少个正整数*/inttotCnt=0;/*符合条件的正整数的个数*/doubletotPjz=0.0;/*平均值*/intReadDat(void);voidwriteDat(void);voidCalValue(void){inti,qw,bw,sw,gw;for(i=0;i0){totNum++;qw=xx[i]/1000;bw=xx[i]/100%10;sw=xx[i]%100/10;gw=xx[i]%10;if((qw+bw+sw+gw)%2==0){totCnt++;totPjz+=xx[i];})if(totCnt==0)totPjz=0;elsetotPjz/=totCnt;voidmain()[inti;clrscr();for(i=0;iif(ReadDat()){printf("数据文件IN.DAT不能打开!\007

190");

191return;}CalValue();printf("文件IN.DAT中共有正整数=%dj

192\totNum);printf("符合条件的正整数的个数二%dprintf(”平均值=%.2f

193”,tolPjz);writeDat();intReadDat(void)(FILE*fp;inti=0;if((fp=fopen(nIN.DAT,,;,r,,))==NULL)return1;while(!feof(fp)){fscanf(fp/'%d,',,&xx[i++J);}fclose(fp);return0;)voidwriteDat(void)(FILE*fp;fp=fopen(,,OUT.DAT","wn);fprintf(fp,n%d

194%d

195%6.2f

196u,totNum,totCnt,totPjz);fclose(fp);)☆题目41下列程序progLc的功能是:计算出自然数SIX和NINE,它们满足的条件是SIX+SIX+SIX=NINE+NINE的个数ent以及满足此条件所有的SIX与NINE的和SUM。请编写函数countValue。实现程序的要求,最后调用函数writeDat。把结果ent和sum,输出到文件OUT15.DAT中。其中的S,I,X,N,E各代表一个十进制数字。部分源程序存在文件progLc中。请勿改动主函数main。和输出数据函数writeDat。的内容。#includeintent,sum;voidcountValue(){ints,i,x,n,e,six,nine;for(s=l;s<10;s++)for(i=0;i<10;i-H-)for(x=0;x<10;x++)for(n=l;n<10;n++)for(e=0;e<10;e++)

197{six=s*100+i*10+x;nine=n*lOOO+i*lOO+n*l0+e;if(3*six==2*nine){cnt++;sum+=six+nine;}voidmain()(cnt=sum=0;countValue();printf("满足条件的个数=%d

198”,cnt);printf("满足条件所有的SIX与NINE的和二%d

199”,sum);writeDat();}writeDat()(FILE*fp;fp=fopen(',OUT15.DAT,,;'wn);fprintf(fp,,,%d

200%d

201',,cnt,sum);fclose(fp);}题目42已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称me(字符型10位),单价dj(整型),数量si(整型),金额je(长整型)五部分组成。其中:金额=单价*数Qi卜算得出。函数ReadDat。是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按产品名称从大到小进行排列,若产品名称相等,则按金额从大到小进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat。把结果输出到文件OUT5.DAT中。部分源程序存在文件progl.c中。请勿改动主函数main。、读数据函数ReadDat。和输出数据函数WriteDat。的内容。#include#include#include#include#include#defineMAX100typedefstruct{

202chardm[5];/*产品代码*/char产品名称*/intdj;/*单价*/intsi;/*数量*/longje;/*金额*/}PRO;PROsell[MAX];voidReadDat();voidWriteDat();voidSortDat(){inti,j;PROxy;for(i=0;i<99;i++)for(j=i+l;j<100;j++)if(strcmp(sell[i].mc,sell[j].mc)

203)voidWriteDat(){FILE*fp;inti;fp=fopen("OUT5.DAT“Jw");for(i=0;i<100;i++){printf(M%s%s%4d%5d%5d

204H,sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je);fprintf(fp,M%s%s%4d%5d%5d

205M,sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je);)fclose(fp);)★题目43无忧id82题(只是将结果按“从大到小”排序)函数ReadDat。实现从文件in.dat中读取20行数据存放到字符串数组xx中(每行字符串长度均小于80)。请编制函数jsSort。,其函数的功能是:以行为单位对字符串变量的下标为奇数的字符按其ASCII值从小到大的顺序进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数WriteDat。把结果xx输出到文件uut.dat中。例如:位置01234567源字符串abcdefgh则处理后字符串ahcfedgb部分源程序存在文件progl.c中。请勿改动主函数main。、读数据函数ReadDat。和输出数据函数WriteDat()的内容。#include#include#includecharxx[20][80];voidjsSort(){inti,j,k,strl;charch;for(i=0;i<20;i++){strl=strlen(xx[i]);

206for(j=l;jfor(k=j+2;kif(xx[i][j]>xx[i][k]){ch=xx[i][j];xx[i][j]=xx[i][k];xx[i][k]=ch;}voidmain()(readDat();jsSort();writeDat();}readDat()(FILE*in;inti=0;char*p;in=fopen("in.dat",*'rn);while(i<20&&fgets(xx[i],80,in)!=NULL){p=strchr(xx[i],

207,);if(p)*p=O;i++;}fclose(in);}writeDat()(FILE*out;inti;out=fopen("out.dat,',,'wn);clrscr();for(i=0;i<20;i++){prinlf("%s

208”,xx[i]);fprintf(out,H%s

209u,xx[i]);)fclose(out);

210★☆题目44函数ReadDat()实现从文件in.dat中读取20行数据存放到字符串数组xx中(每行字符串长度均小于80)。请编制函数jsSort(),其函数的功能是:以行为单位对字符串按给定的条件进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数WriteDat。把结果xx输出到文件out.dat中。条件:从字符串中间一分为二,左边部分按字符的ASCII值降序排序,排序后左边部分与右边部分进行交换。如果原字符串长度为奇数,则最中间的字符不参加处理,字符仍放在原位置上。例如:位置012345678源字符串abcdhgfe123498765则处理后字符串hgfedcba876594321部分源程序存在文件progl.c中。请勿改动主函数main(),读数据函数ReadDat()和输出数据函数WriteDat。的内容。#include#include#includecharxx[20][80];voidjsSort(){inti,j,k,strl,half;chartemp;for(i=0;i<20;i++){strl=strlen(xx[i]);half=strl/2;for(j=0;j=O;j-,k-){temp=xx[i][j];xx[i][j]=xx[i][k];xx[i][k]=temp;}voidmain()(readDat();jsSort();writeDat();readDat()

211FILE*in;inti=0;char*p;in=fopen(,,in.dat,,,"rn);while(i<20&&fgets(xx[i],80,in)!=NULL){p=strchr(xx[i],'

212,);if(P)*P=O;i++;}fclose(in);writeDat()(FILE*out;inti;clrscr();out=fopen("out.dat"Jw");for(i=0;i<20;i++){printf(,,%s

213,',xx[i]);fprintf(out,"%s

214u,xx[i]);}fclose(out);★题目45已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:依次从数组a中取出一个四位数,如果该四位数连续大于该四位数以前的五个数且该数是偶数(该四位数以前不满五个数,则不统计),则统计出满足此条件的个数ent并把这些四位数按从大到小的顺序存入数组b中,最后调用写函数writeDat()把结果ent以及数组b中符合条件的四位数输出到OUT.DAT文件中。注意:部分源程序存在文件progl.c中。程序中已定义数组:a[200],b[200],已定义变量:ent请勿改动数据文件IN.DAT中的任何数据、主函数main。、读函数readDat。和写函数writeDat。的内容。#include#defineMAX200intafMAX],b[MAX],ent=0;voidjsVal(){inti,j,flag;for(i=5;ia[j]&&a[i]%2==0)flag=l;else{flag=O;break;}if(flag==l)b[cnt++]=a[i];

215)for(i=0;i

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

217n);writeDat();)writeDat()(HLE*fp;inti;fp=fopen("out.datn,nw");fprintf(fp,M%d

218H,ent);for(i=0;i

219H,b[i]);fclose(fp);

220☆题目46已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:依次从数组a中取出一个四位数,如果该四位数连续大于该四位数以前的五个数且该数是奇数,且该数必须能被7整除(该四位数以前不满五个数,则不统计),则统计出满足此条件的个数ent并把这些四位数按从大到小的顺序存入数组b中,最后调用写函数writeDat()把结果ent以及数组b中符合条件的四位数输出到OUT.DAT文件中。注意:部分源程序存在文件progl.c中。程序中已定义数组:a[200],b[200J,已定义变量:ent请勿改动数据文件IN.DAT中的任何数据、主函数main。、读函数readDat。和写函数writeDat。的内容。#include#defineMAX200inta[MAX],b[MAX],ent=0;voidjsVal(){inti,j,flag;for(i=5;ivMAX;I++){for(j=i-5;ja[j]&&a[i]%2&&a[i]%7==0)flag=l;else{flag=O;break;}if(flag==l)b[cnt++]=a[i];}for(i=0;i

221*ent);for(i=0;i

222n);writeDat();writeDat()

223[FILE*fp;inti;fp=fopen(Mout.datM,"w");fprintf(fp,H%d

224H,ent);for(i=0;i

225",b[i]);fclose(fp);题目47已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称me(字符型10位),单价dj(整型),数量si(整型),金额je(长整型)五部分组成。其中:金额=单价*数量计算得出。函数ReadDat()是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat。,其功能要求:按金额从大到小进行排列,若金额相等,则按产品代码从小到大进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat。把结果输出到文件OUT3.DAT中。部分源程序存在文件progl.c中。请勿改动主函数main。、读数据函数ReadDat。和输出数据函数WriteDat。的内容。#include#include#include#include#include#defineMAX100typedefstruct)chardm[5];/*产品代码*/char产品名称*/intdj;/*单价*/intsi;/*数量*/longje;/*金额*/}PRO;PROsell[MAX];voidReadDat();voidWriteDat();voidSortDat(){inti,j;PROxy;for(i=0;i<99;i++)for(j=i+1;j<100;j++)if(sell[i].jeO){xy=sell[i];sell[i]=sell[j];sell[j]=xy;}

226}voidmain()(memset(sell,0,sizeof(sell));ReadDat();SortDat();WriteDatO;)voidReadDat()[FILE*fp;charstr[8OJ,ch[l1];inti;fp=fopen("IN.DAT",T');for(i=0;i<100;i++){fgets(str,8O,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()[FILE*fp;inti;fp=fopen(,,OUT3.DAT',;'wH);for(i=0;i<100;i++){printf(n%s%s%4d%5d%5d

227H,seU[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je);fprintf(fp,M%s%s%4d%5d%5d

228M,sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je);fclose(fp);☆题目48

229已知数据文件in.dat中存有300个四位数,并已调用读函数ReadDat。把这些数存入数组a中,请编制一函数jsValueO,其功能是:求出千位数上的数加个位数上的数等于百位数上的数加十位数上的数的个数ent,再把所有满足此条件的四位数依次存入数组b中,然后对数组b的四位数按从小到大的顺序进行排序,最后调用写函数writeDat()把结果输出到out.dat文件。例如:6712,6+2=7+1,则该数满足条件存入数组b中,且个数cnt=cnt+l。8129,8+901+2,则该数不满足条件忽略。部分源程序存在文件progl.c中。程序中已定义数组:a[300],b[300],已定义变量:ent请勿改动主函数main。、读函数ReadDat。和写函数writeDat。的内容。#includeinta[300J,b[300J,cnt=0;jsValueO{inti,qw,bw,sw,gw,j;for(i=0;i<300;i++){qw=a[i]/1000;bw=a[i]%1000/100;sw=a[i]%100/10;gw=a[i]%10;if(qw+gw=bw+sw)b[cnt++]=a[i];1fbr(i=O;ib[j]){qw=b[i];b[i]=b[j];b[j]=qw;}main()[inti;readDat();jsValueO;writeDat();printf(Mcnt=%d

230n,cnt);for(i=0;i}readDat()FILE*fp;inti;fp=fopen(',in.datn,,,rH);for(i=0;i<300;i++)fscanf(fp,M%d,n,&a[i]);fclose(fp);}writeDat()

231FILE*fp;inti;fp=fopen(,,out.dat,';,wM);fprintf(fp,"%d

232”,cm);for(i=0;i0,则该数满足条件计算平均值pjzl,且个数cnt=cnt+lo9812,9・8・1・2v0,则该数不满足条件计算平均值pjz20部分源程序存在文件progl.c中。程序中已定义数组:a[300],已定义变量:cnt,pjzl,pjz2。请勿改动主函数main。、读函数ReadDat。和写函数writeDat。的内容。#includeinta[300],cnt=0;doublepjz1=0.0,pjz2=0.0;jsValue(){inti,qw,bw,sw,gw,n=0;for(i=0;i<300;i++){qw=a[i]/1000;bw=a[i]%1000/100;sw=a[i]%100/10;gw=a[i]%10;if(qw-bw-sw-gw>0){cnt++;pjz1+=a[i];}else{n++;pjz2+=a[i];}}if(cnt=O)pjz1=0;elsepjzl/=cnt;if(n==O)pjz2=0;elsepjz2/=n;)main()(inti;readDat();jsValue();writeDat();printf(',cnt=%d

233满足条件的平均值pzjl=%7.2An不满足条件的平均值pzj2=%7.2f

234",cnt,pjz

235l,pjz2);)readDat()(FILE*fp;inti;fp=fopen("in.dat","r”);for(i=0;i<300;i++)fscanf(fp;,%d;,,&a[i]);fclose(fp);)writeDat()(FILE*fp;inti;fp=fopen(',out.dat,","wM);fprintf(fp,',%d

236%7.2f

237%7.2f

238",cnt,pjzl,pjz2);fclose(fp);题目50函数ReadDat。实现从文件in.dat中读取20行数据存放到字符串数组xx中(每行字符串长度均小于80)。请编制函数jsSort。,其函数的功能是:以行为单位对字符串按给定的条件进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数WriteDat。把结果xx输出到文件out.dat中。条件:从字符串中间一分为二,左边部分按字符的ASCII值升序排序,排序后左边部分与右边部分进行交换。如果原字符串长度为奇数,则最中间的字符不参加处理,字符仍放在原位置上。例如:位置012345678源字符串dcbahgfe432198765则处理后字符串hgfeabcd876591234部分源程序存在文件progl.c中。请勿改动主函数main。、读函数ReadDat。和写函数WriteDat。的内容。#include#include#includecharxx[2OJl8OJ;

239voidjsSort(){inti,j,k,strl,half;chartemp;for(i=0;i<20;i++){strl=strlen(xx[ij);half=strl/2;for(j=0;jxx[i][k]){temp=xx[i][j];xx[i][jl=xx[i][k];xx[i][kl=temp;}for(j=half-1,k=strl-1;j>=O;j—,k—){temp=xx[i][j];xx[i][j]=xx[i][k];xx[i][k]=temp;}voidmain()[readDat();jsSort();writeDat();)readDat(){FILE*in;inti=0;char*p;in=fopen("in.datu,*?**);while(i<20&&fgets(xx[i],80,in)!=NULL){p=strchr(xx[i],

240,);if(p)*p=0;i++;fclose(in);writeDat()(FILE*out;inti;clrscr();out=fopen(Mout.dat*V'wH);for(i=0;i<20;i++){printf(M%s

241\xx[i]);fprintf(out,"%s

242",xx[i]);)fclose(out);

243)☆题目51已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat。把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:把千位数字和十位数字重新组成一个新的十位数(新十位数的十位数字是原四位数的千位数字,新十位数的个位数字是原四位数的十位数字),以及把个位数字和百位数字组成另一个新的十位数(新十位数的十位数字是原四位数的个位数字,新十位数的个位数字是原四位数的百位数字),如果新组成的两个十位数均是素数且新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组b中,并要计算满足上述条件的四位数的个数ent。最后main。函数调用写函数writeDat。把结果ent以及数组b中符合条件的四位数输出到OUT.DAT文件中。注意:部分源程序存在文件progl.c中。程序中已定义数组:a[200],b[200],已定义变量:ent请勿改动数据文件IN.DAT中的任何数据、主函数main。、读函数readDat。和写函数writeDat。的内容。#include#defineMAX200inta[MAX],b[MAX],ent=0;intisprime(intm){inti;for(i=2;i<=m/2;i++)if(m%i==0)return0;return1;voidjsValQ{intij,qw,bw,sw,gw;intab,cd;for(i=0;i<200;i++){qw=a[i]/1000;bw=a[i]%1000/100;sw=a[i]%100/10;gw=a[i]%10;ab=10*qw+sw;cd=10*gw+bw;if(isprime(ab)&&isprime(cd)&&ab>=10&&cd>=10)b[cnt++]=a[i];)for(i=0;i

244for(i=0;i

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

246M);writeDat();)writeDat()(FILE*fp;inti;fp=fopen("out.dat",nwH);fprintf(fp,u%d

247n,ent);for(i=0;i

248",b[i]);fclose(fp);}题目52一知数据文件IN.DAT中存有200个四位数,并己调用读函数readDat()把这些数存入数组a中,请考生编制-函数jsVal(),其功能是:把千位数字和个位数字重新组成一个新的十位数(新十位数的十位数字是原四位数的千位数字,新十位数的个位数字是原四位数的个位数字),以及把百位数字和十位数字组成另一个新的十位数(新十位数的十位数字是原四位数的百位数字,新十位数的个位数字是原四位数的十位数字),如果新组成的两个十位数均是奇数并且两个十位数中至少有一个数能被5整除,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组b中,并要计算满足上述条件的四位数的个数ent,最后main。函数调用写函数writeDat()把结果ent以及数组b中符合条件的四位数输出到OUT.DAT文件中。注意:部分源程序存在文件progl.c中。程序中已定义数组:a[200J,bl200],已定义变量:ent请勿改动数据文件IN.DAT中的任何数据、主函数main。、读函数readDat。和写函数writeDat()的内容。#include#defineMAX200inta[MAX],b[MAX],ent=0;

249voidjsVal(){inti,thou,hun,ten,data,j;intab,cd;for(i=0;i=10&&cd>=10)b[cnt++]=a[i];}for(i=0;i

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

251");writeDat();)writeDat()[FILE*fp;inti;fp=fopen("out.datM,Hw");fprintf(fp,M%d

252M,ent);for(i=0;i

253,\b[i]);fclose(fp);☆题目53已知数据文件in.dat中存有300个四位数,并已调用读函数ReadDat。把这些

254数存入数组a中,请编制一函数jsValue(),其功能是:求出千位数上的数减百位数上的数减十位数上的数减个位数上的数大于零的个数ent,再把所有满足此条件的四位数依次存入数组b中,然后对数组b的四位数按从小到大的顺序进行排序,最后调用写函数writeDat。把结果输出到out.dat文件。例如:9123,9-1-2-3>0,则该数满足条件存入数组b中,且个数cnt=cnt+l。9812,9-8-1-2>0,则该数不满足条件忽略。部分源程序存在文件progl.c中。程序中已定义数组:a[300],b[300],已定义变量:ent请勿改动主函数main。、读函数ReadDat。和写函数writeDat。的内容。#includeinta[3OO],b[3OO],cnt=O;jsValue(){intij,qw,bw,sw,gw;for(i=0;i<300;i++){qw=a[i]/1000;bw=a[i]/100%10;sw=a[i]%100/10;gw=a[i]%10;if((qw-bw-sw-gw)>0)b[cnt++]=a[i];)for(i=0;ib[j]){qw=b[i];b[i]=b[j];b[j]=qw;})main()inti;readDat();jsValue();writeDat();printf(Mcnt=%d

255'\cnt);for(i=0;i}readDat()[FILE*fp;inti;fp=fopen("in.dal",T);for(i=0;i<300;i++)fscanf(fp,M%d,M,&a[i]);fclose(fp);)writeDat()(FILE*fp;inti;fp=fopen(,,out.dat,',nw,');fprintf(fp,"%d

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

257题目54已知数据文件in.dat中存有300个四位数,并已调用读函数ReadDat。把这些数存入数组a中,请编制一函数jsValue。,其功能是:求出千位数上的数加百位数上的数等于十位数上的数加个位数上的数的个数ent,再把所有满足此条件的四位数依次存入数组b中,然后对数组b的四位数按从大到小的顺序进行排序,最后调用写函数writeDat。把结果输出到out.dat文件。例如:7153,7+1=5+3,则该数满足条件存入数组b中,且个数cnt=cnt+L8129,8+102+9,则该数不满足条件忽略。部分源程序存在文件progl.c中。程序中已定义数组:a[300],b[300],已定义变量:ent请勿改动主函数main。、读函数ReadDat()和写函数writeDat。的内容。#includeinta[3OO],b[3OO],cnt=O;jsValue(){inti,j,qw,bw,sw,gw;for(i=0;i<300;i++){qw=a[i]/1000;bw=a[i]/100%10;sw=a[i]%100/10;gw=a[i]%10;if(qw+bw=sw+gw)b[cnt++]=a[i];}for(i=0;i

258'\cnt);for(i=0;i}readDat()(HLE*fp;inti;fp=fopen(Min.dat",,'rM);for(i=0;i<300;i++)fscanf(fp,H%d;',&a[i]);fclose(fp);}writeDat()(FILE*fp;inti;fp=fopen(,,out.dat,',,'wn);fprintf(fp,H%d

259M,cnt);for(i=0;i

260题目55已知数据文件in.dat中存有300个四位数,并已调用读函数ReadDal。把这些数存入数组a中,请编制一函数jsValue。,其功能是:求出所有这些四位数是素数的个数ent,再把所有满足此条件的四位数依次存入数组b中,然后对数组b的四位数按从小到大的顺序进行排序,最后调用写函数writeDat。把结果输出到out.dat文件。例如:5591是素数,则该数满足条件存入数组b中,且个数cnt=cnt+l。9812是非素数,则该数不满足条件忽略。部分源程序存在文件progl.c中。程序中已定义数组:al300],b[3OOJ,已定义变量:ent请勿改动主函数main。、读函数ReadDat。和写函数writeDat。的内容。#includeinta[3OO],b[3OO],cnt=O;intisP(intm){inti;for(i=2;ib[j]){value=b[i];b[i]=b[j];b[j]=value;})main()(inti;readDat();jsValue();writeDat();printf("cnt=%d

261,\cnt);for(i=0;i}readDat()(FILE*fp;inti;fp=fopen(Min.datH/,r't);for(i=0;i<300;i++)fscanf(fp,',%d;',&a[i]);fclose(fp);writeDat()FILE*fp;inti;fp=fopen("out.dat,,,"w,');fprintf(fp,H%d

262",cnt);

263for(i=0;i=,a'&&xx[i][j]*l1%256<=^)continue;elsexx[i][j]=xx[i][j]*ll%256;voidmain()clrscr();if(ReadDat()){printf("数据文件ENGIN不能打开!

264\007”);return;}encryptChar();WriteDat();}

265intReadDat(void)[FILE*fp;inti=0;unsignedchar*p;if((fp=fopen(,,eng.inn;,r,,))==NULL)return1;while(fgets(xx[i],8O,fp)!=NULL){p=strchr(xx[i],

266,);if(p)*p=O;i++;)maxline=i;fclose(fp);return0;)voidWriteDat(void)[FILE*fp;inti;fp=fopen("ps5.dar',"w");for(i=0;i

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

268M,xx[i]);}fclose(fp);★题目57设有n个人围坐一圈并按顺时针方向从1到n编号,从第s个人开始进行1到m的报数,报数到第m个人,此人出圈,再从他的下一个人重新开始1到m的报数,如此进行下去直到所有的人都出圈为止。现要求按出圈次序,给出这n个人的顺序表p。请考生编制函数Josegh()实现此功能并调用函数WriteDaK)把编号按照出圈的顺序输出到OUT.DAT文件中。注意:第1个出圈的编号存放在p[0]中,第2个出圈的编号存放在p[l]中,直至第n个出圈的编号存放在p[n-l]中。设n=100,s=1,m=10进行编程。注意:部分源程序存放在PROG1.C中。清勿改动主函数main()和输出数据函数WriteDat()的内容。#include#defineN100#defineS1

269#defineM10intp[100],n,s,m;voidWriteDat(void);voidJosegh(void){inti,j,sl,w,q[100];for(i=0;isl=s;for(i=1;i<=n;i++)p[i-l]=i;for(i=n;i>=2;i—){sl=(sl+m-l)%i;if(sl==O)sl=i;w=p[sl-l];for(j=sl;jp[i-l]=w;)for(i=0j=n-l;i=0;i++,j-)q[j]=pfi];for(i=0;i

270");fclose(fp);题目58现有一个10个人100行的选票数据文件IN.DAT,其数据存放的格式是每条记录的长度均为10位,第一位表示第一个人的选中情况,第二位表示第二个人的选中情况,依此类推:内容均为字符。和1,1表示此人被选中,0表示此人未被选中,若一张选票人数小于等于5个人

271时被认为无效的选票。给定函数ReadDatO的功能是把选票数据读入到字符串数组xx中。请编制函数CounlRs()来统计每个人的选票数并把得票数依次存入yy⑼到yy[9]中。把结果yy输出到文件OUT.DAT中。部分源程序存在文件progLc中。请勿改动主函数main。、读数据函数ReadDat()和输出数据函数writeDat()的内容。#includecharxx[100][ll];intyy[10];intReadDat(void);voidWriteDat(void);voidCountRs(void){inti,j,count;for(i=0;i<100;i-H-){count=0;for(j=0;j<10;j-H-)if(xx[iHj]==r)count++;if(count<=5)continue;for(j=0;j<10;j++)if(xx[i][)]=='1')yy[j]++;voidmain()(inti;for(i=0;i<10;i++)yy[i]=0;if(ReadDat()){printf("选票数据文件IN.DAT不能打开!

272\007”);return;CountRs();WriteDat();intReadDat(void)[FILE*fp;inti;if((fp=fopen(,'IN.DAT,,;,rH))==NULL)return1;for(i=0;i<100;i++){if(fgets(xx[i],l2,fp)==NULL)return1;xxli][10]=A0';}

273fclose(fp);return0;voidWriteDat(void)[FILE*fp;inti;fp=fopen(nOUT.DATn,"wn);fbr(i=O;i<10;i++){fprintf(fp,,,%d

274,,,yy[i]);printf("第%d个人的选票数=%d

275",i+l,yy[i]);)fclose(fp);★题目59已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat。把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:把千位数字和卜位数字重新组成一个新的十位数ab(新十位数的十位数字是原四位数的千位数字,新十位数的个位数字是原四位数的十位数字),以及把个位数字和百位数字组成另一个新的上位数cd(新十位数的卜位数字是原四位数的个位数字,新十位数的个位数字是原四位数的百位数字),如果新组成的两个十位数ab=10&&cd>=10){b[cnt]=a[i]

276;cnt++;}1for(i=0;i

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

278");writeDat();writeDat()FILE*fp;inti;fp=fopen(nout.datM,"w");fprintf(fp,,,%d

279,',ent);for(i=0;i

280u,b[i]);fclose(fp);)题目60在文件in.dat中有200组数据,每组有3个数,每个数均是三位数。函数ReadDat()读取这200组数据存放到结构数组aa中,请编制函数jsSort(),其函数的功能是:要求在200组数据中找出条件为每组中的第二个数大于第一个数加第三个数的之和,其中满足条件的组数作为函数jsSort()的返回值,同时把满足条件的数据存入结构数组bb中,再对bb中的数据按照每组数据的第二个数加第三个之和的大小进行降序排列(第二个数加第三个数的和均不相等),排序后的结果仍重新存入结构数组bb中,最后调用函数WriteDat。把结果bb输出到文件out.dat中。部分源程序存在文件progl.c中。请勿改动主函数main()、读数据函数ReadDat。和输出数据函数WriteDat。的内容。#include#include#includetypedefstruct{intxl,x2,x3;}data;dataaa[200],bb[200];intjsSort(){inti,j,cnt=0;

281datach;for(i=0;i<200;i++)if(aa[i].x2>aa[i].xl+aa[i].x3)bb[cnt++]=aa[i];for(i=0;i

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

283,',bb[ij.xI,bb[ij.x2,bb[ij.x3);)fclose(out);)★题目61已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称me(字符型10位),单价dj(整型),数量si(整型),金额je(长整型)五部分组成。其中:金额=单价*数量计算得出。函数ReadDat()是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat。,其功能要求:按金额从小到大进行排列,若金额相同,则按产品代码从大到小进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat。把结果输出到文件OUT2.DAT中。

284部分源程序存在文件progLc中。请勿改动主函数main。、读数据函数ReadDat。和输出数据函数WriteDat。的内容。#include#include#include#include#include#defineMAX100typedefstruct{chardm[5];/*产品代码*/char产品名称*/intdj;/*单价*/intsi;/*数量*/longje;/*金额*/}PRO;PROselllMAXJ;voidReadDat();voidWriteDat();voidSortDat(){intij;PROxy;for(i=0;i<99;i++)for(j=i+l;j<100;j++)if(sell[i].je>sell[j].jellsell[i].je==sellfj].je&&strcmp(sell[i].dm,sell[j].dm)

285fp=fopen(',IN.DATn;,rM);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[ij.je=(long)sellli].dj*sell[ij.sl;)fclose(fp);}voidWriteDat(void)[FILE*fp;inti;fp=fopen(,'OUT2.DAT,,;'wH);for(i=0;i<100;i++){printf(M%s%s%4d%5d%5d

286H,sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je);fprintf(fp,M%s%s%4d%5d%5d

287",sell[il.dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je);)fclose(fp);☆题目62函数ReadDat。实现从文件ENGIN中读取一篇英文文章,存入到字符串数组xx中;请编制函数encryptChar。,按给定的替代关系对数组xx中的所有字符进行替代,仍存入数组xx的对应的位置上,最后调用函数WriteDat。把结果xx输出到文件PS2.DAT中。替代关系:f(p)=p*13mod256(p是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCH值),如果计算后f(p)值小于等于32或其ASCII值是偶数,则该字符不变,否则将f(p)所对应的字符进行替代。部分源程序存在文件progl.c中。原始数据文件存放的格式是:每行的宽度均小于80个字符。请勿改动主函数main。、读数据函数ReadDat。和输出数据函数WriteDat()的内容。#include#include#include#include

288unsignedcharxx[50][80];intmaxline=0;/*文章的总行数*/iniReadDat(void);voidWriteDat(void);voidencryptChar(){inti,j;for(i=0;i

289\007");return;)encryptChar();WriteDat();)intReadDat(void)(HLE*fp;inti=0;unsignedchar*p;if((fp=fopen(,'eng.in,,,,'r',))==NULL)return1;while(fgets(xx[i],80,fp)!=NULL){p=strchr(xx[i],,

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

291inti;fp=fopen(Mps2.datM,',wM);for(i=0;i

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

293H,xxli]);}fclose(fp);★题目63程序progl.c的功能是:把s字符串中的所有字符左移一个位置,串中的第一个字符移到最后o请考生编写函数chg(char*s)实现程序要求,最后调用函数readwriteDAT()把结果输出到bc2.out文件中。例如:s字符串中原有内容为:Mn.l23xyZ,则调用该函数后,结果为:n.l23xyZMo注意:部分源程序存在文件progl.c文件中。请勿改动主函数main()利输出数据函数readwriteDAT()的内容。#include#include#defineN81voidreadwriteDAT();voidchg(char*s){inti;charch=*s;for(i=0;i

294FILE*rf,*wf;rf=fopen(Mbc2.inH,V);wf=fopen(,'bc2.outH,"wn);for(i=0;i<50;i++){fscanf(rf,"%s”,a);chg(a);fprintf(wf,n%s

295M,a);}fclose(rf);fclose(wf);★题目64下列程序的功能是:找出所有100以内(含100)满足I,1+4,1+10都是素数的整数I(1+10也在100以内)的个数ent以及这些I之和sum。请编写函数countValue。实现程序要求的功能,最后调用函数writeDat。把结果ent和sum输出到文件out.dat中。部分源程序存在文件progl.c中。请勿改动主函数main。和输出数据函数writeDat。的内容。#includeintent,sum;intisPrime(intm)(inti;for(i=2;iif(m%i==0)return0;return1;}voidcountValue(){inti;for(i=2;i<=90;i++)if(isPrime(i)&&isPrime(i+4)&&isPrime(i+10)){cnt++;sum+=i;})voidmain()(cnt=sum=0;countValue();printf("满足条件的整数的个数=%d

296”,cnt);printf("满足条件的整数的和值=%d

297”,sum);writeDatO;

298writeDat()FILE*fp;fp=fopen(Mout.dat,';,wH);fprintf(fp,,,%d

299%d

300'\cnt,sum);fclose(fp);)☆题目65已知在文件IN.DAT中存有若干个(个数<200)四位数字的正整数,函数ReadDat()读取这若干个正整数并存入数组xx中。请编制函数CalValue。,其功能要求:1、求出这文件中共有多少个正整数totNum;2、求这些数中的各位数字之和是奇数的数的个数totCnt,以及满足此条件的这些数的算术平均值totPjz,最后调用函数writeDat。把所求的结果输出到文件OUT.DAT中。部分源程序存在文件progl.c中。请勿改动主函数main。、读函数ReadDat。和写函数writeDat。的内容。#include#include#defineMAXNUM200intxx[MAXNUM];inttotNumH);/*文件IN.DAT中共有多少个正整数*/inttotCnt=0;/*符合条件的正整数的个数*/doubletotPjz=0.0;/*平均值*/intReadDat(void);voidwriteDat(void);voidCalValue(void){inti,qw,bw,sw,gw;fbr(i=O;i0){totNum++;qw=xx[i]/1000;bw=xx[i]/100%10;sw=xx[i]%100/10;gw=xx[i]%10;if((qw+bw+sw+gw)%2){totCnt++;totPjz+=xx[i];}}if(totCnt==0)totPjz=0;elsetotPjz/=totCnt;voidmain()inti;clrscr();for(i=0;iif(ReadDat()){printf(”数据文件IN.DAT不能打开!\007

301)

302return;}CalValue();primf("文件IN.DAT中共有正整数=%d个

303”,tolNum);printf("符合条件的正整数的个数=%dj

304】otCnt);printf("平均值=%.2f

305”,totPjz);writeDat();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;fp=fopen(,,OUT.DATn;,wH);fprintf(fp,H%d

306%d

307%6.2f

308",totNum,totCnt,totPjz);fclose(fp);}★题目66下列程序progl.c的功能是:计算5OO・8OO区间内素数的个数ent,并按所求素数的值从大到小的顺序,再计算其间隔加、减之和,即第1个素数■第2个素数+第3个素数-第4个素数+第5个素数…的值sumo请编写函数countVakie()实现程序的要求,最后调用函数writeDal。把结果ent和sum,输出到文件OUT11.DAT中。部分源程序已给出。请勿改动主函数main。和输出数据函数writeDat()的内容。#includeintent,sum;intisP(intm){inti;

309for(i=2;i500;i-)if(isP⑴)Icnt++;sum=sum+k*i;k=k*(-l);}voidmain()(cnt=sum=0;countValue();printf("素数的个^[=%d

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

311”,sum);writeDat();)writeDat()[FILE*fp;fp=fopen(nOUTl1.DAT,\,,w,');fprintf(fp,M%d

312%d

313n,cnt,sum);fclose(fp);题目67下列程序的功能是:选出5000以下符合条件的自然数。条件是:千位数字与百位数字之和等于十位数字与个位数字之和,且千位数字与百位数字之和等于个位数字与千位数字之差的10倍。计算并输出这些四位自然数的个数ent以及这些数的和sum。请编写函数countVahie。实现程序的要求,最后调用函数writeDat()把结果ent和sum,输出到文件OUT13.DAT中。部分源程序存在文件progl.c中。请勿改动主函数main。和输出数据函数writeDat()的内容。#includeintent,sum;voidcountValue(){inti,thou,hun,ten,data;

314for(i=1000;i<5000;i++){thou=i/1000;hun=i%1000/100;ten=i%100/10;data=i%10;if(thou+hun==ten+data&&thou4-hun==(data-thou)*10){cnt++;sum+=i;}voidmain()(cnt=sum=0;countValue();printf("满足条件的自然数的个数=%(1\11”,5。;printf("满足条件的自然数的个数之和=%d

315”,sum);writeDat();writeDat()(FILE*fp;fp=fopen("OUT13.DAT",“w");fprintf(fp;,%d

316%d

317",cnt,sum);fclose(fp);)☆题目68已知数据文件IN,DAT中存有200个四位数,并已调用读函数readDat。把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:如果四位数各位上的数字均是奇数,则统计出满足此条件的个数ent并把这些四位数按从大到小的顺序存入数组b中。最后main。函数调用写函数writeDat()把结果ent以及数组b中符合条件的四位数输出到OUT.DAT文件中。注意:部分源程序存在文件progl.c中。程序中已定义数组:a[200],bl200J,已定义变量:ent请勿改动数据文件IN.DAT中的任何数据、主函数main。、读函数readDat。和写函数writeDat()的内容。#include#defineMAX200inta[MAX],b[MAX],ent=0;voidjsVaK){intij,thou,hun,ten,data;for(i=0;i<200;i++){thou=a[i]/l000;hun=alij%1000/100;

318ten=a[i]%100/10;data=a[i]%10;if(thou&&thou%2&&hun%2&&ten%2&&data%2)blcnt++]=a[i];}for(i=0;i

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

320M);writeDatO;writeDat()FILE*fp;inti;fp=fopen("out.dat","w“);fprintf(fp,"%d

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

322u,b[ij);fclose(fp);题目69已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat。把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:把一个四位数的千位数字上的值减去百位数字上的值再减去十位数字上的值最后减去个位数字上的值,如果得出的值大于等于零且原四位数是奇数,则统计出满足此条件的个数ent并把这些四位数按从小到大的顺序存入数组b中,最后调用写函数writeDat。把结果ent以及数组b中符合条件的四位数输出到OUT.DAT文件中。注意:部分源程序存在文件progl.c中。程序中已定义数组:a[200],bl200],已定义变量:ent请勿改动数据文件IN.DAT中的任何数据、主函数main。、读函数readDat。和写函数writeDat()的内容。#include

323#defineMAX200inta[MAX],b[MAX],ent=0;voidjsValO{inti,j,thou,hun,ten,data;for(i=0;i<200;i-H-){thou=a[i]/1000;hun=a[i]%1000/100;ten=a[i]%100/10;data=a[i]%10;if(thou-hun-ten-data>=0&&a[i]%2)b[cnt++]=a[i];}for(i=0;ib[j]){thou=b[i];b[i]=b[j];b[j]=thou;}voidreadDat()[inti;HLE*fp;fp=fopen(Hin.datn,nrM);for(i=0;i

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

325,');writeDat();writeDat()[FILE*fp;inti;fp=fopen("out.datM,"w");fprintf(fp,M%d

326\ent);for(i=0;i

327",b[i]);fclose(fp);题目70已知在文件IN.DAT中存有若干个(个数〈200)四位数字的iE整数,函数ReadDat。

328读取这若干个正整数并存入数组xx中。请编制函数CalValue。,其功能要求:1、求出这文件中共有多少个正整数totNum;2、求这些数右移1位后,产生的新数是奇数的数的个数totCnt,以及满足此条件的这些数(右移前的值)的算术平均值totPjz,最后调用函数writeDat。把所求的结果输出到文件OUT.DAT中。部分源程序存在文件progl.c中。请勿改动主函数main()>读函数ReadDat。和写函数writeDat()的内容。#include#include#defineMAXNUM200intxx[MAXNUM];inttotNum=0;/*文件IN.DAT中共有多少个正整数*/inttotCnt=0;/*符合条件的正整数的个数*/doubletotPjz=0.0;/*平均值*/intReadDat(void);voidwriteDat(void);voidCalValue(void){intifdata;for(i=0;i0){totNum++;data=xx[ij»l;if(data%2){totCnt++;tolPjz+=xx[i];}}if(totCnt==0)totPjz=0;elsetotPjz/=totCnt;voidmain(){inti;clrscr();for(i=0;iif(ReadDat()){printf("数据文件IN.DAT不能打开!\007

329");return;)CalValue();printf("文件IN.DAT中共有正整数二%d个

330】otNum);printff符合条件的正整数的个数=%dj

331”,totCnt);printf("平均值=%.2f

332,totPjz);writeDat();

333)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;FILE*fp;fp=fopen(,,OUT.DATM;,wH);fprintf(fp,1,%d

334%d

335%6.2f

336u,totNum,totCnt,totPjz);fclose(fp);★题目71函数ReadDat()实现从文件in.dat中读取20行数据存放到字符串数组xx中(每行字符串长度均小于80)。请编制函数jsSort(),其函数的功能是:以行为单位对字符串按给定的条件进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数WriteDat()把结果xx输出到文件out.dat中。条件:从字符串中间一分为二,左边部分按字符的ASCII值降序排序,右边部分按字符的ASCII值升序排序。如果原字符串长度为奇数,则最中间的字符不参加排序,字符仍放在原位置上。例如:位置012345678源字符串abcdhgfe123498765则处理后字符串dcbaefgh432195678部分源程序存在文件progl.c中。请勿改动主函数main。、读数据函数ReadDat。和输出数据函数WriteDat。的内容。#include#include#includecharxx[20][80];voidjsSort(){inti,j,k,strl,half;charch;

337for(i=0;i<20;i++){strl=strlen(xx[i]);half=strl/2;for(j=0;jxx[i][k]){ch=xx[i][j];xx[i]|j]=xx[i][k];xx[i][k]=ch;}

338voidmain()(readDat();jsSort();writeDat();)readDat()(FILE*in;inti=0;char*p;in=fopen(',in.dat";,rn);while(i<20&&fgets(xx[i],80,in)!=NULL){p=strchr(xx[i],

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

340”,xx[i]);fprintf(out,n%s

341';xx[i]);)fclose(out);}题目72已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat。把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:把个位数字和千位数字重新组成一个新的十位数(新十位数的十位数字是原四位数的个位数字,新十位数的个位数字是原四位数的千位数字),以及把百位数字和十位数字组成另一个新的十位数(新十位数的十位数字是原四位数的百位数字,新十位数的个位数字是原四位数的十位数字),如果新组成的两个十位数均是偶数并且两个十位数中至少有一个数能被9整除,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组b中,并要计算满足上述条件的四位数的个数ent。最后main。函数调用写函数writeDat()把结果ent以及数组b中符合条件的四位数输出到OUT.DAT文件中。注意:部分源程序存在文件progl.c中。程序中已定义数组:a[2OOJ,b[200J,已定义变量:ent

342请勿改动数据文件IN.DAT中的任何数据、主函数main。、读函数readDat。和写函数writeDat()的内容。#include#defineMAX200inta[MAX],b[MAX]tent=0;voidjsVal(){inti,j,thou,hun,ten,data,ab,cd;for(i=0;i<200;i++){thou=a[i]/l000;hun=a[i]/l00%10;ten=a[i]%100/10;data=a[i]%10;ab=10*data+thou;cd=10*hun+ten;if((ab%9==0llcd%9==0)&&ab%2==0&&cd%2==0&&hun!=0&&data!=0){b[cnt]=a[i];cnt++;})for(i=0;i

343\ent);for(i=0;i

344u);writeDat();writeDat()(FILE*fp;inti;fp=fopen(Mout.dat","w,1);fprintf(fp,H%d

345n,ent);for(i=0;i

346”,b[i]);fclose(fp);}★题目73函数ReadDat。实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中,请编制函数ConverCharD。,其函数的功能是:以行为单位把字符串中的所有小写字母改写成该

347字母的上一个字母,如果是字母a,则改写成字母zo大写字母仍为大写字母,小写字母仍为小写字母,其它字符不变。最后把已处理的字符串仍按行重新存入字符串数组xx中,最后调用函数writeDat。把结果xx输出到文件OUT4.DAT中。例:原文:Adb.Bcdzaabck.LLhj结果:Aca.Bbcyzzabj.LLgi原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。部分源程序存在文件progl.c中。请勿改动主函数main。、读数据函数ReadDat()和输出数据函数writeDat。的内容。#include#include#includecharxx[50][80];intmaxline=0;/*文章的总行数*/intReadDat(void);voidWriteDat(void);voidConvertCharD(void){intij;for(i=0;i=fb,&&xx[i][j]<=,z,)xx[i][j]-=l;

348voidmain()clrscr();if(ReadDat()){printf("数据文件IN.DAT不能打开!

349\007u);return;)ConvertCharD();WriteDatO;}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],,

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

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

352n,xx[i]);)fclose(fp);

353★题目74函数ReadDat。实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中,请编制函数StrCharJLO,其函数的功能是:以行为单位把字符串中的所有字符的ASCH值左移4位,低位补0,如果左移后,其字符的ASCII值小于等于32或大于100,则原字符保持不变,否则就把左移后的字符ASCII值再加上原字符ASCII值,得到新的字符仍存入原字符串对应的位置上。最后把已处理的字符串仍按行重新存入字符串数组xx中,最后调用函数writeDat()把结果xx输出到文件OUT7.DAT中。原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。部分源程序存在文件progl.c中。请勿改动主函数main。、读数据函数ReadDat。和输出数据函数writeDat。的内容。#include#include#includecharxx[50][80J;intmaxline=0;/*文章的总行数*/intReadDat(void);voidWriteDat(void);voidStrCharJL(void){inti,j;charc;for(i=0;i100))xx[i][j]+=c;voidmain()(clrscr();if(ReadDat()){printf("数据文件IN.DAT不能打开!

354\007M);return;)StrCharJLO;WriteDat();intReadDat(void)FILE*fp;

355inti=0;char*p;if((fp=fopen(,,IN.DAT":,r"))==NULL)return1;while(fgets(xx[i],80,fp)!=NULL){p=strchr(xx[i],,

356,);if(p)*p=O;i++;}maxline=i;fclose(fp);return0;}voidWriteDat(void){FILE*fp;inti;clrscr();fp=fopen(,'OUT7.DAT',;'wu);for(i=0;i

357,',xx[i]);fprintf(fp,,,%s

358,,,xx[i]);}fclose(fp);)★题目75在文件in.dat中有200组数据,每组有3个数,每个数均是三位数。函数ReadDat。读取这200组数据存放到结构数组aa中,请编制函数jsSort。,其函数的功能是:要求在200组数据中找出条件为每组中的第一个数大于第二个数加第三个数的和,其中满足条件的组数作为函数jsSort()的返回值,同时把满足条件的数据存入结构数组bb中,再对bb中的数据按照每组数据的第一个数加第三个之和的大小进行升序排列(第一个数加第三个数的和均不相等),排序后的结果仍币:新存入结构数组bb中,最后调用函数wdteDat。把结果bb输出到文件out.dat中。部分源程序存在文件progl.c中。请勿改动主函数main。、读数据函数ReadDat。和输出数据函数WriteDat。的内容。#include#include#includetypedefstruct{intxl,x2,x3;}data;dataaa[200],bb[200J;intjsSort()

359{inti,j,cnt=0;dataxy;for(i=0;i<200;i++)if(aa[i].xl>(aa[i].x2+aa[i].x3))bb[cnt++]=aa[i];for(i=0;ibb[j].xl+bb[j].x3){xy=bb[i];bb[i]=bb[j];bb[j]=xy;}returnent;}voidmain()(intcount;readDat();count=jsSort();/*返回满足条件的个数*/writeDat(count);}readDat()(HLE*in;inti;in=fopen(uin.dat",,,rH);for(i=0;i<200;i++)fscanf(in,u%d%d%dM,&aa[i].xl,&aa[i].x2,&aa[i].x3);fclose(in);}writeDat(intcount)(FILE*out;inti;clrscr();out=fopen(nout.datn,"w");for(i=0;iprintf(H%d,%d,%d第一个数+第三个数=%d

360M,bb[i].xI,bb[i].x2,bb[i].x3,bb[i].x1+bb[i].x3);fprintf(out,M%d%d%d

361M,bb[i].x1,bb[i].x2,bb[i].x3);fclose(out);

362★题目76已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:把个位数字和千位数字重新组成一个新的十位数(新十位数的十位数字是原四位数的个位数字,新十位数的个位数字是原四位数的千位数字),以及把百位数字和卜位数字组成另一个新的十位数(新卜位数的卜位数字是原四位数的百位数字,新十位数的个位数字是原四位数的十位数字),如果新组成的两个十位数必须是一个奇数,另一个为偶数并且两个十位数中至少有一个数能被17整除,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组b中,并要计算满足上述条件的四位数的个数ent。最后main。函数调用写函数writeDat。把结果ent以及数组b中符合条件的四位数输出到OUT.DAT文件中。注意:部分源程序存在文件progl.c中。程序中已定义数组:a[200],b[200],已定义变量:ent请勿改动数据文件IN.DAT中的任何数据、主函数main。、读函数readDat。和写函数writeDat()的内容。#include#defineMAX200inta[MAX],b[MAX],ent=0;voidjsVal(){inti,j,thou,hun,ten,data,ab,cd;for(i=0;i=l0&&cd>=10))b[cnt++]=a[i];)for(i=0;i

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

364,');

365writeDat();)writeDat()[FILE*fp;inti;fp=fopen("out.datH,Hw");fprintf(fp,"%d

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

367H,b[i]);fclose(fp);★题目77已知数据文件IN.DAT中存有200个四位数,并已调用读函数比adDat。把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:把一个四位数的千位数字上的值加上十位数字上的值恰好等于百位数字上的值加上个位数字上的值,并且原四位数是偶数,则统计出满足此条件的个数ent并把这些四位数按从小到大的顺序存入数组b中,最后调用写函数writeDat()把结果ent以及数组b中符合条件的四位数输出到OUT.DAT文件中。注意:部分源程序存在文件progl.c中。程序中已定义数组:a[200],b[200],已定义变量:ent请勿改动数据文件IN.DAT中的任何数据、主函数main。、读函数readDat。和写函数writeDat。的内容。#include#defineMAX200inta[MAX],b[MAX],ent=0;voidjsVal()(inti,j,thou,hun,ten,data;for(i=0;ib[j]){thou=b[i];b[i]=b[j];b[j]=thou;}voidreadDat()[

368inti;FILE*fp;fp=fopen(Min.datn,Mrn);for(i=0;i

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

370,\ent);for(i=0;i

371",b[i]);fclose(fp);★题目78已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat。把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:若一个四位数的千位数字上的值大于等于百位数字上的值,百位数字上的值大于等于十位数字上的值,以及十位数字上的值大于等于个位数字上的值,并且原四位数是奇数,则统计出满足此条件的个数ent并把这些四位数按从小到大的顺序存入数组b中,最后调用写函数writeDat()把结果ent以及数组b中符合条件的数输出到OUT.DAT文件中。注意:部分源程序存在文件progl.c中。程序中已定义数组:aL2OOJ,b[200],已定义变量:ent请勿改动数据文件IN.DAT中的任何数据、主函数main。、读函数readDat。和写函数writeDat()的内容。#include#defineMAX200inta[MAX],b[MAX],ent=0;voidjsVal()

372{intij,thou,hun,ten,data;for(i=0;i=hun&&hun>=ten&&ten>=data&&a[i]%2)b[cnt++]=a[ij;}for(i=0;ib[j]){thou=b[i];b[i]=b[j];b[j]=thou;}voidreadDat()[inti;FILE*fp;fp=fopen(nin.dat",nr");for(i=0;i

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

374,');writeDat();

375writeDat()FILE*fp;inti;fp=fopen("out.dat","w");fprintf(fp,M%d

376\ent);for(i=0;i

377H,b[i]);fclose(fp);★题目79请编写函数voidcountValue(int*a,int*n),它的功能是:求出1到1000之内能被7或11整除但不能同时被7或11整除的所有整数放在数组a中,并通过n返回这些数的个数。部分源程序存在文件progl.c中。请勿改动主函数main。和输出数据函数writeDAT()的内容。#include#includevoidcountValue(int*a,int*n){inti;*n=0;for(i=l;i<=1000;i++)if(i%7==0&&i%lllli%7&&i%ll==0)a[(*n)++]=i;main()(intaa[1000],n,k;clrscr();countValue(aa,&n);for(k=0;k

378M);elseprintf(H%5d';aa[k]);writeDAT();writeDAT()

379FILE*fp;fp=fopen(Houtl9.dat1',MwH);countValue(aa,&n);for(k=0;k

380");elsefprintf(fpj%5d”,aa[k]);fprintf(fp;'

381H);fclose(fp);)题目80已知数据文件in.dat中存有300个四位数,并已调用读函数ReadDat。把这些数存入数组a中,请编制一函数jsValueO,其功能是:求出个位数上的数减千位数上的数减百位数上的数减卜位数上的数大于零的个数ent,再求出所有满足此条件的四位数平均值pjzl,以及不满足此条件的四位数平均值pjz2,最后调用写函数writeDat。把结果输出到out.dat文件。例如:1239,9-1-2-3>0,则该数满足条件计算平均值pjzl,且个数cnt=cnt+l。8129,9-8-1-2<0,则该数不满足条件计算平均值pjz2。部分源程序存在文件progl.c中。程序中已定义数组:a[300],已定义变量:cnt,pjzl,pjz2请勿改动主函数main。、读函数ReadDat。和写函数writeDat。的内容。#includeinta[300],cnt=0;doublepjz1=0.0,pjz2=0.0;jsValueO{inti,j,thou,hun,ten,data,n=0;for(i=0;i<300;i++){thou=a[i]/1000;hun=a[i]/100%10;ten=a[i]%100/10;data=a[i]%10;if(data-thou-hun-ten>0){cnt++;pjzl+=a[i];}else{n++;pjz2+=a[i];}}if(cnt=O)pjz1=0;elsepjzl/=cnt;if(n==0)pjz2=0;elsepjz2/=n;)main()inti;readDat();jsValue();

382writeDat();printf(ncnt=%d

383满足条件的平均值pzjl=%7.2f

384不满足条件的平均值pzj2=%7.2f

385'\cnt,pjzl,pjz2);(readDat(){FILE*fp;inti;fp=fopen(,,in.dat,,,Hrn);for(i=0;i<300;i++)fscanf(fp,,,%d;',&a[i]);fclose(fp);}writeDat()(FILE*fp;inti;fp=fopen("out.dat,,,"w,');fprintf(fp,M%d

386%7.2f

387%7.2f

388",cnt,pjzl,pjz2);fclose(fp);)☆题目81已知数据文件in.dat中存有300个四位数,并已调用读函数ReadDat。把这些数存入数组a中,请编制一函数jsValue。,其功能是:求出千位数上的数加百位数等于十位数上的数加个位数上的数的个数cm,再求出所有满足此条件的四位数平均值pjzl,以及不满足此条件的四位数平均值pjz2,最后调用写函数writeDat()把结果输出到out.dat文件。例如:7153,7+1=5+3,则该数满足条件计算平均值pjzl,且个数cnt=cnt+l«8129,8+102+9,则该数不满足条件计算平均值pjz2。部分源程序存在文件progl.c中。程序中已定义数组:a[300],已定义变量:cnt,pjzl,pjz2o请勿改动主:函数main。、读函数ReadDat。和写函数wrileDat。的内容。#includeinta[300],cnt=0;doublepjz1=0.0,pjz2=0.0;jsValue(){inti,thou,hun,ten,data,n=0;for(i=0;i<300;i++){thou=a[i]/1000;hun=a[i]%1000/100;ten=ali]%100/10;data=a[i]%IO;

389if(thou+hun=ten+data){cnt++;pjz1+=a[i];}else{n++;pjz2+=a[i];}}if(cnt=0)pjzl=0;elsepjzl/=cnt;if(n==0)pjz2=0;elsepjz2/=n;}main()(inti;readDat();jsValue();writeDat();printf(',cnt=%d

390满足条件的平均值pzjl=%7.2An不满足条件的平均值pzj2=%7.2f

391u,cnt,pjzl,pjz2);}readDat()(FILE*fp;inti;fp=fopen(nin.dat',,,,rn);for(i=0;i<300;i++)fscanf(fp,',%d;',&a[i]);fclose(fp);)writeDat()(FILE*fp;inti;fp=fopen(Mout.dat,',,,wn);fprintf(fp,,,%d

392%7.2f

393%7.2f

394,,,cnt,pjzl,pjz2);fclose(fp);}★题目82已知数据文件in.dat中存有300个四位数,并已调用读函数ReadDat。把这些数存入数

395组a中,请编制一函数jsVakieO,其功能是:求出所有这些四位数是素数的个数ent,再求出所有满足此条件的四位数平均值pjzl,以及不满足此条件的四位数平均值pjz2,最后调用写函数writeDat。把结果cnt,pjzl,pjz2输出到out.dat文件。例如:5591是素数,则该数满足条件计算平均值pjzl,且个数cm=cnt+L9812是非素数,则该数不满足条件计算平均值pjz2o部分源程序存在文件progLc中。程序中已定义数组:a[300],已定义变量:cnupjzl,pjz2请勿改动主函数main。、读函数ReadDat。和写函数writeDat。的内容。#includeintaL3OOJ,cnt=O;doublepjzl=0.0,pjz2=0.0;intisP(intm){inti;for(i=2;i

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

397不满足条件的平均值pzj2=%7.2f

398",cnt,pjzl,pjz2);FILE*fp;

399inti;fp=fopen(',in.datn,,,rH);for(i=0;i<300;i++)fscanf(fp,M%dM,&a[i]);fclose(fp);}writeDat()FILE*fp;inti;fp=fopen(,,out.dat,';,wM);fprintf(fjp,M%d

400%7.2f

401%7.2f

402M,cnt,pjzl,pjz2);fclose(fp);☆题目83请编制函数ReadDat。实现从文件IN.DAT中读取1000个十进制整数到数组xx中;请编制函数Compute。分别计算出xx中奇数的个数odd,奇数的平均值avel,偶数的平均值ave2以及所有奇数的方差totfc的值,最后调用函数WriteDat。把结果输出到OUT.DAT文件中。计算方差的公式如下:N2totfc=l/NL(xx[i]-avel)i=l设N为奇数的个数,xx[i]为奇数,avel为奇数的平均值。原始数据文件存放的格式是:每行存放10个数,并用逗号隔开。(每个数均大于。且小于等于2000)部分源程序存在文件progl.c中。请勿改动主函数main()和输出数据函数writeDat。的内容。#include#include#include#defineMAX1000intxx[MAX],odd=0,even=0;doubleave1=0.0,ave2=0.0,totfc=0.0;voidWriteDat(void);intReadDat(void)

403inti;FILE*fp;if((fp=fopen("IN.DAT,,,Hr"))==NULL)return1;/*********编制函数ReadDat。的部分************/for(i=0;i

404M);fclose(fp);return0;}voidCompute(void){inti,yy[MAX];for(i=0;i

405");return;}ComputeO;printf(nODD=%d

406AVE1=%f

407AVE2=%f

408TOTFC=%f

409",odd,avel,ave2,totfc);WriteDat();IvoidWriteDat(void)

410(FILE*fp;inti;fp=fopen(',OUT.DAT',;,wH);fprintf(fp,n%d

411%f

412%f

413%f

414n,odd,ave1,ave2,totfc);fclose(fp);}☆题目84现有一个10个人100行的选票数据文件IN.DAT,其数据存放的格式是每条记录的长度均为10位,第一位表示第一个人的选中情况,第二位表示第二个人的选中情况,依此类推:内容均为字符0和1,1表示此人被选中,0表示此人未被选中,若一张选票人数大于5个人时被认为无效的选票。给定函数ReadDat()的功能是把选票数据读入到字符串数组xx中。请编制函数CountRs。来统计每个人的选票数并把得票数依次存入yy[0]至ijyy[9]中。把结果yy输出到文件OUT.DAT中。部分源程序存在文件progl.c中。请勿改动主函数main。、读数据函数ReadDat。和输出数据函数writeDat。的内容。#includecharxx[100][ll];intyy[10];intReadDat(void);voidWriteDat(void);voidCountRs(void){inti,j,count;for(i=0;i<100;i++){count=0;for(j=0;j<10;j++)if(xx[i][j]==,r)count++;if(count>5)continue;for(j=0;j<10;j-H-)if(xx[i][j]=='r)yy[j]++;voidmain()inti;for(i=0;i<10;i++)yy[i]=0;if(ReadDat()){printf("选票数据文件IN.DAT不能打开!

415\007”);return;}CountRs();

416WriteDat();IintReadDat(void)(FILE*fp;inti;if((fp=fopen(,'IN.DAT,,,V))==NULL)return1;for(i=0;i<100;i++){if(fgets(xx[ij,l2,fp)==NULL)return1;xx[i][10]=W;}fclose(fp);return0;}voidWriteDat(void)(FILE*fp;inti;fp=fopen(nOUT.DAT,V,wM);for(i=0;i<10;i++){fprintf(fp,M%d

417M,yy[i]);printf("第%d个人的选票数=%d

418”,i+l,yy[i]);}fclose(fp);☆题目85已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat。把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:把一个四位数的个位数字上的值减去千位数字上的值再减去百位数字上的值最后减去十位数字上的值,如果得出的值大于等于零且原四位数是偶数,则统计出满足此条件的个数ent并把这些四位数按从小到大的顺序存入数组b中,最后调用写函数writeDat()把结果ent以及数组b中符合条件的四位数输出到OUT.DAT文件中。注意:部分源程序存在文件progLc中。程序中已定义数组:a[200],b[200],已定义变量:ent请勿改动数据文件1N.DAT中的任何数据、主函数main。、读函数readDat()和写函数writeDal()的内容。

419#include#defineMAX200inta[MAX],b[MAX],ent=0;voidjsVal(){inti,j,thou,hun,ten,data;for(i=0;i=0&&a[ij%2=0)b[cnt++[=a[i];}for(i=0;ib[j]){thou=b[i];b[i]=b[j];b[j]=thou;}}voidreadDat()(inti;FILE町p;fp=fopen(Min.dat",nr");for(i=0;i

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

421,');writeDat();writeDat()FILE*fp;inti;fp=fopen("out.datM,"w");fprintf(fp,M%d

422H,ent);for(i=0;i

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

424(新十位数的十位数字是原四位数的千位数字,新十位数的个位数字是原四位数的十位数字),以及把个位数字和百位数字组成另•个新的十位数cd(新十位数的十位数字是原四位数的个位数字,新十位数的个位数字是原四位数的百位数字),如果新组成的两个十位数ab>cd,ab必须是偶数且能被5整除,cd必须是奇数,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组b中,并要计算满足上述条件的四位数的个数ento最后main。函数调用写函数writeDat()把结果ent以及数组b中符合条件的四位数输出到OUT.DAT文件中。注意:部分源程序存在文件progl.c中。程序中已定义数组:a[200],b[200],已定义变量:ent请勿改动数据文件IN.DAT中的任何数据、主函数main。、读函数readDat。和写函数writeDat()的内容。#include#defineMAX200inta[MAX],b[MAX],ent=0;voidjsVal(){inti,j,thou,hun,ten,data,ab,cd;for(i=0;i0&&(ab%2!=1&&ab%5==0)&&cd%2=1&&ab>=10&&cd>=10){b[cnt]=a[i];cnt++;)}for(i=0;i

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

426");writeDat();

427writeDat()IFILE*fp;inti;fp=fopen(Mout.datM,"w");fprintf(fp,"%d

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

429u,b[i]);fclose(fp);☆题目87已知数据文件in.dat中存有300个四位数,并已调用读函数ReadDat()把这些数存入数组a中,请编制一函数jsVakie(),其功能是:求出千位数上的数加个位数等于百位数上的数加十位数上的数的个数ent,再求出所有满足此条件的四位数平均值pjzl,以及不满足此条件的四位数平均值pjz2,最后调用写函数把结果输出到out.dat文件。例如:6712,6+2=7+1,则该数满足条件计算平均值pjzl,且个数cnt=cnt+l.8129,8+901+2,则该数不满足条件计算平均值pjz2。部分源程序存在文件progl.c中。程序中已定义数组:a[300],已定义变量:ent,pjzl,pjz2。请勿改动主函数main。、读函数ReadDat。和写函数writeDat。的内容。#includeinta[300],cnt=0;doublepjzl=0.0,pjz2=0.0;jsValue(){inti,gw,sw,bw,qw,cnt2=0;for(i=0;i<300;i++){gw=a[i]%10;sw=a[i]/10%10;bw=a[i]/100%10;qw=a[i]/1000;if((qw+gw)==(sw+bw)){cnt+4-;pjzl+=a[iJ;}else{cnt2++;pjz2+=a[i];)}if(cnt==O)pjzl=O;elsepjzl/=cnt;if(cnt2==O)pjz2=O;elsepjz2/=cnt2;main()(inti;readDat();jsValue();writeDat();

430printf(Hcnt=%d

431满足条件的平均值pzjl=%7.2f

432不满足条件的平均值pzj2=%7.2f

433'\cnt,pjzl,pjz2);}readDat()(FILE*fp;inti;fp=fopen(”in.dat”,T);for(i=0;i<300;i++)fscanf(fp,n%d;',&a[i]);fclose(fp);)writeDat()(FILE*fp;inti;fp=fopen(,,out.dat",,,wn);fprintf(fp,n%d

434%7.2f

435%7.2f

436M,cnt,pjzl,pjz2);fclose(fp);题目88函数ReadDat()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中,请编制函数SortCharAO,其函数的功能是:以行为单位对字符按从小到大的顺序进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数writeDat。把结果xx输出到文件OUT1.DAT中。例:原文:dAe,BfC.CCbbAA结果:,.ABCdefAACCbb原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。部分源程序存在文件progl.c中。请勿改动主函数main()、读数据函数ReadDat。和输出数据函数writeDat。的内容。#include#include#includecharxx[50][80];intmaxline=0;/*文章的总行数*/intReadDat(void);voidWriteDat(void);voidSortCharA(void){intij,k,strl;

437charch;for(i=0;ixx[i][k])(ch=xx[i][j];xx[i][j]=xx[i][k];xx[i][k]=ch;}voidmain()(clrscr();if(ReadDat()){prinlf("数据文件IN.DAT不能打开!

438\007M);return;SortCharA();WriteDat();intReadDat(void)FILE*fp;inti=0;char*p;if((fp=fopen(1,IN.DAr,;,rH))==NULL)return1;while(fgets(xx[i],80,fp)!=NULL){p=strchr(xx[i],,

439,);if(p)*p=O;i++;}maxline=i;fclose(fp);return0;)voidWriteDat(void)[HLE*fp;inti;clrscr();fp=fopen(,,OUTl.DAT'\"w'');for(i=0;i

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

441n,xx[i]);)

442fclose(fp);题目89已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat。把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:把一个四位数的千位数字上的值加上个位数字上的值恰好等于百位数字上的值加上十位数字上的值,并且原四位数是奇数,则统计出满足此条件的个数ent并把这些四位数按从小到大的顺序存入数组b中,最后调用写函数writeDat()把结果ent以及数组b中符合条件的四位数输出到OUT.DAT文件中。注意:部分源程序存在文件progLc中。程序中已定义数组:a[200],b[200],已定义变量:ent请勿改动数据文件IN.DAT中的任何数据、主函数main。、读函数readDat()和写函数writeDat()的内容。#include#defineMAX200inta[MAX],b[MAX],ent=0;voidjsVal()(inti,j,gw,sw,bw,qw;for(i=0;ib|jj){qw=b[i];b[i]=b|jj;b[j]=qw;})voidreadDat()(inti;FILE*fp;fp=fopen("in.dat","r");for(i=0;i

443jsVal();printf("满足条件的数=%d

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

445");writeDat();}writeDal()(FILE*fp;inti;fp=fopen(MoutdatM,Mw");fprintf(fp,,,%d

446\ent);for(i=0;i

447",b[i]);fclose(fp);★题目90下列程序的功能是:将一正整数序列{KI,K2,…,K9}重新排列成一个新的序列。新序列中,比K1小的数都在K1的前面(左面),比K1大的数都在K1的后面(右面)。要求编写函数jsValue()实现此功能>最后调用writeDat()函数将新序列输出到文件out.dat中=说明:在程序中已给出了10个序列,每个序列有9个正整数,并存入数组a[10][9]中,分别求出这10个新序列。例:序列{6,8,9,1,2,5,4,7,3}经重排后成为{3,4,5,2』,6,8,9,7)部分源程序存在文件progl.c中。请勿改动主函数main。和写函数writeDat。的内容。#includejsValue(inta[10][9]){inti,j,k,val,num;for(i=0;i<10;i-H-){val=a[i][0];for(j=0;j<9;j++)if(a[i]U]0;k-)a[i][k]=a[i][k-l];a[i][0]=num;main()(inta[10][9]={{6,8,9,1,2,5,4,7,3),(3,5,8,9,1,2,6,4,7),(821,9,3,5,4,6,7},{3,5,129,8,6,7,4},(4,7,891,2,5,3,6},{4,7,3,5,126,8,9},(9,1,3,5,8,6,2,4,7),(2,6,1,9,8,3,5,7,4),(5,3,7,9,1,8,2,6,4),{7,1,325,8,9,4,6},

448intij;jsValue(a);for(i=0;i<10;i++){for(j=0;j<9;j++){printf("%d",a[i][j]);ifU<=7)printf(",");)printf("

449");}writeDat(a);writeDat(inta[10][9])(FILE*fp;inti,j;fp=fopen("out.dat","w");for(i=0;i<10;i++){for(j=0;j<9;j++){printf("%d",a[i][j]);fprintf(fp,"%d",a[i]|j]);if(j<=7)fprintf(fp,",");)printf("

450");fprintf(fp,"

451");}fclose(fp);题目91请编制程序progl.c,从文件in.dat中读取200个整数至数组xx中,求出奇数的个数cntl和偶数的个数cm2以及数组xx下标为偶数的元素值的算术平均值pj(保留2位小数)。结果cntl,cnt2,pj输出到out.dat中。部分程序、读数据函数read_dat(intxx[200])及输出格式已给出。#include#include#defineN200voidread_dat(intxx[N])(inti,j;FILE*fp;fp=fopen("in.dat\T');for(i=0;i<20;i++){for(j=0;j<10y++){fscanf(fp,M%d,M,&xx[i*l0+j]);printf(M%d\xx[i*10+j]);}printf(,'

452,');}fclose(fp);}voidmain()[inti,j,sum;

453intcntl,cnt2,xx[N];floatpj;FILE*fw;clrscr();fw=fopen(',out.dat,',,,wH);read_dat(xx);sum=0;pj=O.O;cntl=cnt2=0;for(i=0;i{if(xx[i]%2)cntl++;elsecnt2++;if(i%2==0){pj+=xx[i];sum++;}}pj/=sum;printf(''

454

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

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

457%d

458%6.2f

459',,cntl,cnt2,pj);fclose(fw);☆题目92请编制程序progl.c,从文件IN.DAT中读取200个整数至数组xx中,求出最大数max及最大数的个数ent和数组xx中能被3整除或能被7整除的算术平均值pj(保留2位小数)。结果max,ent,pj输出到OUT.DAT中。部分程序、读数据函数read_dat(intxx[200])及输出格式已给出。#include#include#defineN200voidread_dat(intxx[NJ)!inti,j;FILE*fp;fp=fopen(Min.dat,V,rM);for(i=0;i<20;i++){for(j=0;j<10;j++){fscanf(fpJ%d,",&xx[i*10+jJ);printf(M%dM,xx[i*10+j]);}printf(”

460");)fclose(fp);

461voidmain()(intm,temp,n,sum;intcnt,xx[N],max;floatpj;FILE*fw;clrscr();fw=fopen(,'out.dat,,,"wH);read_dat(xx);cnt=0;max=xx[0];pj=O.O;n=0;for(m=0;m

462

463max=%d,cnt=%d,pj=%6.2f

464",max,cnt,pj);fprintf(fw,"%d

465%d

466%6.2f

467n,max,cnt,pj);fclose(fw);☆题目93请编制函数ReadDat。实现从文件IN.DAT中读取1000个十进制整数到数组xx中;请编制函数Compute(),分别计算出xx中奇数的个数odd,偶数的个数even,平均值aver以及方差totfc的值,最后调用函数WriteDat。把结果输出到OUT.DAT文件中。计算方差的公式如下:N2totfc=l/NL(xx[i]-aver)i=l原始数据文件存放的格式是:每行存放10个数,并用逗号隔开。(每个数均大于0且小于等于2000)部分源程序存在文件progl.c中。请勿改动主函数main。和输出数据函数writeDat()的内容。#include#include#include#defineMAX1000intxx[MAX],odd=0,even=0;doubleaver=0.0,totfc=0.0;voidWriteDat(void);intReadDat(void)inti;

468HLE*fp;if((fp=fopen(nIN.DAT,';,r',))==NULL)return1;/***************编制函数ReadDat。*****************/for(i=0;i

469M);fclose(fp);return0;voidCompute(void){inti;for(i=0;i

470");return;)Compute();printf("ODD=%d

471OVEN=%d

472AVER=%f

473TOTFC=%f

474';odd,even,aver,totfc);WriteDat();)voidWriteDat(void)[FILE*fp;inti;

475fp=fopen(,,OUT.DATM:,wM);fprintf(fp,,,%d

476%d

477%f

478%f

479,\odd,even,aver,totfc);fclose(fp);题目94请编制程序progl.c,从文件in.dat中读取200个整数至数组xx中,求出奇数的个数cntl和偶数的个数cnt2以及数组xx中值为偶数的算术平均值pj(保留2位小数)。结果cntl,cnt2,pj输出到out.dat中。部分程序、读数据函数read_dat(intxx[200])及输出格式—给出。#include#include#defineN200voidread_dat(intxx[N])(inti,j;FILE*fp;fp=fopen(Hin.datM,Mrn);for(i=0;i<20;i++){for(j=0;j<10;j++){fscanf(fp?'%d,'\&xx[i*10+j]);printf(H%d”,xx[i*10+j]);}printf(M

480u);}fclose(fp);}voidmain()(intm,sum;intcntl,cnt2,xx[N];floatpj;FILE*fw;fw=fopen(,'out.dat,',Mw,');clrscr();read_dat(xx);cntl=0;cnt2=0;pj=O.O;

481for(m=0;m

482

483cnt1=%d,cnt2=%d,pj=%6.2f

484",cnt1,cnt2,pj);fprintf(fw,M%d

485%d

486%6.2f

487M,cntl,cnt2,pj);fclose(fw);☆题目95函数ReadDat。实现从文件ENGIN中读取一篇英文文章,存入到字符串数组xx中;请编制函数encryptChar(),按给定的替代关系对数组xx中的所有字符进行替代,仍存入数组xx的对应的位置上,最后调用函数WrileDal。把结果xx输出到文件PS4.DA中。替代关系:f(p)=p*llmod256(p是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果计算后f(p)值小于等于32或f(p)对应的字符是大写字母,则该字符不变,否则将f(p)所对应的字符进行替代。部分源程序存在文件progl.c中。原始数据文件存放的格式是:每行的宽度均小于80个字符。请勿改动主:函数main。、读数据函数ReadDat。和输出数据函数WriteDat。的内容。#include#include#include#includeunsignedcharxx[50][80];intmaxline=0;/*文章的总行数*/intReadDat(void);voidWriteDat(void);voidencryptChar(){inti,j;for(i=0;i='A,&&xx[i][j]*ll%256<=,Z')continue;elsexx[i][j]=xx[i][j]*ll%256;voidmain()(

488clrscr();if(ReadDat()){printf("数据文件ENGIN不能打开!

489\007H);return;}encryptChar();WriteDat();intReadDat(void)(FILE*fp;inti=0;unsignedchar*p;if((fp=fopen(Meng.inK,,,r,,))==NULL)return1;while(fgets(xx[i],80,fp)!=NULL){p=strchr(xx[i],An,);if(p)*p=O;i++;)maxline=i;fclose(fp);return0;}voidWriteDat(void)(FILE*fp;inti;fp=fopen("ps4.dat","w");for(i=0;i

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

491,,,xx[i]);}fclose(fp);☆题目96函数ReadDatO实现从文件ENGIN中读取一篇英文文章,存入到字符串数组xx中:请编制函数encryptChar(),按给定的替代关系对数组xx中的所有字符进行替代,仍存入数组xx的对应的位置上,最后调用函数WriteDat()把结果xx输出到文件PS5.DAT中。替代关系:f(p)=p*llmod256(p是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果原字符是小写字母或计算后f(p)值小于等于32,则该字符不变,否则将f(p)

492所对应的字符进行替代。部分源程序存在文件progl.c中。原始数据文件存放的格式是:每行的宽度均小于80个字符。请勿改动主函数main。、读数据函数ReadDatO和输出数据函数WriteDat。的内容。#include#include#include#includeunsignedcharxx[50][80];intmaxline=O;/*文章的总行数*/intReadDat(void);voidWriteDat(void);voidencryptChar(){intij;for(i=0;i=,a,&&xx[i][j]<=,z,)continue;elsexx[i][j]=xx[i][j]*l1%256;!voidmain()(clrscr();if(ReadDat()){printf("数据文件ENGIN不能打开!

493\007");return;)encryptChar();WriteDatO;}intReadDat(void)(FILE*fp;inti=0;unsignedchar*p;if((fp=fopen(Heng.inM,MrM))=NULL)return1;while(fgets(xx[i],80,fp)!=NULL){p=strchr(xx[i],

494,);if(p)*p=O;

495i++;)maxline=i;fclose(fp);return0;voidWriteDat(void)[FILE*fp;inti;fp=fopen("ps5.dat,,;,wn);for(i=0;i

496H,xx[i]);fprintf(fp」%s

497”,xx[i]);)fclose(fp);★题目97函数ReadDat。实现从文件ENGIN中读取一篇英文文章,存入到字符串数组xx中;请编制函数encryptChar(),按给定的替代关系对数组xx中的所有字符进行替代,仍存入数组xx的对应的位置匕最或调用函数WriteDat()把结果xx输出到文件PS9.DAT中。替代关系:f(p)=p*llmod256(p是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果原字符是数字字符。至9或计算后f(p)值小于等于32,则该字符不变,否则将f(p)所对应的字符进行替代。部分源程序存在文件progl.c中。原始数据文件存放的格式是:每行的宽度均小于80个字符。请勿改动主函数main。、读数据函数ReadDat。和输出数据函数WriteDat。的内容。#include#include#include#includeunsignedcharxx[50][80];intmaxline=0;/*文章的总行数*/intReadDat(void);voidWriteDat(void);voidencryptChar()

498{inti,j;for(i=0;i='0'&&xx[i][j]<=,9,)continue;elsexx[i[[j]=xx[i][j]*l1%256;voidmain()(clrscr();if(ReadDat()){printf("数据文件ENGIN不能打开!

499\007u);return;)encryptChar();WriteDat();)intReadDat(void)(FILE*fp;inti=0;unsignedchar*p;if((fp=fopen(Meng.inM,Mr"))==NULL)return1;while(fgets(xx[i],80,fp)!=NULL){p=strchr(xx[i]^nt);if(p)*p=O;i++;}maxline=i;fclose(fp);return0;)voidWriteDat(void)(FILE*fp;inti;fp二fopen(”ps9.dat","w");for(i=0;i

500*',xx[i]);fprintf(fp,"%s

501\xx[i]);}fclose(fp);

502★题目98函数ReadDat()实现从文件ENG.IN中读取一篇英文文章,存入到字符串数组xx中;请编制函数encryptChar(),按给定的替代关系对数组xx中的所有字符进行替代,仍存入数组xx的对应的位置上,最后调用函数WriteDat()把结果xx输出到文件PS3.DAT中。替代关系:f(p)=p*17mod256(p是数组中某一个字符的ASCH值,f(p)是计算后新字符的ASCII值),如果计算后f(p)值小于等于32或其ASCII值是奇数,则该字符不变,否则将f(p)所对应的字符进行替代。部分源程序存在文件progl.c中。原始数据文件存放的格式是:每行的宽度均小于80个字符。请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。#include#include#include#includeunsignedcharxx[50J[80J;intmaxline=0;/*文章的总行数*/intReadDat(void);voidWriteDat(void);voidencryptChar(){intij;for(i=0;i

503\007u);return;)encryptChar();WriteDat();)intReadDat(void)FILE*fp;inti=0;unsignedchar*p;

504if((fp=fopen("eng.in",,,r"))==NULL)return1;while(fgets(xx[i],80,fp)!=NULL){p=strchr(xx[i],'

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

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

507,',xx[i]);}fclose(fp);题目99已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称me(字符型10位),单价dj(整型),数量si(整型),金额je(长整型)五部分组成。其中:金额=单价*数量计算得出。函数ReadDat。是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat。,其功能要求:按金额从小到大进行排列,若金额相等,则按产品代码从小到大进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat。把结果输出到文件OUT1.DAT中。部分源程序存在文件progl.c中。请勿改动主:函数main。、读数据函数ReadDat()和输出数据函数WriteDat。的内容。#include#include#include#include#include#defineMAX100typedefstruct{chardm[5];/*产品代码*/

508charmc[ll];/*产品名称*/intdj;/*单价*/inisi;/*数量longje;/*金额*/}PRO;PROsell[MAXJ;voidReadDal();voidWriteDat();voidSortDat(){intij;PROxy;for(i=0;i<99;i++)for(j=i+1;j<100;j++)if(sell[i].je>sell[j].jellsell[i].je=sell[j].je&&strcmp(sell[i].dm,sell[j].dm)>O){xy=sell[i];sell[i]=sell[j];sell[j]=xy;}!voidmain()(memset(sell,0,sizeof(sell));ReadDat();SortDat();WriteDat();}voidReadDat()(HLE*fp;charstr[80],ch[ll];inti;fp=fopen(',IN.DATn;,rn);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[ij.dj*sell[ij.sl;)fclose(fp);

509)voidWriteDat()(FILE*fp;inti;fp=fopen(MOUTLDAT",“w”);for(i=0;i<100;i++){printf(M%s%s%4d%5d%5d

510",sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je);fprintf(fp,M%s%s%4d%5d%5d

511';sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je);)fclose(fp);}☆题目100函数ReadDat。实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中,请编制函数QunConvAO,其函数的功能是:以行为单位把字符串中的最后一个字符的ASCII值右移4位,高位补0后加最后第二个字符的ASCII值,得到最后一个新的字符,最后第二个字符的ASCII值右移4位,高位补0后加最后第三个字符的ASCII值,得到最后第二个新的字符,依此类推一直处理到第二个字符,第一个字符的ASCH值加原最后一个字符的ASCII值,得到第一个新的字符,得到的新字符分别存放在原字符串对应的位置匕最后已处理的字符串仍按行重新存入字符串数组xx中,最后调用函数writeDat。把结果xx输出到文件OUT10.DAT中。原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。部分源程序存在文件progl.c中。请勿改动主函数main()和写函数writeDat。的内容。#include#include#includecharxx[50][80];intmaxline=0;/*文章的总行数*/intReadDat(void);voidWriteDat(void);voidCharConvAO{inti,j;charp,c;for(i=0;iO;j—)xx[i][j]=(xxli][j]»4)+xx[ij[j-l];xx[i][O]=p+c;

512}Ivoidmain()(clrscr();if(ReadDat()){printf("数据文件IN.DAT不能打开!

513\007");return;}CharConvA();WriteDat();}intReadDat(void)(HLE*fp;inti=0;char*p;if((fp=fopen(,,IN.DAT,,;,r,,))==NULL)return1;while(fgets(xx[i],80,fp)!=NULL){p=strchr(xx[i],,

514,);if(p)*p=O;i++;)maxline=i;fclose(fp);return0;}voidWriteDat(void)(FILE*fp;inti;fp=fopen("OUT10.DATn;'wn);for(i=0;i

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

516”,xx[i]);}fclose(fp);

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

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

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