《全国计算机等级考试三级C语言上机100题1》由会员分享,可在线阅读,更多相关《全国计算机等级考试三级C语言上机100题1(148页珍藏版)》请在金锄头文库上搜索。
1、全国计算机等级考试三级C语言上机1 0 0题题 目1请编写一个函数jsVa l ue(in tm , in tk, in txx D ,该函数的功能是:将大于整数m且紧靠m的k个素数存入数组XX传回。最后调用函数wr iteD a t。 读 取1 0组数据, 分别得出结果且把结果输出到文件o ut. da t中。部分源程序存在文件p r o g l . c中。例如:若输入175则应输出:1 9 , 2 3 , 2 9 , 3 1 , 3 7。请勿改动主函数m a in。 和写函数wr iteD a t。 的内容。#in c l ude#in c l udevo id r ea dwr iteD
2、 a t();in t isP (in t m )(in t i;f o r (i=2 ; i 0 ; m + + )if (isP (m ) xx s+ + =m ; k; )m a in ()(in t m , n , xx 1 0 0 0 ;c l r sc r ();p r in tf ( n P l ea se en ter two in teg er s: *);sc a n f ( d%d &m , &n );n um (m , n , xx);f o r (m =0 ; m N ; M + + )p r in tf (n% d u, xx m );p r in tf (n nn
3、);r ea dwr iteD a t();)vo id r ea dwr iteD a t()(in t m , n , xx 1 0 0 0 , i;FI L Erf=fopen(in.dat,,rn);wf=fopen(,out.dat,w);for(i=0;i 10;i+) fscanf(rf/%d %du,&m,&n);num(m,n,xx);for(m=0;m)fclose(rf);fclose(wf); 题目2己知数据文件IN.DAT中存有200个四位数, 并己调用读函数readDat。 把这些数存入数组 a 中,请考生编制一函数jsV al(),其功能是:如果四位数各位上的数字
4、均是0 或 2 或 4 或6 或 8 , 则统计出满足此条件的个数e n t,并把这些四位数按从大到小的顺序存入数组b 中。最 后 m ain()函数调用写函数writeDat。 把结果e n t以及数组b 中符合条件的四位数输出到OUT.DAT文件中。注意:部分源程序存在文件progl.c中。程序中已定义数组:a200, b200,已定义变量:ent请勿改动数据文件IN.DAT中的任何数据、主函数main。 、读函数readDat。 和写函数writeDat()的内容。#include#define MAX 200int aMAX, bMAX, ent = 0 ;voidjsVaK) int
5、 i,j,qw,bw,sw,gw;for(i=0;iMAX;I+) qw=ai/1000; bw=ai/100%10;sw=ai% 100/10; gw=ai%10;if(qw&qw%2=0&bw%2=0&sw%2=0&gw%2=0) bcnt+=ai;)for(i=0;iCNT-l;I+)for(j=i+l;jCNT;J+)if(bi )void readDat()(int i ;FILE *fp ;fp = fopen(Min.datH, *rn) ;for(i = 0 ;i MAX ; i+) fscanf(fp, n%dn, &ai);fclose(fp);void main()(in
6、 ti;readDat();jsVal();printf(满足条件的数=%dn”, ent);for(i = 0 ; i ent; i+) printf(n%d , bi);printf(Mn);writeDatO ;)writeDat()(FILE *fp ;in ti;fp = fopenCut.dat, nwu) ;fprintf(fp, %dn, ent);for(i = 0 ; i =O;j ) k=0;memset(tem,0,80);if(xxijj=o,)righto=j;for(s=righto+1 ;stemk+=xxis;for(s=0;sif(xxis!=o)temk+
7、=xxis;strcpy(xxi,tem);)else continue;void main()clrscr();if(ReadDat() printf(数据文件IN.DAT不能打开!n007);return ;)StrOR();WriteDat();)int ReadDat(void)FILE *fp ;int i = 0 ;char *p ;if(fp = fopenCIN.DAT JT)= NULL) return 1 ;while(fgets(xxi, 80, fp) != NULL) p = strchr(xxi, n);if(p) *p = 0 ;i+;)maxline = i ;
8、fclose(fp);return 0;)void WriteDat(void)(FILE *fp ;int i ;clrscr();fp = fopen(OUT5.DAT“, “w);for(i = 0 ; i maxline ; i+) printf(,%sn, xxij);fprintf(fp, u%snn, xxi);)fclose(fp);题目4函数ReadDat。 实现从文件IN.DAT中读取一篇英文文章存入到字符串数组x x 中,请编制函数StrO L(),其函数的功能是:以行为单位对行中以空格或标点符号为分隔的所有单词进行倒排。最后把已处理的字符串(应不含标点符号)仍按行重新存
9、入字符串数组x x 中,最后调用函数writeDat()把结果xx输出到文件OUT6.DAT中。例如:原文:You He MeI am a student.结果:Me He Youstudent a am I原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。部分源程序存在文件progl.c中。请勿改动主函数main。 、读数据函数ReadDat()和输出数据函数writeDat。 的内容。#include#include#include#includechar xx5080;int maxline=0;/*文章的总行数*/int ReadDat(void);void Wr
10、iteDat(void);void StrOL(void) int i,j,k,s,m,strl;char str80;for(i=0;i=O;j-) if(isalpha(xxi j) k+;else for(m= 1 ;m=k;m+)strs+4-=xxij+m;k=0;)if(!isalpha(xxij)strs+= * ;)for(m= 1 ;m=k;m+)strs+=xxi j+m;strs=;strcpy(xxi,str); void main()(clrscr();if(ReadDat()printf(数据文件IN.DAT不能打开! n007”);return;)StrOU);W
11、riteDat();int ReadDat(void)1FILE *fp;int i=0;char *p;if(fp=fopen(,IN.DAT,;,r)=NULL) return 1;while(fgets(xxi,80,fp) !=NULL)p=strchr(xxiAn*);if(p)*p=O;i+;)maxline=i;fclose(fp);return 0;)void WriteDat(void)(FILE *fp;int i;clrscr();fp=fopen(nOUT6.DATu; ,wu);for(i=0;iM AXLINE;I+) printf(%sn”,xxi);fprint
12、f(fp,H%snH,xxi);)fclose(fp); 题 目 5 在文件in.dat中 有 200个正整数,且每个数均在1000至 9999之间。函数ReadDat()读取这200个数存放到数组a a 中。请编制函数jsSort(),其函数的功能是:要求按每个数的后三位的大小进行升序排列,然后取出满足此条件的前1 0 个数依次存入数组bb中,如果后三位的数值相等,则按原先的数值进行降序排列。最后调用函数WriteDat。 把结果 bb输出到文件out.dat中。例:处理前 6012 5099 9012 7025 8088处理后 9012 6012 7025 8088 5099部分源程序存在
13、文件progl.c中。请勿改动主函数main。 、读数据函数ReadDat()和输出数据函数WriteDat。 的内容。#include#include#includeint aa200,bb10;void jsSort()int i,j,data;for(i=0;i199;i+)for(j=i+l;jaaj%1000llaai%1000=aaj%1000&aaifor(i=0;i10;i+)bbi=aai;)void main()(readDat();jsSort();writeDat();)readDat()(FILE *in;int i;in=fopen(,in.datu,rM);for
14、(i=0; i200; i+) fscanf(in,n%d; &aai);fclose(in);)writeDat()(FILE *out;int i;clrscr();out=fopen(out.dat,wu);for(i=0; i10; i+)printf(n %d,bbi);fprintf(out,n %dnH ,bb i);)fclose(out);)题目6在文件in.dat中有200个正整数,且每个数均在1000至 9999之间。函数ReadDat。 读取这200个数存放到数组aa中。请编制函数jsSort。 ,其函数的功能是:要求按每个数的后三位的大小进行降序排列,然后取出满足此条
15、件的前10个数依次存入数组b 中,如果后三位的数值相等,则按原先的数值进行升序排列。最后调用函数WriteDat()把结果b b 输出到文件out.dat中。例:处理前 9012 5099 6012 7025 8088处理后 5099 8088 7025 60129012注意:部分源程序已给出。请勿改动主函数main。 、读数据函数ReadDat。 和输出数据函数WriteDat。 的内容。#include#include#includeint aa200,bb10;void jsSort()(int i,j,data;for(i=0;i199;i-H-)for(j=i+l;j200;j+)i
16、f(aali%1000aa|jJ)data=aai;aai=aajl;aajl=data;for(i=0;i10;i+)bbi=aai;)void main()(readDat();jsSort();writeDat();systemCpause);)readDat()(FILE *in;int i;in=fopen(in.dat,rn);for(i=0; i200; i+) fscanf(in,H%d,M,&aai);fclose(in);)writeDat()FILE *oul;int i;clrscr();out=fopen(out.dat,nwn);for(i=0; i10; i+)p
17、rintf(ni=%d,%dnn,i+l,bbi);fprintf(outj%dn,bbi);fclose(out);)题目7己知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm( 字符型4 位) ,产品名称me( 字符型10位) ,单价dj( 整型) ,数量si( 整型) ,金额je( 长整型) 五部分组成。其中:金额= 单价* 数量计算得出。函数ReadDat()是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat。 ,其功能要求:按产品代码从大到小进行排列,若产品代码相同,则按金额从大到小进行排列,最终排列结果仍存入结构数组sell中,最
18、后调用函数WriteDat。 把结果输出到文件OUT6.DAT中。部分源程序存在文件progl.c中。请勿改动主函数main。 、读数据函数ReadDat。 和输出数据函数WriteDat。 的内容。#include#include#include#include#include#define MAX 100typedef struct char dm5;/* 产品代码* /char 产品名称* /int dj; /*单价* /int si; /*数量* /long je; /* 金额PRO;PRO sellMAX;void ReadDat();void WriteDat();void Sor
19、tDat()int ij;PRO xy;for(i=0;i99;i+)for(j=i+ l;jl 00;j+)if(strcmp(sell i .dm,sell j .dm)Ollstrcmp(sell i .dm,sellj .dm)=O&selli .jeSELL J. JE)xy=selli; sell i=sellj; sellfj=xy;)void main()(memset(sell,0,sizeof(sell);ReadDat();SortDat();WriteDat();)void ReadDat()(FILE *fp;char str8O,chl 1;int i;fp=fop
20、en(,IN.DATn,(rM);for(i=0;i100;i+)fgets(str,8O,fp);memcpy(sel 1 i .dm,str,4);memcpy(selli. mc,str+4,10);memcpy(ch,str+14,4); ch4=0;selli.dj=atoi(ch);memcpy(ch,str+18,5);ch5=0;selli.sl=atoi(ch);selli.je=(long)selli.dj*selli.sl;)fclose(fp);)void WriteDat(void)(FILE *fp;int i;fp=fopen(nOUT6.DATu; wu);fo
21、r(i=0;i 100;i+)printf(M%s %s %4d %5d %5dn, seUi.dm,selli.mc,selli.dj,selIi.sl,selli.je);fprintf(fp,%s %s %4d %5d %5dnM, selli.dm,selli.mc,selli.dj,selli.sl,selli.je);)fclose(fp);题目8 函数ReadDat()实现从文件ENGIN中读取一篇英文文章,存入到字符串数组x x 中;请编制函数encryptChar。,按给定的替代关系对数组x x 中的所有字符进行替代,仍存入数组xx的对应的位置上,最后调用函数WriteDat
22、。 把结果xx输出到文件PS1.DAT中。替代关系:f(p)=p*ll mod 256 (p 是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值) , 如果计算后f(p)值小于等于32或大于130,则该字符不变, 否则将f(p)所对应的字符进行替代。( 注意中间变量用无符号整型) ,部分源程序存在文件progl.c中。原始数据文件存放的格式是:每行的宽度均小于80个字符。请勿改动主函数main。 、读数据函数ReadDat。 和输出数据函数WriteDat。 的内容。#include#include#include#includeunsigned char xx5080;i
23、nt maxline=0;/*文章的总行数* /int ReadDat(void);void WriteDat(void);void encryptChar() int i,j;for(i=0;iMAXLINE;I+)for(j=0;j130) continue;else xxij=xxiU*l 1%256;void main()(clrscr();if(ReadDat()printf( 数据文件ENGIN不能打开! n007H);return;)encryptChar();WriteDat();int ReadDat(void)FILE *fp;int i=0;unsigned char *
24、p;if(fp=fopen(neng.in,nru)=NULL) return 1;while(fgets(xxi,80,fp)!=NULL)p=strchr(xxin,);if(p)*p=O;i+;)maxline=i;fclose(fp);return 0;1void WriteDat(void)(FILE *fp;int i;fp=fopen(ps 1 .datVw);for(i=0;iMAXLINE;I+) printf(%sn”,xxi);fprintf(fp,H%sn,xxi);)fclose(fp);题目9函数ReadDat()实现从文件IN.DAT中读取一篇英文文章存入到字符串
25、数组x x 中,请编制 函 数 SortCharD(),其函数的功能是:以行为单位对字符按从大到小的顺序进行排序,排序后的结果仍按行重新存入字符串数组x x 中,最后调用函数writeDal。 把结果xx输出到文件 OUT2.DAT 中。例:原文:dAe,BfC.CCbbAA结果:fedCBA.bbCCAA原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。部分源程序存在文件progl.c中。请勿改动主函数main。 、读数据函数ReadDat。 和输出数据函数writeDat。 的内容。#include#include#includechar xx50l80J;int m
26、axline=O;/*文章的总行数* /int ReadDat(void);void WriteDat(void);void SortCharD(void)int i,j,k,strl;char ch;for(i=0;iMAXLINE;I+)strl=strlen(xxlij);for(j=0;jSTRL-l;J+)for(k=j+l ;kif(xxiUXXIK)ch=xxli|jj; xxijj=xxijlk; xxlikj=ch;)void main()clrscr();if(ReadDat()printf( 数据文件IN.DAT不能打开! n007”);return;)SortCharD
27、();WriteDatO;int ReadDat(void)(FILE *fp;int i=0;char *p;if(fp=fopen(IN.DAT,;,r,)=NULL) return 1;while(fgets(xx i,8O,fp) !=NULL)p=strchr(xxiAn);if(p)*p=O;i+;maxline=i;fclose(fp);return 0;)void WriteDat(void)(FILE *fp;int i;fp=fopen(,OUT2.DAT;,wu);for(i=0;iM AXLINEJ+) printf(H%sn,xxi);fprintf(fp,n%sn,
28、xxi);)fclose(fp);)题目 10函数ReadDat()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中,请编制函数ConvertCharA(),其函数的功能是:以行为单位把字符串中的所有小写字母改写成该字母的下一个字母,如果是字母z , 则改写成字母a。大写字母仍为大写字母,小写字母仍为小写字母,其他字符不变。把已处理的字符串仍按行重新存入字符串数组x x 中,最后调用函数writeDat。 把结果xx输出到文件OUT1.DAT中。例:原 文 : Adb.Bcdzaabck.LLhj结果:Aec.Bdeabbcdl.LLik原始数据文件存放的格式是:每行的宽度均小于
29、80个字符,含标点符号和空格。部分源程序存在文件progl.c中。请勿改动主函数main。 、读数据函数ReadDat。 和输出数据函数writeDat。 的内容。#include#include#includecharxx5080;int maxline=0;/*文章的总行数* /int ReadDat(void);void WriteDat(void);void ConvertCharA(void)i n t i , j ;f o r ( i = 0 ; i M A X L I N E ; I + + ) f o r ( j = O ; j = * a &x x i j = y ) x x
30、 i | j + = l ;v o i d m a i n ( )(c l r s c r ( ) ;i f ( R e a d D a t ( ) ) p r i n t f( 数据文件I N . D A T不能打开! n 0 0 7 ” ) ;r e t u r n ;)C o n v e r t C h a r A ( ) ;W r i t e D a t ( ) ;Ii n t R e a d D a t ( v o i d )F I L E * f p ;i n t i = 0 ;c h a r * p ;i f ( f p = f o p e n ( I N . D A T V r
31、 ) ) = = N U L L ) r e t u r n 1 ;w h i l e ( f g e t s ( x x i , 8 O , f p ) ! = N U L L ) p = s t r c h r ( x x i A n * ) ;i f ( p ) * p = O ;i + + ;)m a x l i n e = i ;f c l o s e ( f p ) ;r e t u r n 0 ;Iv o i d W r i t e D a t ( v o i d )F I L E * f p ;i n t i ;c l r s c r ( ) ;f p = f o p e n
32、( ,O U T l . D A Tu; wu) ;f o r ( i = 0 ; i M A X L I N E J + + ) printf(,%sn,xxij);fprintf(fp, n%snn ,xxi);)fclose(fp);)题目1 1 程序progl.c的功能是:把 s 字符串中的所有字母改写成该字母的下一个字母,字母z 改写成字母a。要求大写字母仍为大写字母,小写字母仍为小写字母,其它字符不做改变。请考生编写函数chg(char *s)实现程序要求,最后调用函数readwriteDAT()把结果输出到文件be Lout中。例如:s 字符串中原有的内容为:M n.l23Zxy
33、,则调用该函数后,结果为:No.l23Ayz。注意:部分源程序存在文件progl.c文件中。请勿改动主函数main()和输出数据函数readwriteDAT()的内容。#include#include#include#include#defineN81void readwriteDAT();void chg(char *s)int I;for(I=0;I=,a&si=A&si=Y,) si+=l;)main()(char aN;clrscr();printf(nEnter a string : ); gets(a);printf(The original string is : ); puts
34、(a);chg(a);printf(MThe string after modified : );puts (a);readwriteDAT();)void readwriteDAT()(int i ;char aN;FILE *rf, *wf;rf=fopen(nbcl.inn, rn) ;wf = fopen(bcl.out, w);for(i = 0 ; i 50 ; i+) fscanf(rf, n%sn, a );chg(a);fprintf(wf, u%snM, a );)fclose(rf);fclose(wf);题目 12已知在文件IN.DAT中存有100个产品销售记录,每个产
35、品销售记录由产品代码dm( 字符型4 位) ,产品名称me( 字符型10位) , 单 价 dj( 整型) ,数量si( 整型) ,金额je( 长整型) 五部分组成。其中:金额= 单价* 数量计算得出。函数ReadDat。 是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat。 ,其功能要求:按产品名称从小到大进行排列,若产品名称相等,则按金额从小到大进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat( ) 把结果输出到文件OUT5.DAT中。部分源程序存在文件progl.c中。请勿改动主函数main。 、读数据函数ReadDat。 和输出数据函数
36、WriteDat。 的内容。#include#include#include#include#include#define MAX 100typedef struct chardm5;/* 产品代码 * /charmcll;/*产品名称号intdj;/* 单价* /int si; /*数量* /long je;/* 金额* /PRO;PRO sellMAX;void ReadDat( ) ;void WriteDat( ) ;void SortDat()int ij;PRO xy;for(i=0;i99;i+)for(j=i+1 ;jOllstrcmp(selli.mc,sellj.mc)=O
37、&selli.jesellj.je)xy=selli;selli=sellj;sellfj=xy;void main()(memset(sell,0sizeof(sell);ReadDat();SortDat();WriteDat();)void ReadDat()FILE *fp;char str8O,chf 11;int i;fp=fopen(IN.DAT; r,);for(i=0;i100;i+)fgets(str,8O,fp);memcpy(sellfi.dm,str,4);memcpy(selli. mc,str+4,10);memcpy(ch,str+14,4); ch4=0;se
38、lli.dj=atoi(ch);memcpy(ch,str+18,5);ch5=0;selli.sl=atoi(ch);selli .je=(long)selli .dj *selli .si;)fclose(fp);void WriteDat()FILE *fp;int i;fp=fopen(nOUT5.DATn; ,wu);for(i=0;il 00;i+)printf(H%s %s %4d %5d %5dn,selli.dm,selli.mc,selli.dj,selli.sl,selli.je);fprintf(fp,1%s %s %4d %5d %5dn, selli.dm,sell
39、i.mc,selli.dj,selli.sl,selli.je);fclose(fp);题 目 13已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm( 字符型4 位) ,产品名称me( 字符型10位) ,单价dj( 整型) ,数量si( 整型) ,金额je( 长整型) 五部分组成。其中:金额= 单价* 数量计算得出。函数ReadDat。 是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat。 ,其功能要求:按产品代码从小到大进行排列,若产品代码相等,则按金额从大到小进行排列,最终排列结果仍存入结构数组sell中, 最后调用函数WriteDa
40、t。 把结果输出到文件OUT9.DAT中。部分源程序存在文件progl.c中。请勿改动主函数main。 、读数据函数ReadDat。 和输出数据函数WrileDat。 的内容。#include#include#include#include#include#define MAX 100typedef struct char dm5; /* 产品代码* /char 产品名称* /int dj; /*单价* /int si; /* 数量* /long je; /*金额* /PRO;PRO sellMAX;void ReadDat();void WriteDat();void SortDat()in
41、t i,j;PRO xy;for(i=0;i99;i+)for(j=i+1 ;jOllstrcmp(selli.dm,sellfj.dm)=O&selli.jeSELLJ.JE)xy=selli;selli=sellj;sellj=xy;void main()memset(sell,0,sizeof(sell);ReadDat();SortDat();WriteDat();)void ReadDat()(FILE *fp;char str8O,chll;inti;fp=fopen(nIN.DATn,nrM);for(i=0;i100;i+)fgets(str,8O,fp);memcpy(sel
42、li.dm,str,4);memcpy(selli.mc,str+4,10);memcpy(ch,str+14,4); ch4=0;selli.dj=atoi(ch);memcpy(ch,str+18,5);ch5=0;selli.sl=atoi(ch);selli.je=(long)selli.dj*selli.sl;)fclose(fp);)void WriteDat()(FILE *fp;int i;fp=fopenCOUT9.DATu;,w);for(i=0;il 00;i+)printf(n%s %s %4d %5d %5dnn, selli.dm,selli.mc,seili.dj
43、,selli.sl,selli.je);fprintf(fp/%s %s %4d %5d %5dn, selli.dm,selli.mc,selli.dj,selli.sl,selli.je);)fclose(fp);) 题目14已知数据文件IN.DAT中存有200个四位数, 并已调用读函数readDat。 把这些数存入数组 a 中,请考生编制一函数jsV al(),其功能是:依次从数组a 中取出一个四位数,如果该四位数连续大于该四位数以后的五个数且该数是奇数( 该四位数以后不满五个数, 则不统计) ,则统计出满足此条件的个数ent并把这些四位数按从小到大的顺序存入数组b中, 最后调用写函数w
44、riteDat()把结果ent以及数组b中符合条件的四位数输出到OUT.DAT文件中。注意:部分源程序存在文件progl.c中。程序中已定义数组:a200, b200,已定义变量:ent请勿改动数据文件IN.DAT中的任何数据、主函数main。 、读函数readDat。 和写函数writeDat()的内容。#include#define M AX 200int aMAX, bMAXJ, ent = 0 ;void jsVal()(int i,j,flag;for(i=0;iMAX-5;I+)for(j=i+1 ;jaj&ai%2) flag=l;else flag=O;break;if(fla
45、g=l) bcnt+=ai;)for(i=0;iCNT-l;I+)for(j=i+l;jbj)flag=bi;bi=bfj;bj=flag;void readDat()(int i ;FILE *fp ;fp = fopen(nin.dat, Hrn) ;for(i = 0 ; i M AX ; i+) fscanf(fp, %dn, &ai);fclose(fp);void main()(int i ;readDat();jsVal();printf( 满足条件的数=%dn”, ent);for(i = 0 ; i ent; i+) printf(%d , bi);printf(nn);wr
46、iteDat();writeDat()FILE *fp ;inti;fp = fopenCout.dat, w);fprintf(fp, ent);for(i = 0 ; i ent; i+) fprintf(fp, n%dnu, bi);fclose(fp);)题目15已知数据文件IN.DAT中存有200个四位数, 并已调用读函数readDat。 把这些数存入数组 a 中,请考生编制一函数jsV al(),其功能是:若一个四位数的千位数字上的值小于等于百位数字上的值, 百位数字上的值小于等于十位数字上的值,以及十位数字上的值小于等于个位数字上的值,并且原四位数是偶数,则统计出满足此条件的个数
47、ent并把这些四位数按从小到大的顺序存入数组b 中,最后调用写函数writeDat()把结果en t以及数组b 中符合条件的四位数输出到OUT.DAT文件中。注意:部分源程序存在文件progl.c中。程序中已定义数组:a200, b200,已定义变量:ent请勿改动数据文件IN.DAT中的任何数据、主函数main。 、读函数readDat()和写函数writeDat()的内容。#include#define MAX 200int aMAX, bMAX, cnt=0;voidjsVaK)int i,j;int qw,bw,sw,gw;for (i=0;iMAX;I+)qw=ai/1000; bw
48、=ai%1000/100;sw=ai% 100/10; gw=ai%10;if(qw=bw)&(bw=sw)&(sw=gw)&(ai%2=0) bcnt+=ai;)for(i=0;iCNT-l;I+)for(j=i+l;jbj) qw=bi;bi=bj;b|j=qw;)void readDat()int i ;FILE *fp ;fp = fopen(in.dat, T ) ;for(i = 0 ;i MAX ; i+) fscanf(fp, n%dn, &ai);fclose(fp);)void main()(int i ;readDat();jsVal();printf( 满足条件的数=%
49、dn”, ent);for(i = 0 ; i ent; i+) printf(n%d = bi);printf(nnM) ;writeDatO ;)writeDat()(FILE *fp ;inti;fp = fopen(out.dat, Hwu) ;fprintf(fp, %dn, ent);for(i = 0 ; i ent; i+) fprintf(fp, %dn, bi);fclose(fp);) 题目16函数ReadDat。 实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中,请编制函数StrCharJR(),其函数的功能是:以行为单位把字符串中所有字符的ASCII值右
50、移4位,然后把右移后的字符ASCII值再加上原字符的ASCH值,得到新的字符仍存入原字符串对应的位置上。最后把已处理的字符串仍按行重新存入字符串数组x x 中,最后调用函数writeDat。 把结果xx输出到文件OUT8.DAT中。原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。部分源程序存在文件progl.c中。请勿改动主: 函数main。 、读数据函数ReadDat。 和输出数据函数writeDat。 的内容。#include#include#includechar xx5080;int maxline=0;/*文章的总行数* /int ReadDat(void);
51、void WriteDat(void);void StrCharJR()int i,j;for(i=0;iMAXLINE;I+)for(j=0;jSTRLEN(XXI);J+)xxij+=(xxij4);void main()(clrscr();if(ReadDat()printf( 数据文件IN.DAT不能打开! n007n);return;)StrCharJR();WriteDat();)int ReadDat(void)(FILE *fp;int i=0;char *p;if(fp=fopen(IN.DAT,rn)=NULL) return 1;while(fgets(xxi,80,fp
52、)!=NULL)p=strchr(xxiAn*);if(p)*p=O;i+;)maxline=i;fclose(fp);return 0;)void WriteDat(void)(FILE *fp;int i;clrscr();fp=fopen(OUT8.DATVwu);for(i=0;iM AXLINEJ+) printf(%sn,xxij);fprintf(fp,%sn,xxi);)fclose(fp);)题目17函数READDAT ( ) 实现从文件IN.DAT中读取一篇英文文章存入到字符串数组XX 中 ;请编制函数CHA(),其函数功能是似行为单位把字符串中的第一个字符的ASCII值加
53、第二个字符的ASCH值,得到第一个亲朋字符,第二个字符的ASCH值加第三个字符的ASCH值,得到第二个新字符,依此类推一直处理到最后第二个字符,最后一个字符的ASCII值加原第一个字符的ASCII值,得到最后一个新的字符,得到的新字符分别存放在原字符串对应的位置上。最后把已处理的字符串逆转后按行重新存入字符串数组X X 中, 最后调用函数WRITEDATO把结果XX输出到文件0UT9.DAT中. 原始数据文件存放的格式是: 每行的宽度均小于80个字符, 含标点符号和空格.注意:部分源程序已给出。请勿改动主函数main。 、读数据函数ReadDat。 和输出数据函数writeDat。 的内容。#
54、include#include#includechar xx5080;int maxline = 0 ; / * 文章的总行数* /int ReadDat(void);void WriteDat(void);void ChA(void) int i,j;char ch;for(i=0;iMAXLINE;I+) ch=xxi0;for(j=0;jSTRLEN(XXI)-1 ;J+)xxij+=xxij+l;xxistrlen(xxi)-l+=ch;strrev(xxi);)void main()(clrscr();if(ReadDat() printf( 数据文件IN.DAT不能打开! n007
55、”) ;return ;)ChA();WriteDat();)int ReadDal(void)(FILE *fp ;int i = 0 ;char *p ;if(fp = fopenCIN.DAT, nrn) = NULL) return 1 ;while(fgets(xxi, 80, fp) != NULL) p = strchr(xxi, n);if(p) *p = 0 ;i+;)maxline = i ;fclose(fp);return 0;)void WriteDat(void)FILE *fp ;in ti;clrscr();fp = fopen(OUT9.DAT“, “w“)
56、;for(i = 0 ; i maxline ; i+) printf(%sn*, xxi);fprintf(fp, n%sn, xxi);)fclose(fp);题目18函数ReadDat。 实现从文件ENGIN中读取一篇英文文章,存入到字符串数组xx 中;请编制函数encryptChar(),按给定的替代关系对数组x x 中的所有字符进行替代,仍存入数组xx的对应的位置上,最后调用函数WriteDat。 把结果xx输出到文件PS10.DAT中。替代关系:f(p)=p*ll mod256 ( p 是数组中某一个字符的ASCH值,f(p)是计算后新字符的ASCII值) , 如果原字符的ASCI
57、I值是偶数或计算后f(p)值小于等于3 2 ,则该字符不变,否则将f(p)所对应的字符进行替代。部分源程序存在文件progl.c中。原始数据文件存放的格式是:每行的宽度均小于80个字符。请勿改动主函数main。 、读数据函数ReadDat。 和输出数据函数WriteDat()的内容。#include#include#include#includeunsigned char xx5080;int maxline=0;/*文章的总行数* /int ReadDat(void);void WriteDat(void);void encryptChar() int i,j;for(i=0;iMAXLIN
58、E;I+)for(j=0;jSTRLEN(XXI);J+)if(xxilj*ll%256=32llxxij%2=0) continue;else xxi j=xxi j * 11 %256;void main()(clrscr();if(ReadDat()printf( 数据文件ENGIN不能打开! n007);return;)encryptChar();WriteDat();int ReadDat(void)1FILE *fp;int i=0;unsigned char *p;if(fp=fopen(eng.in,r,)=NULL) return 1;while(fgets(xxi,80,f
59、p) !=NULL)p=strchr(xxij,n,);if(p)*p=O;i+;maxline=i;fclose(fp);return 0;)void WriteDat(void)(FILE *fp;int i;fp=fopen(ps 10.dat, W );for(i=0;iMAXLINE;I+)primf(sn”,xxi);fprintf(fp,n%snH,xxi);)fclose(fp);题目19编写一个函数findStr(char *str,char *substr),该函数统计一个长度为2 的子字符串在另一个字符串中出现的次数。例如,假定输入的字符串为”asd asasdfg as
60、d as zx67 asd mklo,子字符串为“ as”,函数返回值是6。函数ReadWrite。 实现从文件in.dat中读取两个字符串,并调用函数findStr(),最后把结果输出到文件out.dat中。注意:部分源程序存在文件progl.c中。请勿改动主函数main()和其它函数中的任何内容,仅在函数findStr()的花括号中填入你编写的若干语句。#include#include#includeint findStr(char *str,char *substr) int i,j,lenl,len2,cnt=0Jlag;lenl=strlen(str);len2=strlen(sub
61、str);for(i=0;iLENl;I+) for(j=0;jLEN2;J+)if(stri+j=substrj) flag= 1;else nag=0;break;if(flag= 1) cnt+;)return ent;main()char str81, substr3;int n ;clrscr();printf( 输入原字符串gets(str);printf( 输入子字符串: ) ;gets(substr);puts(str);puts(substr);n=findStr(str, substr);printf(,n=%dnn, n );ReadWrite();IReadWrite(
62、)char str81, substr3, ch;int n, len, i = 0;FILE *rf, *wf;rf = fopen(nin.datH, r);wf = fopen(out.dat Mwn) ;while(i 25) fgets(str, 80, rf);fgets(substr, 10, rf);len = strlen(substr) - 1 ;ch = substrflen;if(ch = *n II ch = Ox la) substrlen = 0 ;n=findStr(str, substr);fprintf(wf, H%dn, n );i+ ;)fclose(r
63、f);fclose(wf);题目20编写函数jsV alue,它的功能是:求 Fibonacci数列中大于t 的最小的一个数,结果由函数返回。其中Fibonacci数列F(n)的定义为:F(0)=0,F(l)=lF(n)=F(n-l)+F(n-2)最后调用函数writeDal。 读 取 5 0 个数据3分别得出结果且把结果输出到文件oul.dat中。例如:当 t=1000时,函数值为:1597。部分源程序存在文件progl.c中。请勿改动主函数main。 和写函数writeDat。 的内容。#includeint jsValue(int t) intfO=O,fl=l,fn;fn=fO+fl;
64、while(fn=t) fO=fl;fl=fn;fn=fO+fl;)return fn;main()(int n;n=1000;printf(n=%d,f=%dnn,jsValue(n);writeDat();)writeDat()(FILE *in,*out;int i,n,s;in=fopen(uin.dat,r);out=fopen(,out.dat,wu);for(i=0;i=0.000001);return x 1;Imain()(clrscr();printf( 实根= % & , count Value。 ) ;printf(,%fn,cos(countValue()-count
65、Value();writeDat();writeDatOFILE *wf;wf=fopen(OUT17.DAT; wu);fprintf(wf,fn”,countValue();fclose(wf);)题目22请编写函数countValueO,它的功能是:求 n 以内( 不包括n ) 同时能被3 与 7 整除的所有自然数之和的平方根s , 并作为函数值返回,最后结果s 输出到文件outdat中。例如若n 为 1000时,函数值应为:s=153.909064。部分源程序存在文件progl.c中。请勿改动主函数main()和输入输出数据函数progReadWrite。 的内容。#include#i
66、nclude#includedouble countValue(int n) int i;double s=0.0;for(i=l;iN;I+)if(i%21=0) s+=i;return sqrt(s);)main()(clrscr();printfC, 自然数之和的平方根=%fn,countValue(1000);progReadWrite();)progReadWrite()(FILE *fp,*wf;int i,n;float s;fp=fopen(in.dat,rn);if(fp=NULL)printf( 数据文件in.dat不存在! )return;)wf=fopen(nout.d
67、at,w);for(i=0;i10;i+)fscanf(fp,%dnu,&n);s=countValue(n);fprintf(wf,M%fnH,s);)fclose(fp);fclose(wf);题目23已知在文件in.dat中存有N 个( 个数 200)实数,函数readdat。 读取这N 个实数并存入数组xx 中。请编制函数cal value。,其功能要求:1、求出这N 个实数的平均值aver;2、分别求出这N 个实数的整数部分之和sumint以及小数部分之和sum dec,最后调用函数writedat()把所求的结果输出到文件out.dat中。注意:部分源程序已给出。请勿改动主函数ma
68、in。 、读数据函数readdat。 和输出数据函数writedat。 的内容。#include#include#define MAXNUM 200float xxMAXNUM;int N= 0 ; / * 文件IN.DAT中共有多少个实数* /double aver=0.0;/*平均值* /double sumint=0.0;/*整数部分之和* /double sumdec=0.0;/*小数部分之和* /int ReadDat(void);void WriteDat(void);void CalValue(void)inti;for (i=0;iN;I+)sumint+=(long)xxi;
69、sumdec+=xxi-(long)xxi;aver+=xxi;aver/=N;void main() int i ;clrscr();for(i = 0 ;i MAXNUM ; i+) xxi = 0 ;if(ReadDat() printf( 数据文件IN.DAT不能打开! 007n) ;return ;)Calvalue();printf( 文件IN.DAT中共有实数二% d 个n”, N );printf( 平均值=%.21fn”, aver);printf( 整数部分之和=%.21fn”, sumint);printf( 小数部分之和二% . 21fn, sumdec);WriteD
70、at();system(Hpausen);)int ReadDat(void)(FILE *fp ;int i = 0 ;if(fp = fopen(in.datn, 7) = NULL) return 1 ;while(!feof(fp) fscanf(fp, n%d, &xxi+);fclose(fp);return 0 ;)void WriteDat(void)(FILE *fp ;fp = fopen(OUT.DAT, “w”) ;fprintf(fp, ,%.21fn%.21fn%.21fnn, aver,sumint,sumdec);fclose(fp);题目2 4下列程序p r
71、o g l . c的功能是: 在三位整数( 1 0 0至9 9 9)中寻找符合条件的整数并依次从小到大存入数组中;它既是完全平方数,又是两位数字相同,例 如1 4 4、6 7 6等。请编制函数实现此功能,满足该条件的整数的个数通过所编制的函数返回。最后调用函数w r it eDat。 把结果输出到文件ou t .dat中。请勿改动主函数m ain。 和写函数w r it eDat。 的内容。#in cl u dein t js Val u e( in t bbJ) in t i, j, k =O;in t hu n , t en , dat a;for ( i=10; i 3 2 ; i+ +
72、 )hu m =j/100;t en =j%100/10;dat a=j%10;if( hu m =t en l l hu m =dat al l t en =dat a)bbk + + =j; r et u r n k ;m ain ( )(in t b2 0, n u m ;n u m =js Val u e( b) ;w r it eDat ( n u m , b) ;)w r it eDat ( in t n u m , in t bf)(FILE * ou t ;in t i ;ou t =fop en (, ou t .dat, , w ) ;p r in t f(, %dn,n
73、u m ) ;fp r in t f( ou t ,n%dn , n u m ) ;for ( i=0; ing m)实现此功能, 如果是回文数,则函数返回1 , 反之则返回0。最后把结果输出到文件。 ut.dat中。注意:部分源程序已给出。请勿改动主函数main。 的内容。#includeint jsValue(long n)int i,strl,half;char xy20;ltoa(n,xy,10);strl=strlen(xy);half=strl/2;for(i=0;i=half) return 1;else return 0;)main()long m;FILE *out;out=
74、fopen(,out.dat,wu);for(m=ll;m1000;m+) if(jsValue(m)&jsValue(m*m)&jsValue(m*m*m) printf(m=%41d,m*m=%61d,m*m*m=%81d n”,m,m*m,m*m*m);fprintf(out,m=%41d,m*m=%61d,m*m*m=%81d)fclose(out);system(pausen); 题目26已知在文件IN.DAT中存有若干个( 个数200)四位数字的正整数,函 数 ReadDat()读取这若干个正整数并存入数组xx中。请编制函数CalValue。 ,其功能要求:1、求出这文件中共有多少
75、个正整数totNum; 2、 求这些数右移1位后, 产生的新数是偶数的数的个数totCnt,以及满足此条件的这些数( 右移前的值) 的算术平均值totPjz,最后调用函数writeDat。 把所求的结果输出到文件OUT.DAT中。部分源程序存在文件progl.c中。请勿改动主函数main。、读函数ReadDat()和写函数writeDat。 的内容。#include#include#define MAXNUM 200int xxMAXNUM;int totNum=0; /*文件IN.DAT中共有多少个正整数* /int totCnt=0; /*符合条件的正整数的个数* /double totP
76、jz=0.0; /*平均值* /int ReadDat(void);void writeDat(void);void CalValue(void)int i,data;for(i=0;i0) totNum+;data=xxlijl;if(data%2=0)totCnt4-+;totPjz+=xxi;)if(totCnt=0) totPjz=0;else totPjz/=totCnt;)void main()(inti;clrscr();for(i=0;iif(ReadDat()printf( 数据文件IN.DAT不能打开!007n);return;)CalValue();printf( 文件
77、IN.DAT 中共有正整数=%d 个n,totNum);printf( 符合条件的正整数的个数=%d个n,totCnt);printf( 平均值=%.2fn,totPjz);writeDat();)int ReadDat(void)FILE *fp;int i=0;if(fp=fopen(HIN.DATn,MrH)=NULL) return 1;while(!feof(fp)fscanf(fp/%d,&xxli+4-J);)fclose(fp);return 0;)void writeDat(void)(FILE *fp;fp=fopen(nOUT.DATn,nwn);fprintf(fp,%
78、dn%dn%6.2fn,totNum,totCnt,totPjz);fclose(fp);)题目27己知数据文件in.dat中存有300个四位数,并已调用读函数ReadDat。 把这些数存入数组 a 中,请编制- 函数jsValue。 ,其功能是:求出千位数上的数减百位数上的数减十位数匕的数减个位数上的数大于零的个数e n t,再把所有满足此条件的四位数依次存入数组b 中,然后对数组b 的四位数按从小到大的顺序进行排序,最后调用写函数writeDat。 把结果输出到 out.dat文件。例如:9123, 9-123 0 ,则该数满足条件存入数组b 中 , 且 个 数 cnt=cnt+l。981
79、2, 9-8-1-20,则该数不满足条件忽略。部分源程序存在文件progl.c中。程序中已定义数组:a300, b300,已定义变量:ent请勿改动主函数main。 、读函数ReadDat。 和写函数writeDat。 的内容。#includeint a300,b300,cnt=0;jsValue() int i,j,qw,bw,sw,gw;for(i=0;i0) bcnt+=ai;)for(i=0;iCNT-l;I+)for(j=i+l;jbj) qw=bi; bfi=bj; bj=qw;main()int i;readDat();jsValue();writeDat();printf(nc
80、nt=%dnu,cnt);for(i=0;i )readDat()(FILE *fp;int i;fp=fopen(in.datnrn);for(i=0;i300;i+4-)fscanf(fp,n%d,&ali);fclose(fp);)writeDat()(FILE *fp;inti;fp=fopen(,out.dat,Vwn);fprintf(fp,H%dn,cnt);for(i=0;i=0且 ab-cd读函数readDat()和写函数writeDat()的内容。#include#define MAX 200int alMAXJ, bMAX, ent = 0 ;void jsValQint
81、 i,j,thou,hun,ten,data,ab,cd;for(i=0;i=0&(ab-cd)= 10&cd= 10)bcnt+=ai;)for(i=0;iCNT-l;I+)for(j=i+l;jCNT;J+)if(bi )void readDat()(inti;FILE *fp ;fp = fopen(nin.datH, r);for(i = 0 ; i MAX ; i+) fscanf(fp, n%dM, &ai);fclose(fp);)void main()(int i ;readDat();jsVal();printf( 满足条件的数=%dn”, ent);for(i = 0 ;
82、i ent; i+) printf(%d , bi);printf(,n) ;writeDat();)writeDat()(FILE *fp ;int i ;fp = fopenCout.dat, w1 1) ;fprintf(fp, ,%dn1, ent);for(i = 0 ; i =10且 ab-cd=20且两个数均是偶数,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组b 中, 并要计算满足上述条件的四位数的个数 cnto最后main。 函数调用写函数wEeD al() 把结果ent以及数组b 中符合条件的四位数输出到 OUT.DAT文件中。注意:部分源程
83、序存在文件progl.c中。程序中已定义数组: a200, b200,已定义变量:ent请勿改动数据文件IN.DAT中的任何数据、主函数main。 、读函数readDat。 和写函数writeDat()的内容。#include#define MAX 200int aMAXl, bMAX, ent = 0 ;voidjsVaK) int i,j,qw,bw,sw,gw,ab,cd;for(i=0;i= 10&ab-cd=20&ab%2=0&cd%2=0&qw !=0&gw !=0)bcnt+=ai;)for(i=0;iCNT-l;I+)for(j=i+l;jCNT;J+)if(bi )void
84、readDat()(int i ;FILE *fp ;fp = fopen(in.dat, r);for(i = 0 ; i MAX ; i+) fscanf(fp, %d”, &ai);fclose(fp);void main()(inti;readDat();jsVal();printf( 满足条件的数=%dn”, ent);for(i = 0 ; i ent; i+) printf(n%d ”, bij);printf(nn);writeDat();)writeDatO(HLE *fp ;inti ;fp = fopen(out.dat, nwu) ;fprintf(fp, ,%dn,
85、ent);for(i = 0 ; i ent; i+) fprintf(fp, n%dn, bfil);fclose(fp);题目30已知数据文件IN.DAT中存有200个四位数, 并已调用读函数readDat。 把这些数存入数组 a 中,请考生编制一函数jsV al(),其功能是:依次从数组a 中取出一个四位数,如果该四位数连续小于该四位数以后的五个数且该数是偶数( 该四位数以后不满五个数, 则不统计) ,则统计出满足此条件的个数ent并把这些四位数按从小到大的顺序存入数组b 中, 最后调用写函数writeDat()把结果ent以及数组b 中符合条件的四位数输出到OUT.DAT文件中。注意:
86、部分源程序存在文件progl.c中。程序中已定义数组: a200, b200,已定义变量:ent请勿改动数据文件IN.DAT中的任何数据、主函数main。 、读函数readDal。 和写函数writeDat()的内容。#include#define MAX 200int aMAX, bMAX, ent = 0 ;voidjsVal()int ij,flag;for(i=0;iMAX-5;I+)for(j=i+1 ;j=i+5 ;j+)if(aiAJ&AI%2=0) flag=n 1; else flag=0; break;)if(flag=l) bcnt+=ai;for(i=0;iCNT-l;
87、I+4-)for(j=i+l;jbj)flag=bi;bi=b|j;bj=flag;void readDat()(inti;FILE *fp ;fp = fopen(in.datn, nrn) ;for(i = 0 ;i MAX ; i+) fscanf(fp, n%d &ai);fclose(fp);)void main()(in ti;readDat();jsVal();printf( 满足条件的数二%dn”, ent);for(i = 0 ; i ent; i+) printf(%d = bi);printf(Mn);writeDat();writeDat()(FILE *fp ;in
88、ti;fp = fopen(out.dat, nwu) ;fprintf(fp, %dn, ent);for(i = 0 ; i ent; i+) fprintf(fp, n%dnu, bfi);fclose(fp);)题目31已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm( 字符型4 位) ,产品名称me( 字符型10位) ,单价dj( 整型) ,数量si( 整型) ,金额je( 长整型) 五部分组成。其中:金额= 单价* 数量计算得出。函数ReadDat。 是读取这100个销售记录并存入结构数组sell中。请编制函数SortDatO,其功能要求:按金额从大
89、到小进行排列,若金额相同,则按产品代码从大到小进行排列, 最终排列结果仍存入结构数组sell中,最后调用函数 WriteDatO把结果输出到文件OUT4.DAT中。部分源程序存在文件progl.c中。请勿改动主函数main。 、读数据函数ReadDat。 和输出数据函数WriteDat。 的内容。#include#include#include#include#include#define MAX 100typedef struct)char dm5; /* 产品代码* /charmcll;/* 产品名称* /int dj; /* 单价* /int si; /*数量* /long je; /*
90、 金额* /PRO;PRO selllMAXJ;void ReadDat();void WriteDat();void SortDat()int ij;PRO xy;for(i=0;i99;i+)for(j=i+1 ;j 100;j+) if(selli.je0)xy=selli;selli=sellfj;sellj=xy;void main()(memset(sell,0,sizeof(sell);ReadDat();SortDat();WriteDat();void ReadDat()(FILE *fp;charstr80,chll;int i;fp=fopen(IN.DATn; r);f
91、or(i=0;iMAX;I+)fgets(str,80,fp);memcpy(selli.dm,str,4);memcpy(selli.mc,str+4,10);memcpy(ch,str+l 4,4); ch4=0;selli.dj=atoi(ch);memcpy(ch,str+18,5);ch5=0;selli.sl=atoi(ch);selli.je=(long)selli.dj*selli.sl;)fclose(fp);)void WriteDat(void)(FILE *fp;int i;fp=fopen(nOUT4.DATu; wu);for(i=0;iMAX;I+)printf(
92、%s %s %4d %5d %5dn, selli.dm,selli.mc,selli.dj,selli.sl,seUi.je);fprintf(fp,H%s %s %4d %5d %5dn, selli.dm,selli.mc,selli.dj,selli.sl,selli.je);)fclose(fp);题目32已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm( 字符型4 位) ,产品名称me( 字符型10位) ,单价dj( 整型) ,数量si( 整型) ,金额je( 长整型) 五部分组成。其中:金额= 单价* 数量计算得出。函数ReadDat( ) 是读取
93、这100个销售记录并存入结构数组sell中。请编制函数SortDat。 ,其功能要求:按产品名称从大到小进行排列,若产品名称相等,则按金额从小到大进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat。 把结果输出到文件OUT7.DAT中。部分源程序存在文件progl.c中。请勿改动主函数main。、读数据函数ReadDat。 和输出数据函数WriteDat。 的内容。#include#include#include#include#include#define MAX 100typedef structchar dm5; /*产品彳弋码* /char 产品名称号int
94、dj; /*单价* /int si; /*数量为long je; /* 金额* /PRO;PRO selllMAXJ;void ReadDat();void WriteDat();void SortDat()int i,j;PRO xy;for(i=0;i99;i+)for(j=i+l;j100;j+)if(strcmp(selli.mc,sellj.mc)sellj.je)xy=sell i ;sell i=sell j ;sell j=xy;void main()(memset(sell,0,sizeof(sell);ReadDat();SortDat();WriteDat();void
95、ReadDat()(FILE *fp;char str8O,chll;int i;fp=fopen(nIN.DAT,V,rn);for(i=0;i 100;i+)fgets(str,8O,fp);memcpy(selli.dm,str,4);memcpy(selli.mc,str+4,10);memcpy(ch,str+ 14,4); ch4=0;selli.dj=atoi(ch);memcpy(ch,str+18,5);ch5=0;selli.sl=atoi(ch);selli.je=(long)selli.dj*selli.sl;)fclose(fp);void WriteDat()FIL
96、E *fp;int i;fp=fopen(OUT7.DAT,“w);for(i=0;i100;i+)printf(H%s %s %4d %5d %5dnM, selli.dm,selli.mc,selli.dj,selli.sl,selli.je);fprintf(fp,”s %s %4d %5d %5dn, selli.dm,selli.mc,selli.dj,selli.sl,selli.je);)fclose(fp);)题目33请编制函数ReadDat。 实现从文件IN.DAT中读取1000个十进制整数到数组x x 中;请编制函数Compute。 分别计算出x x 中偶数的个数ev e
97、n ,奇数的平均值avel, 偶数的平均值ave2以及方差totfc的值,最后调用函数WriteDat()把结果输出到OUT.DAT文件中。计算方差的公式如下:N2totfc=l/NE (xxi-ave2)i=l设 N 为偶数的个数,xxi为偶数,ave2为偶数的平均值。原始数据文件存放的格式是:每行存放10个数,并用逗号隔开。( 每个数均大于。且小于等于2000)部分源程序存在文件progl.c中。请勿改动主函数main。 和输出数据函数writeDat。 的内容。#include#include#include#define MAX 1000int xxMAX,odd=0,even=0;d
98、ouble ave 1=0.0,ave2=0.0,totfc=0.0;void WriteDat(void);int ReadDat(void)int i;FILE *fp;if(fp=fopen(,IN.DAT,;,r)=NULL) return 1;for(i=0;iMAX;I+) fscanf(fp,%d; &xxi);if(i+l)%10=0)fscanf(fp,nn); fclose(fp);return 0;)void Compute(void) int i,yyMAX;for(i=0;iMAX;I+)yyi=o;for(i=0;iMAX;I+)if(xxi%2=0) yyeven
99、+=xxi; ave2+=xxi;)else odd+; avel+=xxi;if(odd=0) avel=0;else avel/=odd;if(even=0) ave2=0;else ave2/=even;for(i=0;iEVEN;I+)totfc+=(yyil-ave2)*(yyi-ave2)/even;void main()(inti;for(i=0;iif(ReadDat()printf( 数据文件IN.DAT不能打开! 007n”);return;)Compute();printf(,OVEN=%dnAVEl=%fnAVER2=%fnTOTFC=%fn,even,avel,ave
100、2,totfc);WriteDat();)void WriteDat(void)(FILE *fp;int i;fp=fopen(,OUT.DATn,wn);fprintf(fp,%dn%fn%fn%fn,even,ave 1 ,ave2,totfc);fclose(fp);题目34无忧id 102题提供了求素数isPrime。 函数程序progl.c的功能是:选 出 100以上1000之内所有个位数字与十位数字之和被10除所得余数恰是百位数字的素数( 如293) o 计算并输出上述这些素数的个数ent以及这些素数值的和sum。 请考生编写函数countValue()实现程序要求, 最后调用函
101、数writeDAT()把结果ent和 sum输出到文件bclO.out中。注意:部分源程序存放在文件progl.c中。请勿改动主函数main() 和输出数据函数writeDAT。 的内容。#includeint ent, sum ;int isPrime(int m)(inti;for(i=2;iM;I+)if(m % i=0)return 0;return 1;)void countValue() int i,j,bw,sw,gw;for(i=100;i1000;i+) bw=i/100; sw=i%100/10; gw=i%10;if(isPrime(i)&(gw+sw)%10=bw) c
102、nt+; sum+=i;void main()(cnt=sum=0;countValue();printf(素数的个数=%dn”, ent);printf( 满足条件素数值的和二% d”, sum);writeDAT();writeDAT()(FILE *fp ;fp = fopenCbclO.out1, wn) ;fprintf(fp, %dn%dn, ent, sum);fclose(fp);)题目35某级数的前两项Al = l, A 2 = l,以后各项具有如下关系:An=An-2+2An-l ( 注:n-2 与 n-I 为下标)卜 列程序progl.c的功能是:要求依次对于整数M=10
103、0, 1000和 10000求出对应的n值,使其满足:Sn=M ,这 里 Sn=Al+A2+.+An,并依次把n 值存入数组单元b0, bl和b中, 请编制jsValue。 函数来实现此功能, 最后调用函数writeDat。 把数组b中的值输出到 out.dat文件中。请勿改动主函数main。 和写函数writeDat。 的内容。#includeintb3;jsValue()int a 1=1 ,a2= 1 ,a 12,sn,k=2;sn=al+a2;while(l)al2=al+2*a2;if(sn= 100) bO=k;if(sn=1000) bl=k;if(sn= 10000) b2=k
104、;break;sn=sn+a12;al=a2;a2=al2;k+;main()jsValue();printf(,M=100,n=%dnM=1000,n=%dnM=10000,n=%dn,b0,bl,b2);writeDat();writeDat()FILE *fp;fp=fopen(out.dat,“w);printfC,%dn%dn%dn,b0,bl,b2);fprintf(fp,n%dn%dn%dn,b0,bl,b2);fclose(fp);题目36函数ReadDat。 实现从文件ENGIN中读取一篇英文文章,存入到字符串数组xx 中;请编制函数encryptChar(),按给定的替代关
105、系对数组x x 中的所有字符进行替代,仍存入数组x x 的对应的位置上,最后调用函数WriteDat。 把结果xx输出到文件pS6.DAT中。替代关系:f(p)=p*ll mod 256 (p 是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值) ,如果计算后f(p)值小于等于32或 f(p)对应的字符是数字。至 9 , 则该字符不变,否则将f(p)所对应的字符进行替代。部分源程序存在文件progl.c中。原始数据文件存放的格式是:每行的宽度均小于80个字符。请勿改动主函数main。 、读数据函数ReadDat()和 输 数 据 函 数 WriteDat。 的内容。#inc
106、lude#include#include#includeunsigned char xx5080;int maxline=0;/*文章的总行数* /int ReadDat(void);void WriteDat(void);void encryptChar() int i,j;for(i=0;iMAXLINE;I+)for(j=0;j=0&xxi皿 *11%256V=9) continue;else xxi j=xxi j * 11 %256;)void main()clrscr();if(ReadDat()printf( 数据文件ENGIN不能打开! n007);return;)encryp
107、tChar();WriteDat();)int ReadDat(void)(FILE *fp;int i=0;unsigned char *p;if(fp=fopen(eng.inn,nru)=NULL) return 1;while(fgets(xxi,80,fp)!=NULL)p=strchr(xxiAn*);if(p)*p=O;i+;)maxline=i;fclose(fp);return 0;void WriteDat(void)(FILE *fp;int i;fp=fopen(ps6.datM,uwM);for(i=0;iMAXLINE;I+) printf(,%sn,xxi);fp
108、rintf(fp sn“,xxiD;)fclose(fp);题目37函数ReadDat。 实现从文件ENGIN中读取一篇英文文章,存入到字符串数组xx 中;请编制函数encryptChar(),按给定的替代关系对数组x x 中的所有字符进行替代,仍存入数组xx的对应的位置上,最后调用函数WriteDat。 把结果xx输出到文件PS7.DAT中。替代关系:f(p)=p*ll mod 256 (p 是数组中某一个字符的ASCH值,f(p)是计算后新字符的ASCII值) ,如果原字符是大写字母或计算后f(p)值小于等于3 2 ,则该字符不变,否则将f(p)所对应的字符进行替代。部分源程序存在文件pr
109、ogl.c中。原始数据文件存放的格式是:每行的宽度均小于80个字符。请勿改动主函数main。 、读数据函数ReadDat。 和输出数据函数WriteDat。 的内容。#include#include#include#includeunsigned char xx5080;int maxline=0;/*文章的总行数* /int ReadDat(void);void WriteDat(void);void encryptChar() int i,j;for(i=0;iMAXLINE;I+)for(j=0;jSTRLEN(XXI);J+)if(xxilj*ll%256=A,&xxij=Z) con
110、tinue;else xxi j=xxi j * 11 %256;void main()(clrscr();if(ReadDat()printf( 数据文件ENGIN不能打开! n007);return;)encryptChar();WriteDatO;int ReadDat(void)1FILE *fp;int i=0;unsigned char *p;if(fp=fopen(eng.inH,Mru)=NULL) return 1;while(fgets(xxi ,80,fp) !=NULL) p=strchr(xxiAn*);if(p)*p=O;i+;)maxline=i;fclose(f
111、p);return 0;)void WriteDat(void)(FILE *fp;int i;fp=fopen(Mps7.dat,uw);for(i=0;iM AXLINEJ+) printf(,%sn,xxij);fprintf(fp, n%snn ,xxi);)fclose(fp);题 目 38已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm( 字符型4 位) ,产品名称me( 字符型10位) ,单价dj( 整型) ,数量si( 整型) ,金额je( 长整型) 五部分组成。其中:金额= 单价* 数量计算得出。函数ReadDat( ) 是读取这100个销售记
112、录并存入结构数组sell中。请编制函数SortDat。 ,其功能要求:按产品代码从小到大进行排列,若产品代码相同,则按金额从小到大进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WrileDat。 把结果输出到文件OUT6.DAT中。部分源程序存在文件progl.c中。请勿改动主函数main。、读数据函数ReadDat。 和输出数据函数WriteDat( ) 的内容。#include#include#include#include#include#define MAX 100typedef structchar dm5; 产品彳七码* /char 产品名称号int dj; /*单价
113、* /int si; /*数量刃long je; /* 金额* /PRO;PRO sellMAX;void ReadDat();void WriteDat();void SortDat()int i,j;PRO xy;for(i=0;i99;i+)for(j=i+ l;jOllstrcmp(selli.dm,sellj.dm)=O&selli.jesenj.je)xy=sell i ;selli=sell j ;sell j=xy;void main()(memset(sell,0,sizeof(sell);ReadDat();SortDat();WriteDat();void ReadDat
114、()(FILE *fp;char str8O,chl 1;inti;fp=fopen(,IN.DAT,r);for(i=0;i 100;i+)fgets(str,8O,fp);memcpy(selli.dm,str,4);memcpy(selli.mc,str+4,10);memcpy(ch,str+ 14,4); ch4=0;selli.dj=atoi(ch);memcpy(ch,str+18,5);ch5=0;selli.sl=atoi(ch);selli.je=(long)selli.dj*selli.sl;)fclose(fp);void WriteDat(void)FILE *fp;
115、int i;fp=fopen(HOUT6.DAT,; wn);for(i=0;i100;i+)printf(H%s %s %4d %5d %5dnM, selli.dm,selli.mc,selli.dj,selli.sl,selli.je);fprintf(fp,”s %s %4d %5d %5dn, selli.dm,selli.mc,selli.dj,selli.sl,selli.je);)fclose(fp);) 题目39现有一个10个 人 100行的选票数据文件IN.DAT,其数据存放的格式是每条记录的长度均 为 10位, 第一位表示第个人的选中情况, 第二位表示第二个人的选中情况,
116、 依 此 类 推 :内容均为字符。和 1, 1 表示此人被选中,0 表示此人未被选中,全选或不选均为无效的选票。 给定函数ReadDatO的功能是把选票数据读入到字符串数组xx中。 请编制函数CountRs()来统计每个人的选票数并把得票数依次存入yy 到 yy9中。把 结 果 y y 输出到文件OUT.DAT 中。部分源程序存在文件progl.c中。请勿改动主函数main。 、读数据函数ReadDat。 和输出数据函数writeDat。 的内容。#includechar xx100ll;intyy10;int ReadDat(void);void WriteDat(void);void Co
117、untRs(void) int i,j,count;for(i=0;i100;i+) count=0;for(j=0;j10;j+)if(xxiU=r) count+;if(count=OIlcount= 10) continue;for(j=0;j10;j+)if(xxij=,r ) yyj+;void main()int i;for(i=0;il 0;i+)yyi=0;if(ReadDat()printf(选票数据文件IN.DAT不能打开! n007u);return;)CountRs();WriteDat();int ReadDat(void)(FILE *fp;int i;if(fp=
118、fopen(IN.DAT,rM) = NULL) return 1;for(i=0;i100;i+)if(fgets(xxi, 11 ,fp)=NULL)return 1;xxi10=V);)fclose(fp);return 0;)void WriteDat(void)(FILE *fp;int i;fp=fopen(,OUT.DAT,;,w);for(i=0;i 10;i+) fprintf(fp,n%dnu,yyi);printf( 第d 个人的选票数=%dn”,i+l,yyi);)fclose(fp);题目40已知在文件IN.DAT中存有若干个( 个数 200)四位数字的正整数,函 数
119、 ReadDat。 读取这若干个正整数并存入数组xx中。请编制函数CalValue。 ,其功能要求:1、求出这文件中共有多少个正整数totNum;2、求这些数中的各位数字之和是偶数的数的个数totCnt,以及满足此条件的这些数的算术平均值totPjz,最后调用函数writeDat()把所求的结果输出到文件OUT.DAT中。部分源程序存在文件progl.c中。请勿改动主函数main。 、读函数ReadDat。 和写函数writeDat。 的内容。#include#include#define MAXNUM 200int xxMAXNUM;int totNum=0; /*文件IN.DAT中共有多少
120、个正整数* /int totCn仁0; /*符合条件的正整数的个数* /double totPjz=0.0; /*平均值* /int ReadDat(void);void writeDat(void);void CalValue(void) int i,qw,bw,sw,gw;for(i=0;i0) totNum+;qw=xxi/1000;bw=xxi/100%10;sw=xxi%100/10;gw=xxi%10;if(qw+bw+sw+gw)%2=0) totCnt+; totPjz+=xxi;)if(totCnt=0) totPjz=0;else totPjz/=totCnt;void m
121、ain()int i;clrscr();for(i=0;iif(ReadDat()printf( 数据文件IN.DAT不能打开! 007n);return;)CalValue();printf( 文件 IN.DAT 中共有正整数=%d 个n”,totNum);printf( 符合条件的正整数的个数=%d个n”,totCnt);printf( 平均值=%.2fn”,totPjz);writeDat();int ReadDat(void)(FILE *fp;int i=0;if(fp=fopen(,IN.DAT,;,r)=NULL) return 1;while(!feof(fp)fscanf(f
122、p/%d,&xxli+J);)fclose(fp);return 0;void writeDat(void)(FILE *fp;fp=fopen(OUT.DAT; wn);fprintf(fp,n%dn%dn%6.2fnu,totNum,totCnt,totPjz);fclose(fp);)题目41下列 程 序 progl.c的功能是:计 算 出 自 然 数 S IX 和 N IN E ,它们满足的条件是SIX+SIX+SIX=NINE+NINE的个数ent以及满足此条件所有的SIX与 NINE的和SUM。请编写函数countValue()实现程序的要求,最后调用函数writeDat。 把结果
123、ent和 su m ,输出到文件 OUT15.DAT 中。其中的S, L X, N, E 各代表一个十进制数字。部分源程序存在文件progl.c中。请勿改动主函数main()和输出数据函数writeDat。 的内容。#includeint ent,sum;void countValue() int s,i,x,n,e,six,nine;for(s=l;s10;s+)for(i=0;i10;i+)for(x=0;x 10;x+)for(n=l;n10;n+)for(e=0;e 10;e+) six=s*100+i*10+x;nine=n* 1000+i* 100+n* 10+e;if(3 *si
124、x=2*nine) cnt+4-;sum+=six+nine;)void main()(cnt=sum=0;countValue();printf( 满足条件的个数=%dn”,cnt);printf( 满足条件所有的SIX与 NINE的和二% dn”,sum);writeDat();)writeDat()(FILE *fp;fp=fopen(OUT15.DAT,wu);fprintf(fp,%dn%dn,cnt,sum);fclose(fp);)题目42已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm( 字符型4 位) ,产品名称me( 字符型10位) ,单价d
125、j( 整型) ,数量si( 整型) ,金额je( 长整型) 五部分组成。其中:金额= 单价* 数量计算得出。函数ReadDat()是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat。 ,其功能要求:按产品名称从大到小进行排列,若产品名称相等,则按金额从大到小进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT5.DAT中。部分源程序存在文件progl.c中。请勿改动主函数main。 、读数据函数ReadDat。 和输出数据函数WriteDat。 的内容。#include#include#include#include#i
126、nclude#define MAX 100typedef struct char dm5; /* 产品代码* /char 产品名称* /int dj; /* 单价* /int si; /*数量* /long je; /*金额* /PRO;PRO sellMAX;void ReadDat();void WriteDat();void SortDat()int i,j;PRO xy;for(i=0;i99;i+)for(j=i+1 ;j 100;j+)if(strcmp(selli.mc,sellj.mc)Ollstrcmp(selli.mc,sellj.mc)=O&selli.jeSELLfJ.
127、JE)xy=selli;selli=selljl;sellj=xy;void main()(memset(sell,0sizeof(sell);ReadDat();SortDat();WriteDat();)void ReadDat()(FILE *fp;char str80,chl 1;inti;fp=fopen(,IN.DATH,rM);for(i=0;i100;i+)fgets(str,80,fp);memcpy(selli.dm,str,4);memcpy(selli. mc,str+4,10);memcpy(ch,str+ 14,4); ch4=0;selli.dj=atoi(ch)
128、;memcpy(ch,str+18,5);ch5=0;selli.sl=atoi(ch);selli .je=(long)selli .dj *selli. si;)fclose(fp);)void WriteDat()(FILE *fp;int i;fp=fopen(nOUT5.DATV,wu);for(i=0;i100;i+) printf(n%s %s %4d %5d %5dnn,selli.dm,selli.mc,selli.dj,selli.sl,selli.je);fprintf(fp,H%s %s %4d %5d %5dnM, selli.dm,selli.mc,selli.dj
129、,selli.sl,selli.je);)fclose(fp);)题目43无忧id 82题( 只是将结果按“ 从大到小”排序)函数ReadDat()实现从文件in.dat中读取2 0 行数据存放到字符串数组x x 中 ( 每行字符串长度均小于80)。 请编制函数jsSort。 ,其函数的功能是:以行为单位对字符串变量的下标为奇数的字符按其ASCII值从小到大的顺序进行排序,排序后的结果仍按行重新存入字符串数组xx 中,最后调用函数WriteDat。 把结果xx输出到文件out.dat中。例如:位置 0 1 2 3 4 5 6 7源 字 符 串 a b c d e fg h则处理后字符串a h
130、c fe d g b部分源程序存在文件progl.c中。请勿改动主函数main。 、读数据函数ReadDat。 和输出数据函数WriteDat()的内容。#include#include#includechar xx2080;void jsSort()int i,j,k,strl;char ch;for(i=0;ixxik) ch=xxij;xxij=xxik;xxik=ch;)void main()(readDat();jsSort();writeDat();)readDat()(FILE *in;int i=0;char *p;in=fopen(,in.dat,/rH);while(i20
131、&fgets(xxi,80,in)!=NULL)p=strchr(xxin*);if(p)*p=O;i+;fclose(in);)writeDat()(FILE *out;inti;out=fopen(,out.dat,wn);clrscr();for(i=0;i读数据函数ReadDat()和输出数据函数WriteDat。 的内容。#include#include#includechar xx20801;void jsSort() int i,j,k,strl,half;char temp;for(i=0;i20;i+) strl=strlen(xxi);half=strl/2;for(j=0
132、;jHALF-l;J+)for(k=j+ l;kHALF;K+)if(xxij=O;j-,k-) temp=xxij; xxij=xxik; xxik=temp;void main()(readDat();jsSort();writeDat();)readDat()FILE *in;int i=0;char *p;in=fopen(uin.datu,,rn);while(i20&fgets(xxi,80,in)!=NULL)p=strchr(xxiAn);if(p)*p=O;i+;)fclose(in);)writeDat()FILE *out;inti;clrscr();out=fopen(
133、out.dat,w);for(i=0;i20;i+)printf(%sn,xxi);fprintf(out, %sn ,xx i);)fclose(out);题目45已知数据文件IN.DAT中存有200个四位数, 并已调用读函数readDat。 把这些数存入数组 a 中,请考生编制一函数jsV al(),其功能是:依次从数组a 中取出一个四位数,如果该四位数连续大于该四位数以前的五个数且该数是偶数( 该四位数以前不满五个数, 则不统计) ,则统计出满足此条件的个数ent并把这些四位数按从大到小的顺序存入数组b 中, 最后调用写函数writeDat()把结果ent以及数组b 中符合条件的四位数输
134、出到OUT.DAT文件中。注意:部分源程序存在文件progl.c中。程序中已定义数组:a200, b200,已定义变量:ent请勿改动数据文件IN.DAT中的任何数据、主函数main。 、读函数readDat()和写函数writeDat()的内容。#include#define MAX 200int afMAX, bMAX, ent = 0 ;void jsVal()int i,j,flag;for(i=5;iMAX;I+)for(j=i-5;jajJ&ai%2=0) flag=l;else flag=O; break;if(flag=l) bcnt+=ai;)for(i=0;iCNT-l;I
135、+)for(j=i+l;jCNT;J+)if(bi )void readDat()(int i ;FILE *fp ;fp = fopen(in.dat, r);for(i = 0 ; i MAX ; i+) fscanf(fp, H%dH, &ai);fclose(fp);void main()(int i ;readDat();jsVal();printf( 满足条件的数=%dn”, ent);for(i = 0 ; i ent; i+) printf(H%d bi);printf(n);writeDat();writeDat()(FILE *fp ;int i ;fp = fopen(o
136、ut.dat, w);fprintf(fp, %dn, ent);for(i = 0 ; i ent; i+) fprintf(fp, %dnu, bi);fclose(fp);)题目46已知数据文件IN.DAT中存有200个四位数, 并已调用读函数readDat。 把这些数存入数组 a 中,请考生编制一函数jsV al(),其功能是:依次从数组a 中取出一个四位数,如果该四位数连续大于该四位数以前的五个数且该数是奇数, 且该数必须能被7 整除( 该四位数以前不满五个数,则不统计) ,则统计出满足此条件的个数e n t并把这些四位数按从大到小的顺序存入数组b 中,最后调用写函数writeDat
137、() 把结果ent以及数组b 中符合条件的四位数输出到OUT.DAT文件中。注意:部分源程序存在文件progl.c中。程序中已定义数组:a200, b200,已定义变量:ent请勿改动数据文件IN.DAT中的任何数据、主函数main。 、读函数readDat。 和写函数writeDat()的内容。#include#define MAX 200int aMAX, bMAX, ent = 0 ;voidjsValO int i,j,flag;for(i=5;iMAX;I+) for(j=i-5;jaj&ai%2&ai%7=0) flag=l;else flag=O;break;if(flag=l)
138、 bcnt+=ai;)for(i=0;iCNT-l;I+)for(j=i+l;jCNT;J+)if(bi void readDat()(int i ;FILE *fp ;fp = fopen(nin.dat, nrn) ;for(i = 0 ; i MAX ; i+) fscanf(fp, %d, &ai);fclose(fp);void main()1in ti;readDat();jsVal();printf( 满足条件的数=%dn”, ent);for(i = 0 ; i ent; i+) printf(n%d , bi);printf(nnn) ;writeDat();writeDat
139、()(FILE *fp ;inti;fp = fopen(out.dat, nwu) ;fprintf(fp, H%dn, ent);for(i = 0 ; i ent; i+) fprintf(fp, bi);fclose(fp);)题目47已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm( 字符型4 位) ,产品名称me( 字符型10位) ,单价dj( 整型) ,数量si( 整型) ,金额je( 长整型) 五部分组成。其中:金额= 单价* 数量计算得出。函数ReadDat( ) 是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat。 ,
140、其功能要求:按金额从大到小进行排列,若金额相等,则按产品代码从小到大进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat( ) 把结果输出到文件OUT3.DAT中。部分源程序存在文件progl.c中。请勿改动主函数main。 、读数据函数ReadDat。 和输出数据函数WriteDat。 的内容。#include#include#include#include#include#define MAX 100typedef struct)char dm5; /*产品代码头/char mcU;/* 产品名称* /int dj; 单价* /int si; /*数量*/long
141、je; /*金额* /PRO;PRO sellMAX;void ReadDat( ) ;void WriteDat( ) ;void SortDat()int i,j;PRO xy;for(i=0;i99;i+)for(j=i+1 ;j 100;j+)if(selli.jeO)xy=selllij;selllij=sell|jj;sellj=xy;Ivoid main()(memset(sell,0sizeof(sell);ReadDat();SortDat();WriteDat();)void ReadDat()FILE *fp;char str8O,ch11;inti;fp=fopen(I
142、N.DAT,rn);for(i=0;il 00;i+)fgets(str,8O,fp);memcpy(selli.dm,str,4);memcpy(selIfi.mc,str+4,10);memcpy(ch,str+14,4); ch4=0;selli.dj=atoi(ch);memcpy(ch,str+18,5);ch5=0;sellfi.sl=atoi(ch);selli .je=(long)selli .dj *selli .si;)fclose(fp);Ivoid WriteDat()FILE *fp;int i;fp=fopen(OUT3.DAT,wu);for(i=0;i100;i
143、+)printf(M%s %s %4d %5d %5dn, selli.dm,selli.mc,selli.dj,selli.sl,selli.je);fprintf(fp,n%s %s %4d %5d %5dnH, selli.dm,selli.mc,selli.dj,selli.sl,selli.je);fclose(fp);)题目48已知数据文件in.dat中存有300个四位数,并已调用读函数ReadDat。 把这些数存入数组 a 中,请编制一函数jsValue。 ,其功能是:求出千位数上的数加个位数上的数等于百位数上的数加H 立数上的数的个数e n t,再把所有满足此条件的四位数依次存
144、入数组b 中,然后对 数 组 b 的四位数按从小到大的顺序进行排序,最后调用写函数writeDat。 把结果输出到out.dat 文件。例如:6712, 6+2=7+1,则该数满足条件存入数组b 中,且个数cnt=cnt+l。8129, 8 + 9 0 1 + 2 ,则该数不满足条件忽略。部分源程序存在文件progl.c中。程序中已定义数组:a300, b300,已定义变量:ent请勿改动主函数main。 、读函数ReadDat()和写函数writeDat()的内容。#includeint al300J,b300J,cnt=0;jsValue()int i,qw,bw,sw,gw,j;for(
145、i=0;i300;i+)qw=ai/1000; bw=ai% 1000/100;sw=ai%100/10; gw=ai%10;if(qw+gw=bw+sw) bfcnt+=ai;)for(i=0;iCNT-l;I+)for(j=i+l;jbj) qw=bi; bi=bj; bj=qw;main()int i;readDat();jsValue();writeDat();printf(cnt=%dn,cnt);for(i=0;i readDat()FILE *fp;int i;fp=fopen(in.datH,nr);for(i=0;i300;i+)fscanf(fp,n%d,M,&ai);fc
146、lose(fp);)writeDat()(FILE *fp;inti;fp=fopen(out.dat/w);fprintf(fp,%dn,cnt);for(i=0;i0,则 该 数 满 足 条 件 计 算 平 均 值 p j z l ,且 个 数 cnt=cnt+l o9812,9-8-120,则该数不满足条件计算平均值pjz2。部分源程序存在文件progl.c中。程序中已定义数组:a300,已定义变量:cnt,pjzl,pjz2。请勿改动主函数main。 、读函数ReadDat。 和写函数writeDat。 的内容。#includeint a300,cnt=0;double pjz 1 =
147、0.0,pjz2=0.0;jsValue()int i,qw,bw,sw,gw,n=0;for(i=0;i0) cnt+;pjz 1 +=ai;else n+;pjz2+=ai;)if(cnt=0) pjz 1=0;else pjzl/=cnt;if(n=O) pjz2=0;else pjz2/=n;)main()(int i;readDat();jsValue();writeDat();printf(cnt=%dn满 足 条 件 的 平 均 值 pzjl=%7.2fAn不 满 足 条 件 的 平 均 值pzj2=%7.2fnu,cnt,pjz 1 ,pjz2);)readDat()(FILE
148、 *fp;int i;fp二 fopen(in.dat,r);for(i=0;i300;i+)fscanf(fp,%d,H,&ai);fclose(fp);writeDat()(FILE *fp;inti;fp=fopen(Hout.dat,w);fprintf(fp,n%dn%7.2fn%7.2fn,cnt,pjzl,pjz2);fclose(fp);题目50函数ReadDat()实现从文件in.dat中读取2 0 行数据存放到字符串数组x x 中( 每行字符串长度均小于80)。请编制函数jsSort(),其函数的功能是:以行为单位对字符串按给定的条件进行排序,排序后的结果仍按行重新存入字符
149、串数组x x 中,最后调用函数WriteDat()把结果xx输出到文件out.dat中。条件:从字符串中间一分为二,左边部分按字符的ASCII值升序排序,排序后左边部分与右边部分进行交换。如果原字符串长度为奇数,则最中间的字符不参加处理, 字符仍放在原位置上。例如:位置 012345678源 字 符 串 d c b a h g fe4 3 2 1 9 8 7 6 5则处理后字符串h g fe a b c d8 7 6 5 9 1 2 3 4部分源程序存在文件prog 1 .c 中。请勿改动主函数main。 、读函数ReadDat。 和写函数WriteDat。 的内容。#include#incl
150、ude#includechar xx 20 80;void jsSort() int i,j,k,strl,half;char temp;for(i=0;i20;i+) strl=strlen(xxlij);half=strl/2;for(j=0;jHALF-l;J+)for(k=j+l;kxxik) temp=xxij; xxij=xxik; xxfilfk=temp;for(j=half-1 ,k=strl-1 ;j=O;j ,k ) temp=xxij; xxij=xxik; xxilfk=temp;void main()readDat();jsSort();writeDat();)re
151、adDat()(FILE *in;int i=0;char *p;in=fopen(in.dat,r);while(i20 & fgets(xxi,80,in)!=NULL)p=strchr(xxiAn*);if(p) *p=0;i+;fclose(in);writeDat()(FILE *out;int i;clrscr();out=fopen(out.dat,w);for(i=0;i20;i+)printf(%sn,xxi);fprintf(out,%sn,xxi);)fclose(out);)题目51已知数据文件IN.DAT中存有200个四位数, 并已调用读函数readDat。 把这些数
152、存入数组 a 中,请考生编制一函数jsV al(),其功能是:把千位数字和十位数字重新组成一个新的十位数( 新十位数的十位数字是原四位数的千位数字, 新十位数的个位数字是原四位数的十位数字) ,以及把个位数字和百位数字组成另一个新的十位数( 新十位数的十位数字是原四位数的个位数字,新十位数的个位数字是原四位数的百位数字) ,如果新组成的两个十位数均是素数且新数的十位数字均不为零, 则将满足此条件的四位数按从大到小的顺序存入数组b中,并要计算满足上述条件的四位数的个数ent。最后main。 函数调用写函数writeDat。 把结果 ent以及数组b 中符合条件的四位数输出到OUT.DAT文件中。
153、注意:部分源程序存在文件prog 1 .c 中。程序中已定义数组:a200, b200,已定义变量:ent请勿改动数据文件IN.DAT中的任何数据、主函数main。 、读函数readDat。 和写函数writeDat()的内容。#include#define MAX 200int aMAX, bMAX, ent = 0 ;int isprime(int m)inti;for(i=2;i=m/2;i+)if(m%i=0) return 0;return 1;voidjsVal()int i,j,qw,bw,sw,gw;int ab,cd;for(i=0;i= 10&cd= 10) bcnt+J=
154、aiJ;)for(i=0;iCNT-l;I+)for(j=i+l;jCNT;J+)if(bi )void readDat()(inti;FILE *fp ;fp = fopen(nin.datn, nrn) ;for(i = 0 ;i M AX ; i+) fscanf(fp, n%dn, &ai);fclose(fp);)void main()(in ti;readDat();jsVal();printf( 满足条件的数=%dn”, ent);for(i = 0 ; i ent; i+) printf(%d , bi);printf(nH) ;writeDat();)writeDat()(F
155、ILE *fp ;int i ;fp = fopen(out.dat, nwu) ;fprintf(fp, u%dnn, ent);for(i = 0 ; i ent; i+) fprintf(fp, n%dn, bi);fclose(fp);)题目52一知数据文件IN.DAT中存有200个四位数, 并己调用读函数readDat。 把这些数存入数组 a 中,请考生编制- 函数jsV al(),其功能是:把千位数字和个位数字重新组成一个新的十位数( 新十位数的十位数字是原四位数的千位数字, 新十位数的个位数字是原四位数的个位数字) ,以及把百位数字和十位数字组成另一个新的十位数( 新十位数的十位
156、数字是原四位数的百位数字,新十位数的个位数字是原四位数的十位数字) ,如果新组成的两个十位数均是奇数并且两个十位数中至少有一个数能被5 整除,同时两个新数的十位数字均不为零, 则将满足此条件的四位数按从大到小的顺序存入数组b 中, 并要计算满足上述条件的四位数的个数e n t,最后main。 函数调用写函数writeDat()把结果ent以及数组b 中符合条件的四位数输出到OUT.DAT文件中。注意:部分源程序存在文件progl.c中。程序中已定义数组: a200, b200,已定义变量:ent请勿改动数据文件IN.DAT中的任何数据、主函数main。 、读函数readDat。 和写函数wri
157、teDat()的内容。#include#define MAX 200int alMAXJ, bMAX, ent = 0 ;void jsVal()int i,thou,hun,ten,data,j;int ab,cd;for(i=0;i= 10&cd= 10) bcnt+=ai;)for(i=0;iCNT-l;I+)for(j=i+l;jCNT;J+)if(bi void readDat()(int i ;FILE *fp ;fp = fopen(nin.datn, r);for(i = 0 ; i MAX ; i+) fscanf(fp, n%d, &ai);fclose(fp);void
158、main()int i ;readDat();jsVal();printf( 满足条件的数=%dn”, ent);for(i = 0 ; i ent; i+) printf(*%d , bi);printf(n);writeDat();writeDat()!FILE *fp ;inti;fp = fopen(out.datn, nwu) ;fprintf(fp, %dn, ent);for(i = 0 ; i 0,则该数不满足条件忽略。部分源程序存在文件progl.c中。程序中已定义数组: a300, b300,已定义变量:ent请勿改动主函数main。 、读函数ReadDat。 和写函数wr
159、iteDat()的内容。#includeint a3OO,b3OO,cnt=O;jsValue() int i,j,qw,bw,sw,gw;for(i=0;i0) bcnt+=ai;)for(i=0;iCNT-l;I+)for(j=i+l;jbj) qw=bi;bi=bj;bj=qw;)main()int i;readDat();jsValue();writeDat();printf(ncnt=%dnu,cnt);for(i=0;i )readDat()(FILE *fp;int i;fp=fopen(in.datnrn);for(i=0;i300;i+4-)fscanf(fp,n%d,&al
160、i);fclose(fp);)writeDat()(FILE *fp;inti;fp=fopen(,out.dat,Vwn);fprintf(fp,H%dn,cnt);for(i=0;iCNT;I+)FPRINTF(FP,%DN,BI);fclose(fp);题目54已知数据文件in.dat中存有300个四位数,并已调用读函数ReadDat()把这些数存入数组 a 中,请编制一函数jsValue(),其功能是:求出千位数上的数加百位数上的数等于十位数上的数加个位数上的数的个数e n t,再把所有满足此条件的四位数依次存入数组b 中,然后对 数 组 b 的四位数按从大到小的顺序进行排序,最后调用
161、写函数writeDat()把结果输出到out.dat 文件 ()例如:7153, 7+1=54-3,则该数满足条件存入数组b 中,且个数cnt=cnt+l。8129, 8 + 1 0 2 + 9 ,则该数不满足条件忽略。部分源程序存在文件progl.c中。程序中已定义数组:a300, b300,已定义变量:ent请勿改动主函数main。 、读函数ReadDat()和写函数writeDat。 的内容。#includeint af3OO,b3OO,cnt=O;jsValue() int i,j,qw,bw,sw,gw;for(i=0;i300;i+) qw=ai/1000; bw=ai/100%1
162、0;sw=ali%100/10; gw=aiJ%10;if(qw+bw=sw+gw) bcnt+=ai;)for(i=0;iCNT-l;I+)for(j=i+l;jCNT;J+)if(bi )main()(int i;readDat();jsValue();writeDat();printf(Mcnt=%dn,cnt);for(i=0;i readDat()(FILE *fp;int i;fp=fopen(in.datn,r);for(i=0;i300;i+)fscanf(fp,%d,&ai);fclose(fp);)writeDat()(FILE *fp;int i;fp=fopen(out
163、.dat,w,);fprintf(fp,dn”,cnt);for(i=0;iCNT;I+)FPRINTF(FP; %DN,BI);fclose(fp);题目55已知数据文件in.dat中存有300个四位数,并已调用读函数ReadDat。 把这些数存入数组 a 中,请编制一函数jsValue。 ,其功能是:求出所有这些四位数是素数的个数e n t,再把所有满足此条件的四位数依次存入数组b 中, 然后对数组b 的四位数按从小到大的顺序进行排序,最后调用写函数writeDat。 把结果输出到out.dat文件。例如:5591是素数,则该数满足条件存入数组b 中,且个数cnt=cnt+l。9812是非
164、素数,则该数不满足条件忽略。部分源程序存在文件progl.c中。程序中已定义数组:a300, b300J,已定义变量:ent请勿改动主函数main。 、读函数ReadDat()和写函数writeDat。 的内容。#includeint a3OO,b3OO,cnt=O;int isP(int m)inti;for(i=2;iM;I+)if(m%i=O)retum 0;return 1;jsValue()int ij,value;for(i=0;i300;i+)if(isP(ai) bcnt+=ai;for(i=0;iCNT-l;I+)for(j=i+l;jbjl) value=bi; bi=bj
165、; bj=value;main()(int i;readDat();jsValue();writeDat();printf(cnt=%dnH,cnt);for(i=0;i readDat()(FILE *fp;inti;fp=fopen(in.dat”;T);for(i=0;i300;i+)fscanf(fp,M%d; ,&ai);fclose(fp);writeDat()(FILE *fp;int i;fp=fopen(out.dat,w);fprintf(fp,H%dnH,cnt);for(i=0;iCNT;I+)FPRINTF(FP,n%DN,BI);fclose(fp);)题 目 56
166、 函数ReadDat。 实现从文件ENGIN中读取一篇英文文章,存入到字符串数组 xx中;请编制函数encryptChar。,按给定的替代关系对数组xx 中的所有字符进行替代,仍存入数组xx的对应的位置上, 最后调用函数WriteDat()把结果xx输出到文件PS5.DAT中。替代关系:f(p)=p*llmod 256 ( p 是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCH值) ,如果计算后f(p)值小于等于32或 f(p)对应的字符是小写字母,则该字符不变,否则将f(p)所对应的字符进行替代。部分源程序存在文件progl.c中。原始数据文件存放的格式是:每行的宽度均小于8
167、0个字符。请勿改动主函数main。 、读数据函数ReadDat。 和输出数据函数WriteDat。 的内容。#include#include#include#includeunsigned char xx5080;int maxline=0;/*文章的总行数* /int ReadDat(void);void WriteDat(void);void encryptChar() int i,j;for(i=0;iMAXLINE;I+)for(j=0;jSTRLEN(XXI);J+)if(xxij*ll%256=32llxx 皿 *11%2 5 6 y &xxij*ll%256=Z) continu
168、e;else xxij=xxij*ll%256;void main()clrscr();if(ReadDat()printf( 数据文件ENGIN不能打开! n007H);return;)encryptChar();WriteDat();)int ReadDat(void)(FILE *fp;int i=0;unsigned char *p;if(fp=fopen(eng.in,ru)=NULL) return 1;while(fgets(xx i ,8O,fp) !=NU LL) p=strchr(xxiAn,);if(p)*p=O;i+;)maxline=i;fclose(fp);retu
169、rn 0;)void WriteDat(void)(FILE *fp;inti;fp=fopen(nps5.dat,wH);for(i=0;iMAXLINE;I+)printf(,f%snn,xxi);fprintf(fp,n%snn,xxi);Ifclose(fp);)题目57设有n 个人围坐一圈并按顺时针方向从1到 n 编号, 从第s 个人开始进行1到 m 的报数,报数到第m 个人, 此人出圈, 再从他的下一个人重新开始1 到 m 的报数, 如此进行下去直到所有的人都出圈为止。 现要求按出圈次序, 给出这n 个人的顺序表p。 请考生编制函数Josegh()实现此功能并调用函数WriteDa
170、t。 把编号按照出圈的顺序输出到OUT.DAT文件中。注意:第 1 个出圈的编号存放在p0中, 第 2 个出圈的编号存放在pl中, 直至第n 个出圈的编号存放在pn-l中。设 n= 100, s= 1, m= 10进行编程。注意: 部分源程序存放在PROG1.C中。请勿改动主函数main。 和输出数据函数WriteDat()的内容。#include#define N 100#define S 1#define M 10int p100, n, s, m ;void WriteDat(void);void Josegh(void) int i,j,sl,w,q100;for(i=0;i sl=s
171、;for(i=l; i=2; i ) sl=(sl+m-1)%i;if(sl=O)sl=i;w=psl-l;for(j=sl; j pi-l=w;)for(i=0,j=n-l;i=0;i+,j-)qj=pi;for(i=0;iN;I+)pi=qi;void main()(m = M ;n = N ;s = S ;Josegh();WriteDat();)void WriteDat(void) int i, j = 0 ;FILE *fp ;fp = fopen(out.dat, 0w1);for(i = 0 ; i = N - 1 ; i+) printf(M%4d , pi);fprintf
172、(fp, n%4d, pi);j+;if(j % 10 = 0) printf(n);fprintf(fp, n);)fclose(fp);题目58现有一个10个 人 100行的选票数据文件IN.DAT,其数据存放的格式是每条记录的长度均 为 10位,第一位表示第一个人的选中情况,第二位表示第二个人的选中情况,依此类推:内容均为字符0 和 1, 1表示此人被选中, 0 表示此人未被选中,若一张选票人数小于等于5个人时被认为无效的选票。 给定函数ReadDat()的功能是把选票数据读入到字符串数组xx中。请编制函数CountRs。 来统计每个人的选票数并把得票数依次存入yy至U yy9中。把结果
173、yy输出到文件OUT.DAT中。部分源程序存在文件progl.c中。请勿改动主函数main。 、读数据函数ReadDat。 和输出数据函数writeDat()的内容。#includechar xx100ll;int yy10;int ReadDat(void);void WriteDat(void);void CountRs(void) int i,j,count;for(i=0;i100;i+) count=0;for(j=0;j10;j+)if(xxij=,r ) count+;if(count=5) continue;for(j=0;j10;j+)if(xxij=r) yyfj+;)vo
174、id main()(int i;for(i=0;il 0;i+)yyi=0;if(RcadDat()printf( 选票数据文件IN.DAT不能打开! n007n);return;CountRs();WriteDat();int ReadDat(void)!FILE *fp;int i;if(fp=fopen(,IN.DAT,; rM) = NULL) return 1;for(i=0;i100;i+)if(fgets(xxij,l 2,fp)=NULL)return 1;xxiJllO=W;)fclose(fp);return 0;void WriteDat(void)(FILE *fp;i
175、nt i;fp=fopen(OUT.DAT,;,wn);for(i=0;i10;i+)fprintf(fp,%dn,yyi);printf( 第d 个人的选票数=%dn”,i+l,yyi);)fclose(fp);题目59已知数据文件IN.DAT中存有200个四位数, 并已调用读函数readDat。 把这些数存入数组 a 中,请考生编制一函数jsVal( ) , 其功能是:把千位数字和卜位数字重新组成一个新的I-位 数 ab ( 新十位数的十位数字是原四位数的千位数字,新十位数的个位数字是原四位数的卜位数字) ,以及把个位数字和百位数字组成另一个新的卜位数cd ( 新卜位数的十位数字是原四位数
176、的个位数字,新十位数的个位数字是原四位数的百位数字) ,如果新组成的两个十位数abCD, A B必须是奇数且不能被5 整除,C D 必须是偶数,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组B 中,并要计算满足上述条件的四位数的个数CNT。最后MAIN。 函数调用写函数WRITEDATO把结果CN T以及数组 B 中符合条件的四位数输出到OUT.DAT文件中。注意:部分源程序存在文件progLc中。程序中已定义数组:a200, b200,已定义变量:ent请勿改动数据文件IN.DAT中的任何数据、主函数main。 、读函数readDat()和写函数writeDa
177、t()的内容。#include#define MAX 200int aMAX, bMAX, ent = 0 ;voidjsVal()int i,thou,hun,ten,data,j;int ab,cd;for(i=0;iMAX;I+)thou=ai/l000; hun=ai/l00% 10;ten=ai%100/10; data=ai%10;ab=10*thou+ten; cd=10*data+hun;if(ab-cd)= 10&cd= 10)bcnt=ai;cnt+;)for(i=0;iCNT-l;I+)for(j=i+l;jCNT;J+)if(bi void readDat()(in t
178、i;FILE *fp;fp = fopen(in.dat, r);for(i = 0 ; i MAX ; i+) fscanf(fp, %dM, &ai);fclose(fp);void main()(int i ;readDat();jsVal();printf( 满足条件的数= % ( 1。 ” , ent);for(i = 0 ; i ent; i+) printf(%d = bi);printf(nnn) ;writeDat();writeDat()(FILE *fp ;inti ;fp = fopen(out.dat, wu) ;fprintf(fp, n%dnH, ent);for
179、(i = 0 ; i ent; i+) fprintf(fp, %dnu, bi);fclose(fp);)题目60在文件in.dat中有200组数据, 每组有3 个数, 每个数均是三位数。 函数ReadDat()读取这200组数据存放到结构数组a a 中, 请编制函数jsSort(),其函数的功能是: 要求在200组数据中找出条件为每组中的第二个数大于第一个数加第三个数的之和, 其中满足条件的组数作为函数jsSort()的返回值,同时把满足条件的数据存入结构数组bb 中,再对b b 中的数据按照每组数据的第二个数加第三个之和的大小进行降序排列( 第二个数加第三个数的和均不相等) ,排序后的结
180、果仍重新存入结构数组b b 中,最后调用函数WriteDat。 把结果b b 输出到文件out.dat中。部分源程序存在文件progl.c中。请勿改动主函数main。 、读数据函数ReadDat。 和输出数据函数WriteDat。 的内容。#include#include#includetypedef struct int xl,x2,x3;data;data aa200,bb200;int jsSort()int i, j, cnt=0;data ch;for(i=0;iaai.xl+aai.x3) bbcnt+=aai;for(i=0;iCNT-l;I+)for(j=i+l;jCNT;J+
181、)if(bbi.x2+bbi.x3 return ent;)void main()int count;readDat();count=jsSort(); /*返回满足条件的个数* /writeDat(count);)readDat()(FILE *in;int i;in=fopen(in.dat”;T);for(i=0; i200; i+)fscanf(in,%d %d %d,&aai.xl,&aai.x2,&aai.x3);fclose(in);)writeDat(int count)(FILE *out;int i;out=fopen(,out.dat,wu);clrscr();for(i
182、=0; iprintf(H%d,%d,%d 第 二 个 数 + 第 三 个 数=%dnH,bbi.xl,bbfil.x2,bbi.x3,bbi.x2+bbi.x3);fprintf(out,%d %d %dn”,bbi.xl,bb“ .x2,bbj.x3);)fclose(out);题目6 1 已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm( 字符型4 位) ,产品名称me( 字符型10位) ,单价dj( 整型) ,数量si( 整型) ,金额je( 长整型) 五部分组成。其中:金额= 单价* 数量计算得出。函数ReadDat( ) 是读取这100个销售记录并存
183、入结构数组sell中。请编制函数SorlDat。 ,其功能要求:按金额从小到大进行排列,若金额相同,则按产品代码从大到小进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat。 把结果输出到文件OUT2.DAT中。部分源程序存在文件progl.c中。请勿改动主函数main。 、读数据函数ReadDal。 和输出数据函数WriteDat。 的内容。#include#include#include#include#include#define MAX 100typedef struct char dm5; /* 产品代码* /char 产品名称* /int dj; /*单价*
184、 /int si; /*数量* /long je; /*金额* /PRO;PRO sellLMAXJ;void ReadDat();void WriteDat();void SortDat()int i,j;PRO xy;for(i=0;i99;i+)for(j=i+ l;jsellj.jellselli.je=sellj.je&strcmp(selli.dm,sellj.dm)O)xy=selli; selli=sellj; seilj=xy;void main()(memset(sell,0,sizeof(sell);ReadDat();SortDat();WriteDat();)void
185、 ReadDat()(FILE *fp;char str80,chll;int i;fp=fopen(HIN.DATn,Y);for(i=0;i 100;i+) fgets(str,80,fp);memcpy(selli.dm,str,4);memcpy(selli.mc,str+4,10);memcpy(ch,str+14,4);ch4J=0;selli.dj=atoi(ch);memcpy(ch,str+18,5);ch5J=0;selli.sl=atoi(ch);selli.je=(long)selli.dj*selli.sl;fclose(fp);)void WriteDat(void
186、)(FILE *fp;int i;fp=fopen(nOUT2.DATu; wu);for(i=0;i100;i+)printf(H%s %s %4d %5d %5dnM, selli.dm,selli.mc,selli.dj,selli.sl,selli.je);fprintf(fp,n%s %s %4d %5d %5dnM, selli.dm,selli.mc,selli.dj,selli.sl,selli.je);)fclose(fp); 题目62函数ReadDat。 实现从文件ENGIN中读取一篇英文文章,存入到字符串数组xx中;请编制函数encryptChar。,按给定的替代关系对数
187、组x x 中的所有字符进行替代,仍存入数组XX的对应的位置上,最后调用函数WriteDatO把结果xx输出到文件PS2,DAT中。替代关系:f(p)=p*13 mod 256 ( p 是数组中某一个字符的ASCH值,f(p)是计算后新字符的ASCH值) ,如果计算后f(p)值小于等于32或其ASCII值是偶数,则该字符不变,否则将f(p)所对应的字符进行替代。部分源程序存在文件progl.c中。原始数据文件存放的格式是:每行的宽度均小于80个字符。请勿改动主函数main。 、读数据函数ReadDat。 和输出数据函数WriteDat。 的内容。#include#include#include#
188、includeunsigned char xx5080;int maxline=0;/*文章的总行数* /int ReadDat(void);void WriteDat(void);void encryptChar(): int i,j;for(i=0;iMAXLINE;I+)for(j=0;jSTRLEN(XXri);J+)if(xxij*13%256v=32ll(xxij*13%256)%2=0) continue;else xxij=xxij*13%256;void main()(clrscr();if(ReadDat()printfC嗷据文件ENGIN不能打开! n007H);retu
189、rn;)encryptChar();WriteDat();int ReadDat(void)FILE *fp;int i=0;unsigned char *p;if(fp=fopen(1eng.in,r,)=NULL) return 1;while(fgets(xxi,80,fp) !=NULL) p=strchr(xxi,n,);if(p)*p=O;i+;maxline=i;fclose(fp);return 0;Ivoid WriteDat(void)FILE *fp;int i;fp=fopen(,ps2.dat,uwn);for(i=0;iMAXLINE;I+)printf(%sn,x
190、xi);fprintf(fp,srT,xxi);)fclose(fp);题目63程序progl.c的功能是:把 s 字符串中的所有字符左移一个位置,串中的第一个字符移到最后。 请考生编写函数chg(char *s)实现程序要求, 最后调用函数readwriteDAT()把结果输出到bc2.out文件中。例如:s 字符串中原有内容为: M n.l23xyZ,则调用该函数后,结果为:n.123xyZMo注意:部分源程序存在文件progl.c文件中。请勿改动主函数main() 和输出数据函数readwriteDAT。 的内容。#include#include#defineN81void readwr
191、iteDAT();void chg(char *s) int i;char ch=*s;for(i=0;iSTRLEN(S)-l ;I+)si=si+l;sstrlen(s)-l=ch;)main()(char a N ;clrscr();printf(nEnter a string : ) ; gets(a);printf(MThe original string is : ); puts(a);chg(a);printf(HThe string after modified :);puts(a);readwriteDAT();)void readwriteDAT()(int i ;char
192、 aN;FILE *rf, *wf;rf 二 fopen(bc2.in丁T”) ;wf = fopen(bc2,outH, w);for(i = 0 ; i 50 ; i+) fscanf(rf, %s, a );chg(a);fprintf(wf, u%snn, a );)fclose(rf);fclose(wf);)题目6 4 下列程序的功能是:找出所有100以 内 ( 含 1 0 0 )满足I, 1+4, 1+10都是素数的整数I (1+10也 在 100以内) 的个数ent以及这些I 之和sumo请编写函数countValue()实现程序要求的功能,最后调用函数writeDat。 把结
193、果ent和 sum输出到文件out.dat中。部分源程序存在文件progl.c中。请勿改动主函数main。 和输出数据函数writeDat。 的内容。#includeint ent,sum;int isPrime(int m)(inti;for(i=2; iif(m % i =0) return 0 ;return 1;)void countValue()int i;for(i=2;i=90;i+)if(isPrime(i)&isPrime(i+4)&isPrime(i+l 0)cnt+;sum+=i;)void main()(cnt=sum=0;countValue();printf( 满足
194、条件的整数的个数= %dn”,cnt);printf( 满足条件的整数的和值= %dn”,sum);writeDat();writeDat()(FILE *fp;fp=fopen(,out.dat,wH);fprintf(fp,n%dn%dncnt,sum);fclose(fp);) 题 目 6 5 已知在文件IN.DAT中存有若干个( 个数 2 0 0 )四位数字的正整数,函数ReadDat。 读取这若干个正整数并存入数组x x 中。请编制函数CalValueO,其功能要求:1、求出这文件中共有多少个正整数totNum; 2、求这些数中的各位数字之和是奇数的数的个数tolC nt,以及满足此
195、条件的这些数的算术平均值totPjz,最后调用函数writeDat()把所求的结果输出到文件OUT.DAT中。部分源程序存在文件progl.c中。请勿改动主函数main。、读函数ReadDat()和写函数writeDat。 的内容。#include#include#define MAXNUM 200int xxMAXNUM;int totNumH); /*文件IN.DAT中共有多少个正整数* /int totCnt=0; /*符合条件的正整数的个数* /double totPjz=0.0; /*平均值* /int ReadDat(void);void writeDat(void);void C
196、al Vai ue( void) int i ,qw,bw,sw,gw;for(i=0;i0) totNum+;qw=xxi/1000; bw=xxi/100%10;sw=xxi%100/10; gw=xxi%10;if(qw+bw+sw+gw)%2) totCnt+; totPjz+=xxi;)if(totCnt=0) totPjz=0;else totPjz/=totCnt;void main()inti;clrscr();for(i=0;iif(ReadDat()printf( 数据文件IN.DAT不能打开! 007n”);return;)CalValue();printf( 文件 IN
197、.DAT 中共有正整数二% d 个n”,toiNum);printf( 符合条件的正整数的个数=%d个n”,totCnt);printf( 平均值=%.2fn”,totPjz);writeDat();int ReadDat(void)(FILE *fp;int i=0;if(fp=fopen(,IN.DAT; r,)=NULL) return 1;while(!feof(fp)fscanf(fp,%d,&xxi+);)fclose(fp);return 0;)void writeDat(void)(FILE *fp;fp=fopen(,OUT.DAT,wn);fprintf(fp,%dn%dn
198、%6.2fn,totNum,totCnt,totPjz);fclose(fp);题目66下列程序progl.c的功能是:计算500-800区间内素数的个数e n t,并按所求素数的值从大到小的顺序,再计算其间隔加、减之和,即 第 1 个素数- 第2 个素数+ 第 3 个素数- 第4 个素数+ 第 5 个素数的 值 sum。请编写函数countValue()实现程序的要求,最后调用函数writeDat()把结果ent和 sum, 输出到文件OUT 11 .DAT中。部分源程序已给出。请勿改动主函数main()和输出数据函数writeDat()的内容。#includeint ent,sum;int
199、 isP(int m) int i;for(i=2;i500;i-)if(isP(i)(cnt+;sum=sum+k*i;k=k*(-l); )void main()(cnt=sum=0;countValue();printf( 素数的个数二% 小1 1 ” ,cnt);printf( 按要求计算的值=%dn”,sum);writeDat();)writeDat()(FILE *fp;fp=fopen(OUTl 1 .DAT,nwn);fprintf(fp,%dn%dn,cnt,sum);fclose(fp);题目67下列程序的功能是:选 出 5000以下符合条件的自然数。条件是:千位数字与百
200、位数字之和等于十位数字与个位数字之和, 且千位数字与百位数字之和等于个位数字与千位数字之差 的 1 0 倍。计算并输出这些四位自然数的个数e n t以及这些数的和sum。请编写函数countValue。 实现程序的要求,最后调用函数writeDat()把 结 果 e n t和 sum, 输出到文件OUT13.DAT 中。部分源程序存在文件progl.c中。请勿改动主函数main()和输出数据函数writeDat。 的内容。#includeint ent,sum;void countValue()int i,thou,hun,ten,data;for(i=1000;i5000;i+) thou=
201、i/1000; hun=i%1000/100;ten=i% 100/10; data=i% 10;if(thou+hun=ten+data&thou+hun=(data-thou)* 10) cnt+;sum+=i;)void main()(cnt=sum=0;countValue();printf( 满足条件的自然数的个数= % ( 1己 , 5 。 ;printf( 满足条件的自然数的个数之和= % 而” , 5皿) ;writeDat();writeDat()(FILE *fp;fp=fopen(OUTl 3.DAT”, W );fprintf(fp,%dn%dn,cnt,sum);fc
202、lose(fp);)题目68已知数据文件IN.DAT中存有200个四位数, 并已调用读函数readDat。 把这些数存入数组a中,请考生编制一函数j s V a l ( ) ,其功能是:如果四位数各位上的数字均是奇数,则统计出满足此条件的个数en t并把这些四位数按从大到小的顺序存入数组b中。最后m a in。 函数调用写函数wr it eD a t ( )把结果en t以及数组b中符合条件的四位数输出到O UT.DA T文件中。注意:部分源程序存在文件p r o g L c中。程序中已定义数组:a 2 0 0 , b 2 0 0 J ,已定义变量:en t请勿改动数据文件IN .D A T中
203、的任何数据、主函数m a in。 、读函数r ea dD a t。 和写函数wr it eD a t ( )的内容。# in cl u de# defin e MA X 2 0 0in t a M AX , b M AX , en t = 0 ;v o idj s V a l Oin t ij ,t ho u ,hu n ,t en ,da t a ;fo r ( i= 0 ; i2 0 0 ; i+)t ho u = a l ij / 1 0 0 0 ; hu n = a L iJ % 1 0 0 0 / 1 0 0 ;t en = a i% 1 0 0 / 1 0 ; da t a = a
204、 i% 1 0 ;i f ( t h o u & & t h o u % 2 & & h u n % 2 & & t e n % 2 & & d a t a % 2 ) b cn t +J = a i;)fo r ( i= 0 ; iC NT -l ; I +)fo r ( j = i+l ;j C NT ; J +)if( b i v o id r ea dD a t ( )(in t i ;FI L E * fp ;fp = fo pen ( in . da t , r ) ;fo r ( i = 0 ; i MA X ; i+) fs ca n f( fp, n% d , & a i)
205、;fcl o s e( fp) ;)v o id m a in ( )(in t i ;r ea dD a t ( ) ;j s V a l ( ) ;pr in t f( 满足条件的数= % d n ” , en t ) ;fo r ( i = 0 ; i en t ; i+) pr in t f(H%d , b i) ;pr in t f( ,n, ) ;wr it eD a t O ;wr it eD a t ( )FILE *fp ;in ti;fp = fopenCut.dat, nwu) ;fprintf(fp, %dn, ent);for(i = 0 ; i ent; i+) f
206、printf(fp, n%dnn, bij);fclose(fp);)题目6 9 已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat。 把这些数存入数组a 中,请考生编制一函数jsV al(),其功能是:把一个四位数的千位数字上的值减去百位数字上的值再减去十位数字上的值最后减去个位数字上的值, 如果得出的值大于等于零且原四位数是奇数,则统计出满足此条件的个数ent并把这些四位数按从小到大的顺序存入数组b 中,最后调用写函数writeDat。 把结果en t以及数组b 中符合条件的四位数输出到OUT.DAT文件中。注意:部分源程序存在文件progl.c中。程序中已定义数组
207、: a200, b200,已定义变量:ent请勿改动数据文件IN.DAT中的任何数据、主函数main。 、读函数readDat。 和写函数writeDat()的内容。#include#define MAX 200int aMAX, bMAX, ent = 0 ;voidjsValOint ij,thou,hun,ten,data;for(i=0;i=0&ai%2) bcnt+=ai;)for(i=0;iCNT-l;I+)for(j=i+l;jbj) thou=bi; bi=bj;bj=thou;void readDat()(int i ;FILE *fp ;fp = fopen(in.dat,
208、 nrn) ;for(i = 0 ; i MAX ; i+) fscanf(fp, M%dH, &ai);fclose(fp);void main()(inti ;readDat();jsVal();printf( 满足条件的数= % ( 111, ent);for(i = 0 ; i ent; i+) printf(u%d , bi);printf(nnn) ;writeDat();)writeDat()(HLE *fp ;inti;fp = fopen(out.dat, wu) ;fprintf(fp, ent);for(i = 0 ; i ent; i+) fprintf(fp, %dn
209、, bi);fclose(fp);题目70已知在文件IN.DAT中存有若干个( 个数200)四位数字的正整数,函 数 ReadDat()读取这若干个正整数并存入数组xx中。请编制函数CalValue(),其功能要求:1、求出这文件中共有多少个正整数totNum; 2、 求这些数右移1位后, 产生的新数是奇数的数的个数totCnt,以及满足此条件的这些数( 右移前的值) 的算术平均值totPjz,最后调用函数writeDat。 把所求的结果输出到文件OUT.DAT中。部分源程序存在文件progl.c中。请勿改动主函数main()、读函数ReadDat()和写函数writeDat。 的内容。#in
210、clude#include#define MAXNUM 200int xxMAXNUM;int totNum=0; /*文件IN.DAT中共有多少个正整数* /int totCnt=0; /*符合条件的正整数的个数* /double totPjz=0.0; /*平均值* /int ReadDat(void);void writeDat(void);void CalValue(void)int i,data;for(i=0;i0) totNum+;data=xxil;if(data%2) totCn ; totPj z+=xx i ;)if(totCnt=0) totPjz=0;else tot
211、Pjz/=totCnt;)void main()(int i;clrscr();for(i=0;iif(ReadDat()printf( 数据文件IN.DAT不能打开! 007n);return;)CalValue();printf( 文件 IN.DAT 中共有正整数=%d 个n”,totNum);printf( 符合条件的正整数的个数=%d个n”,totCnt);printf( “ 平均值=%.2An”,totPjz);writeDat();)int ReadDat(void)(FILE *fp;int i=0;if(fp=fopen(nIN.DAT,nrn)=NULL) return 1;
212、while(!feof(fp)fscanf(fp; %d/,&xxi+);)fclose(fp);return 0;void writeDat(void)FILE *fp;fp=fopen(,OUT.DATM,wM);fprintf(fp,%dn%dn%6.2fn,totNum,totCnt,totPjz);fclose(fp);题目71函数ReadDat。 实现从文件in.dat中读取20行数据存放到字符串数组x x 中( 每行字符串长度均小于80)。请编制函数jsSort(),其函数的功能是:以行为单位对字符串按给定的条件进行排序,排序后的结果仍按行重新存入字符串数组x x 中,最后调用函
213、数WriteDat()把结果xx输出到文件out.dat中。条件:从字符串中间一分为二,左边部分按字符的ASCII值降序排序,右边部分按字符的ASCII值升序排序。如果原字符串长度为奇数,则最中间的字符不参加排序,字符仍放在原位置上。例如:位置 012345678源 字 符 串 a b c d h g fe1 2 3 4 9 8 7 6 5则处理后字符串d c b a e fg h4 3 2 1 9 5 6 7 8部分源程序存在文件progl.c中。请勿改动主函数main。 、读数据函数ReadDat。 和 输 数 据 函 数 WriteDat。 的内容。#include#include#in
214、cludechar xx2080;void jsSort()int i,j,k,strl,half;char ch;for(i=0;i20;i+) strl=strlen(xxi);half=strl/2;for(j=0;jHALF-l;J+)for(k=j+l ;kHALF;K+)if(xxij if(strl%2) half+;for(j=half;jSTRL-l ;J+)for(k=j+1 ;kxxik) ch=xxij;xxij=xxik;xxik=ch;void main()(readDat();jsSort();writeDat();)readDat()(FILE *in;int
215、i=0;char *p;in=fopen(in.datu?rn);while(i20&fgets(xxi,80,in)!=NULL)p=strchr(xxiAn,);if(p)*p=O;i+;)fclose(in);)writeDat()(FILE *out;inti;clrscr();out=fopen(,out.dat,w);for(i=0;i20;i+)printf(,%sn,xxi);fprintf(out,%sn,xxi);)fclose(out);)题目72已知数据文件IN.DAT中存有200个四位数, 并已调用读函数readDat。 把这些数存入数组a中,请考生编制一函数jsV
216、al(),其功能是:把个位数字和千位数字重新组成一个新的I-位数( 新十位数的十位数字是原四位数的个位数字, 新十位数的个位数字是原四位数的千位数字) ,以及把百位数字和卜位数字组成另一个新的卜位数( 新卜位数的卜位数字是原四位数的百位数字,新十位数的个位数字是原四位数的十位数字) ,如果新组成的两个十位数均是偶数并且两个十位数中至少有一个数能被9 整除, 同时两个新数的十位数字均不为零, 则将满足此条件的四位数按从大到小的顺序存入数组b 中, 并要计算满足上述条件的四位数的个数cnto最后main。 函数调用写函数writeDat()把结果ent以及数组b 中符合条件的四位数输出到OUT.D
217、AT文件中。注意:部分源程序存在文件progl.c中。程序中已定义数组:a200, b200,已定义变量:ent请勿改动数据文件IN.DAT中的任何数据、主函数main。 、读函数readDat。 和写函数writeDat()的内容。#include#define MAX 200int aMAX, bMAX, ent = 0 ;void jsVal()int ij,thou,hun,ten,data,ab,cd;for(i=0;i200;i+)thou=aij/l000; hun=ai/l00% 10;ten=ai%100/10; data=ai%10;ab=10*data+thou; cd=
218、10*hun+ten;if(ab%9=0llcd%9=0)&ab%2=0&cd%2=0&hun!=0&data!=0)bcnt=ai;cnt+;)for(i=0;iCNT-l;I+)for(j=i+l;jCNT;J+)if(bi )void readDat()(int i ;FILE *fp ;fp = fopen(in.dat, r) ;for(i = 0 ; i MAX ; i+) fscanf(fp, 1%dn, &ai);fclose(fp);)void main()(int i ;readDat();jsVal();printf( 满足条件的数=%dn”, ent);for(i =
219、0 ; i ent; i+) printf(n%d , bi);printf(Mn);writeDatO ;writeDat()(FILE *fp ;in ti;fp = fopen(out.datn, nwu) ;fprintf(fp, u%dnn, ent);for(i = 0 ; i ent; i+) fprintf(fp, dn”, bij);fclose(fp);)题目73函数ReadDat。 实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中,请编制函数ConverCharD。 ,其函数的功能是:以行为单位把字符串中的所有小写字母改写成该字母的上一个字母,如果是字母a
220、, 则改写成字母z o 大写字母仍为大写字母,小写字母仍为小写字母,其它字符不变。最后把已处理的字符串仍按行重新存入字符串数组XX中,最后调用函数writeDat()把结果xx输出到文件OUT4.DAT中。例:原文:Adb.Bcdzaabck.LLhj结果:Aca.Bbcyzzabj.LLgi原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。部分源程序存在文件progl.c中。请勿改动主函数main。 、读数据函数ReadDat。 和输出数据函数writeDat。 的内容。#include#include#includechar xx5080;int maxline=0;
221、/*文章的总行数* /int ReadDat(void);void WriteDat(void);void ConvertCharD(void) int i,j;for(i=0;iMAXLINE;I+) for(j=0;j=,b,&xxij=,z,) xxij-=l;void main()(clrscr();if(ReadDat()printf( 数据文件IN.DAT不能打开! n007H);return;)ConvertCharD();WriteDat();int ReadDat(void)(FILE *fp;int i=0;char *p;if(fp=fopen(,IN.DAT,nr,)=
222、NULL) return 1;while(fgets(xxi,80,fp)!=NULL)p=strchr(xxi,n,);if(p)*p=O;i+;maxline=i;fclose(fp);return 0;)void WriteDat(void)(FILE *fp;inti;clrscr();fp=fopen(nOUT4.DAT; wu);for(i=0;iMAXLINE;I+) printf(,%sn,xxi);fprintf(fp,M%sn,xxi);)fclose(fp);)题目74函数ReadDat。 实现从文件IN.DAT中读取一篇英文文章存入到字符串数组x x 中,请编制函数St
223、rCharJL(),其函数的功能是:以行为单位把字符串中的所有字符的ASCH值左移4位,低位补0 , 如果左移后,其字符的ASCII值小于等于32或大于1 0 0 ,则原字符保持不变,否则就把左移后的字符ASCII值再加上原字符ASCII值,得到新的字符仍存入原字符串对应的位置上。最后把已处理的字符串仍按行重新存入字符串数组x x 中,最后调用函数writeDat。 把结果xx输出到文件OUT7.DAT中。原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。部分源程序存在文件progl.c中。请勿改动主函数main。 、读数据函数ReadDat。 和输出数据函数writeD
224、al。 的内容。#include#include#includechar xx50J80J;int maxline=0;/*文章的总行数* /int ReadDat(void);void WriteDat(void);void StrCharJL(void) int i,j;char c;for(i=0;iMAXLINE;I+)for(j=0;jSTRLEN(XXI);J+) c=xxilj4;if(!(c 100) xxij+=c;void main()(clrscr();if(ReadDat()printf( 数据文件IN.DAT不能打开! n007H);return;)StrCharJL
225、();WriteDat();)int ReadDat(void)FILE *fp;int i=0;char *p;if(fp=fopen(IN.DAT,; r)=NULL) return 1;while(fgets(xxi,80,fp)!=NULL)p=strchr(xxi,rn,);if(p)*p=O;i+;)maxline=i;fclose(fp);return 0;)void WriteDat(void)(FILE *fp;inti;clrscr();fp=fopen(HOUT7.DAT,wu);for(i=0;iM AXLINE;I+) printf(%sn”,xxi);fprintf
226、(fp,H%sn,xxi);)fclose(fp);)题目75在文件in.dat中有200组数据,每组有3 个数,每个数均是三位数。函数ReadDat。 读取这200组数据存放到结构数组a a 中,请编制函数jsSort(),其函数的功能是:要求在200组数据中找出条件为每组中的第一个数大于第二个数加第三个数的和, 其中满足条件的组数作为函数jsSortO的返回值,同时把满足条件的数据存入结构数组b b 中,再对b b 中的数据按照每组数据的第一个数加第三个之和的大小进行升序排列( 第个数加第三个数的和均不相等) , 排序后的结果仍重新存入结构数组bb中, 最后调用函数writeDat()把结
227、果bb输出到文件out.dat中。部分源程序存在文件progl.c中。请勿改动主函数main。 、读数据函数ReadDat。 和输出数据函数WriteDat。 的内容。#include#include#includetypedef structint xl,x2,x3;data;data aal200J,bbl200J;int jsSort() int i,j,cnt=0;data xy;for(i=0;i(aai .x2+aai .x3) bbcnt+=aai;for(i=0;iCNT-l;I+)forO=i+l;jbbj.xl+bb|j.x3) xy=bbi; bbi=bbj; bbj=x
228、y;return ent;1void main()(int count;readDat();count=jsSort(); /*返回满足条件的个数* /writeDat(count);)readDat()(FILE *in;inti;in=fopen(in.dat,rM);for(i=0; i200; i+)fscanf(in,H%d %d %dM,&aai.x 1 ,&aai.x2,&aai.x3);fclose(in);)writeDat(int count)(FILE *out;int i;clrscr();out=fopen(out.dat,w);for(i=0; iprintf(%d
229、,%d,%d 第一个 数 + 第 三 个 数=%dn,bbi.x 1 ,bbi.x2,bbi.x3,bbi.x 1 +bbi.x3);fprintf(out,M%d %d %dnH,bbi.xl,bbi.x2,bbi.x3);fclose(out);题目76 J 知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat。 把这些数存入数组a 中,请考生编制一函数jsV al(),其功能是:把个位数字和千位数字重新组成一个新的十位数( 新十位数的十位数字是原四位数的个位数字, 新十位数的个位数字是原四位数的千位数字) ,以及把百位数字和卜位数字组成另一个新的十位数( 新十位数的卜
230、位数字是原四位数的百位数字,新十位数的个位数字是原四位数的十位数字) ,如果新组成的两个十位数必须是一个奇数,另一个为偶数并且两个卜位数中至少有个数能被17整除,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组b中,并要计算满足上述条件的四位数的个数ent。最后main。 函数调用写函数writeDat。 把结果 ent以及数组b 中符合条件的四位数输出到OUT.DAT文件中。注意:部分源程序存在文件prog L c中。程序中已定义数组:a200, b200,已定义变量:ent请勿改动数据文件IN.DAT中的任何数据、主函数main。、读函数readDat。 和写
231、函数writeDat()的内容。#include#define MAX 200int aMAX, bMAX, ent = 0 ;void jsVal()int i,j,thou,hun,ten,data,ab,cd;for(i=0;i= 10&cd= 10)bcnt+=ai;)for(i=0;iCNT-l;I+)for(j=i+l;jCNT;J+)if(bi )void readDat()(int i ;FILE *fp ;fp = fopen(nin.dat, nr);for(i = 0 ; i MAX ; i+) fscanf(fp, %d, &aij);fclose(fp);)void
232、main()(inti;readDat();jsVal();printf( 满足条件的数=%dn”, ent);for(i = 0 ; i ent; i+) printf(n%d , bi);printf(nn);writeDat();1writeDat()(FILE *fp ;inti;fp = fopenCout.dat, w);fprintf(fp, dn”, ent);for(i = 0 ; i ent; i+) fprintf(fp, %dn, bi);fclose(fp);题目7 7 已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a
233、中,请考生编制一函数jsV al(),其功能是:把一个四位数的千位数字上的值加上十位数字上的值恰好等于百位数字上的值加上个位数字上的值,并且原四位数是偶数,则统计出满足此条件的个数ent并把这些四位数按从小到大的顺序存入数组b 中, 最后调用写函数writeDat()把结果ent以及数组b 中符合条件的四位数输出到OUT.DAT文件中。注意:部分源程序存在文件progl.c中。程序中已定义数组:a200, b200,已定义变量:cnl请勿改动数据文件IN.DAT中的任何数据、主函数main。、读函数readDat。 和写函数writeDat()的内容。#include#define MAX 2
234、00int aMAX, bMAX, ent = 0 ;void jsVal()int ij,thou,hun,ten,data;for(i=0;iMAX;I+)thou=ai/1000; hun=ai/l00% 10;ten=ai%100/10; data=ali%10;if(thou+ten=hun+data)&ai%2=0) bcnt+=ai;)fdr(i=0;iCNT-l;I+)for(j=i+l;jb|j)thou=bi;bi=b|j;b|j=thou;)void readDat()(inti ;HLE *fp ;fp = fopen(in.dat, nr);for(i = 0 ;i
235、MAX ; i+) fscanf(fp, %dn, &ai);fclose(fp);)void main()(in ti;readDat();jsVal();printf( 满足条件的数二% dn”, ent);for(i = 0 ; i ent; i+) printf(H%d , bi);printf(nn);writeDat();)writeDat()(FILE *fp ;int i ;fp = fopen(out.datH, Hwu) ;fprintf(fp, dn”, ent);for(i = 0 ; i ent; i+) fprintf(fp, ,%dn, bi);fclose(fp
236、);题目7 8 已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat。 把这些数存入数组a中,请考生编制一函数jsV al(),其功能是:若一个四位数的千位数字上的值大于等于百位数字上的值, 百位数字上的值大于等于十位数字上的值,以及十位数字上的值大于等于个位数字上的值,并且原四位数是奇数,则统计出满足此条件的个数ent并把这些四位数按从小到大的顺序存入数组b中,最后调用写函数writeDat()把结果en t以及数组b中符合条件的数输出到OUT.DAT文件中。注意:部分源程序存在文件progl.c中。程序中已定义数组:a200, b 2 0 0 J,已定义变量:ent请
237、勿改动数据文件IN .D AT中的任何数据 、主函数main。 、读函数readDat。 和写函数writeDat。 的内容。#include#define MAX 200int aMAX, bMAX, ent = 0 ;voidjsValOint i,j,thou,hun,ten,data;for(i=0;i=hun&hun=ten&ten=data&ai%2) bcnt+J=aiJ;)for(i=0;iCNT-l;I+)for(j=i+l;jbj) thou=bi;bi=b|j;bj=thou;void readDat()in ti;FILE *fp ;fp = fopen(in.dat,
238、 r);for(i = 0 ; i M AX ; i+) fscanf(fp, H%dM, &ai);fclose(fp);void main()(int i ;readDat();jsVal();printf( 满足条件的数= % (1。 ” , ent);for(i = 0 ; i ent; i+) printf(%d = bi);printf(nnn) ;writeDat();writeDat()(FILE *fp ;inti ;fp = fopen(nout.datn, wu) ;fprintf(fp, n%dnH, ent);for(i = 0 ; i ent; i+) fprint
239、f(fp, %dnu, bi);fclose(fp);)题目79请编写函数void countValue(int *a,int * n ),它的功能是:求 出 1 到 1000之内能被7 或 11整除但不能同时被7 或 11整除的所有整数放在数组a 中, 并通过n 返回这些数的个数。部分源程序存在文件progl.c中。请勿改动主函数main。 和输出数据函数writeDAT。 的内容。#include#includevoid countValue(int *a,int *n) int i;*n=0;for(i= l;i=1000;i+)if(i%7=0&i% 11 lli%7&i% 11 =0
240、)a(*n)+=i;main()(int aa1000,n,k;clrscr();count Value(aa,&n);for(k=0;kN;K+)if(k+l)%10=0)printf(nnH);else printf(H%5d,aak);writeDAT();)writeDAT()int aa1000,n,k;FILE *fp;fp=fopen(outl 9.dat“ Jw);count Value(aa,&n);for(k=0;k0,则该数满足条件计算平均值p jz l,且个数ent=cnt+1。8129, 9-8-1-20,则该数不满足条件计算平均值pjz2。部分源程序存在文件prog
241、l.c中。程序中已定义数组:a300,已定义变量:cnt,pjzl,pjz2请勿改动主函数main。 、读函数ReadDat()和写函数writeDat。 的内容。#includeint a300,cnt=0;double pjz 1 =0.0,pjz2=0.0;jsValue()int ij,thou,hun,ten,data,n=0;for(i=0;i0) cnt+; pjzl+=ai;else n+; pjz2+=ai;)if(cnt=0) pjz 1=0;else pjzl/=cnt;if(n=0) pjz2=0;else pjz2/=n;)main()(int i;readDat()
242、;jsValue();writeDat();printf(ucnt=% dn满 足 条 件 的 平 均 值 pzjl=% 7.2fn不 满 足 条 件 的 平 均 值pzj2=%7.2tnu,cnt,pjz 1 ,pjz2);)readDat()(FILE *fp;int i;fp=fopen(Min.datn,Mrn);for(i=0;i300;i+)fscanf(fp; %d; ,&ai);fclose(fp);writeDat()(FILE *fp;int i;fp=fopen( out .dat *,n w);fprintf(fp,M%dn%7.2fn%7.2fn,cnt,pjzl,p
243、jz2);fclose(fp);题目81已知数据文件in.dat中存有300个四位数,并已调用读函数ReadDat。 把这些数存入数组 a 中,请编制一函数jsValue。,其功能是:求出千位数上的数加百位数等于十位数上的数加个位数上的数的个数e n t,再求出所有满足此条件的四位数平均值p jz l,以及不满足此条件的四位数平均值p jz2 ,最后调用写函数writeDat。 把结果输出到out.dat文件。例 如 :7153,7+1=5+3,则 该 数 满 足 条 件 计 算 平 均 值 p j z l , 且 个 数 cnt=cnt+l 08129,8+12+9,则该数不满足条件计算平均
244、值pjz2。部分源程序存在文件progl.c中。程序中已定义数组:a300,已定义变量:cnt,pjzl,pjz2。请勿改动. 主函数main。 、读函数ReadDal()和写函数writeDal。 的内容。#includeint a300,cnt=0;double pjzl=0.0,pjz2=0.0;jsValue()int i,thou,hun,ten,data,n=O;for(i=0;i300;i+)thou=ai/1000; hun=ai% 1000/100;ten=ali%100/10; data=ai%10;if(thou+hun=ten+data) cnt+;pjz 1 +=ai
245、;else n+;pjz2+=alij;)if(cnt=0) pjzl=0;else pjzl/=cnt;if( n=0) pjz2=0;else pjz2/=n;)main()(int i;readDat();jsVaIue();writeDat();printf(cnt=%dn满 足 条 件 的 平 均 值 pzjl=% 7.2fn不 满 足 条 件 的 平 均 值pzj2=%7.2fn,cnt,pjz l,pjz2);)readDat()(FILE *fp;inti;fp=fopen(in.dat,r);for(i=0;i300;i+)fscanf(fp,%d,&ai);fclose(f
246、p);)writeDat()(FILE *fp;int i;fp=fopen(Mout.dat,wn);fprintf(fp,H%dn%7.2fn%7.2fnn,cnt,pjzl,pjz2);fclose(fp);)题目82已知数据文件in.dat中存有300个四位数,并已调用读函数ReadDat。 把这些数存入数组 a 中,请编制一函数jsValue。 ,其功能是:求出所有这些四位数是素数的个数e n t,再求出所有满足此条件的四位数平均值p jz l,以及不满足此条件的四位数平均值pjz2,最后调用写函数 writeDat。 把结果 cnt,pjzl,pjz2 输出到out.dat文件。例
247、如:5591是素数,则该数满足条件计算平均值p jz l,且个数cnt=cnt+L9812是非素数,则该数不满足条件计算平均值pjz2o部分源程序存在文件progl.c中。程序中已定义数组:a300,已定义变量:cnt,pjzl,pjz2请勿改动主函数main()读函数ReadDat。 和写函数writeDat。 的内容。#includeint a3OOJ,cnt=O;double pjzl=0.0,pjz2=0.0;int isP(int m)inti;for(i=2;iM;I+)if(m%i=O)return 0;return 1;)jsValue()inti;for(i=0;i300;i
248、+)if(isP(ai) pjz 1 +=ai;cnt+;else pjz2+=afi;if(cnt=O) pjz 1=0;else pjzl/=cnt;if(300-cnt=0) pjz2=0;else pjz2/=(300-cnt);)main()(inti;readDat();jsValue();writeDat();printf(cnt=%dn满 足 条 件 的 平 均 值 pzjl=% 7.2fn不 满 足 条 件 的 平 均 值pzj2=%7.2fnH,cnt,pjz l,pjz2);)readDat()FILE *fp;int i;fp=fopen(in.datH,nr);for
249、(i=0;i300;i+)fscanf(fp,n%dH,&ai);fclose(fp);)writeDat()(FILE *fp;inti;fp=fopen(out.dat,w);fprintf(fp;,%dn%7.2fn%7.2An,cnt,pjzhpjz2);fclose(fp);题目83请编制函数ReadDat。 实现从文件IN.DAT中读取1000个十进制整数到数组x x 中;请编制函数Compute。 分别计算HI x x 中奇数的个数o d d ,奇数的平均值a v e l,偶数的平均值ave2以及所有奇数的方差totfc的值, 最后调用函数WriteDat()把结果输出到OUT.
250、DAT文件中。计算方差的公式如下:N2totfc=l/N E (xxi-avel)i=l设 N 为奇数的个数,xxi为奇数,avel为奇数的平均值。原始数据文件存放的格式是:每行存放10个数,并用逗号隔开。( 每个数均大于0 且小于等于2000)部分源程序存在文件progl.c中。请勿改动主函数main()和输出数据函数writeDat。 的内容。#include#include#include#define MAX 1000int xxMAX,odd=0,even=0;double ave 1 =0.0,ave2=0.0,totfc=0.0;void WriteDat(void);int R
251、eadDat(void)int i;FILE *fp;if(fp=fopen(HIN.DAT,rn)=NULL) return 1;for(i=0;iMAX;I+)fscanf(fp,d,”,&xxi);if(i+l)%10=0)fscanf(fp/nH);)fclose(fp);return 0;Ivoid Compute(void) int i,yyMAX;for(i=0;iMAX;I+)yyi=o;fdr(i=0;iMAX;I+)if(xxi%2) yyodd+=xxi; avel+=xxi;else even+; ave2+=xxi;if(odd=0) avel=0;else avel
252、/=odd;if(even=0) ave2=0;else ave2/=even;for(i=0;iODD;I+)totfc+=(yyi-ave l)*(yyi-ave l)/odd;)void main()(int i;for(i=0;iif(ReadDat()printf( 数据文件IN.DAT不能打开! 007n);return;Compute();printf(,ODD=%dnAVEl=%fnAVE2=%fnTOTFC=%fn,odd,avel,ave2,totfc);WriteDat();void WriteDat(void)(FILE *fp;inti;fp=fopenCOUT.DA
253、Tn; wn);fprintf(fp,%dn%fn%fn%fn,odd,ave 1 ,ave2,totfc);fclose(fp);)题目84现有一个10个 人 100行的选票数据文件IN.DAT,其数据存放的格式是每条记录的长度均 为 10位, 第一位表示第一个人的选中情况, 第二位表示第二个人的选中情况, 依 此 类 推 :内容均为字符0 和 1, 1表示此人被选中,0 表示此人未被选中,若一张选票人数大于5 个人时被认为无效的选票。给定函数ReadDat。 的功能是把选票数据读入到字符串数组x x 中。请编制函数CountRs。 来统计每个人的选票数并把得票数依次存入yy 到 yy9中。
254、把结果yy输出到文件OUT.DAT中。部分源程序存在文件progl.c中。请勿改动主函数main。 、读数据函数ReadDat。 和输出数据函数writeDat。 的内容。#includechar xx100l 1;int yy10;int ReadDat(void);void WriteDat(void);void CountRs(void) int i,j,count;for(i=0;i100;i+) count=0;for(j=0;j5) continue;for(j=0;j10;j+)if(xxij=r) yyj+;)void main()int i;for(i=0;i 10;i+)y
255、yi=O;if(ReadDat()printiT选票数据文件IN.DAT不能打开! n007”);return;)CountRs();WriteDat();int ReadDat(void)(FILE *fp;int i;if(fp=fopen(,IN.DATu,rn) = NULL) return 1;for(i=0;i100;i+)if(fgets(xxiJ,12,fp)=NULL)return 1;xxi10=0;)fclose(fp);return 0;)void WriteDat(void)(FILE *fp;int i;fp=fopen(nOUT.DAT:w);for(i=0;i
256、10;i+) fprintf(fp,H%dnM,yyi);printf( 第d 个人的选票数=%dn”,i+l,yyi);Ifclose(fp);题目85已知数据文件IN.DAT中存有200个四位数, 并已调用读函数readDat。 把这些数存入数组a中,请考生编制一函数jsV al(),其功能是:把一个四位数的个位数字上的值减去千位数字上的值再减去百位数字上的值最后减去十位数字上的值, 如果得出的值大于等于零且原四位数是偶数,则统计由满足此条件的个数ent并把这些四位数按从小到大的顺序存入数组b中, 最后调用写函数writeDat()把结果ent以及数组b 中符合条件的四位数输出到OUT.D
257、AT文件中。注意:部分源程序存在文件progl.c中。程序中已定义数组:a200, b200,已定义变量:ent请勿改动数据文件IN.DAT中的任何数据、主函数main。 、读函数readDat。 和写函数writeDat。 的内容。#include#define MAX 200int aMAX, bMAX, ent = 0 ;voidjsVal()int i,j,thou,hun,ten,data;for(i=0;i=0&aij%2=0) bcnt+=ai;)for(i=0;iCNT-l;I+)for(j=i+l;jbj) thou=bi;bi=bj;bj=thou;void readDat
258、()(int i ;FILE *fp ;fp = fopen(in.dat” JT “) ;for(i = 0 ; i MAX ; i+) fscanf(fp, %d, &ai);fclose(fp);)void main()(int i ;readDat();jsVal();printf( 满足条件的数=%dn”, ent);for(i = 0 ; i ent; i+) printf(%d , bi);printf(Mn);writeDat();writeDat()(FILE *fp ;inti ;fp = fopen(out.dat, w);fprintf(fp, %dn, ent);fo
259、r(i = 0 ; i cd, a b 必须是偶数且能被5 整除,c d 必须是奇数,同时两个新数的十位数字均不为零, 则将满足此条件的四位数按从大到小的顺序存入数组b 中, 并要计算满足上述条件的四位数的个数cnt最后main。 函数调用写函数writeDat()把结果ent以及数组b 中符合条件的四位数输出到OUT.DAT文件中。注意:部分源程序存在文件progl.c中。程序中已定义数组:a200, b200,已定义变量:ent请勿改动数据文件IN.DAT中的任何数据、主函数main。 、读函数readDat。 和写函数writeDat()的内容。#include#define MAX 2
260、00int aMAX, bMAX, ent = 0 ;voidjsVal()int i j,thou,hun,ten,data,ab,cd;for(i=0;i0&(ab%2!= 1 &ab%5=0)&cd%2= 1 &ab= 10&cd= 10)bcnt=ai;cnt+;)for(i=0;iCNT-l;I+)for(j=i+l;jCNT;J+)if(bi )void readDat()(inti;FILE *fp ;fp = fopen(in.dat, nrn) ;for(i = 0 ;i MAX ; i+) fscanf(fp, %dM, &ai);fclose(fp);)void main
261、()(int i ;readDat();jsVal();printf( 满足条件的数=%dn”, ent);for(i = 0 ; i ent; i+) printf(n%d ”, bi);printfCAn1) ;writeDat();)writeDat()(FILE *fp ;in ti;fp = fopen(out.dat, nwu) ;fprintf(fp, u%dnn, ent);for(i = 0 ; i ent; i+) fprintf(fp, %dnu, bi);fclose(fp);题目8 7 已知数据文件in.dat中存有300个四位数,并已调用读函数ReadDat。 把这
262、些数存入数组a 中,请编制一函数jsValue。 ,其功能是:求出千位数上的数加个位数等于百位数上的数加十位数上的数的个数e n t,再求出所有满足此条件的四位数平均值p j z l ,以及不满足此条件的四位数平均值p jz 2 ,最后调用写函数把结果输出到out.dat文件。例 如 :6712,6+2=7+1,则 该 数 满 足 条 件 计 算 平 均 值 p j z l , 且 个 数 cnt=cnt+l8129,8+91+2,则该数不满足条件计算平均值pjz2。部分源程序存在文件progl.c中。程序中已定义数组:a300,已定义变量:cnt,pjzl,pjz2。请勿改动主函数main。
263、 、读函数ReadDat()和写函数writeDat。 的内容。#includeint a300,cnt=0;double pjz 1=0.0,pjz2=0.0;jsValue() int i,gw,sw,bw,qw,cnt2=0;for(i=0;i300;i+)gw=ai%10; sw=ai/10%10;bw=ai/100%10; qw=ai/1000;if(qw+gw)=(sw+bw) cnt+;pjzl+=ai; else cnt2+;pjz2+=ai ; )if(cnt=O) pjzl=O;else pjzl/=cnt;if(cnt2=0) pjz2=0;else pjz2/=cnt2
264、;main()(int i;readDat();jsValue();writeDat();printf(cnt=%dn满 足 条 件 的 平 均 值 pzjl=%7.2fn不 满 足 条 件 的 平 均 值pzj2=%7.2fn,cnt,pjz l,pjz2);)readDat()(FILE *fp;inti;fp=fopen(in.datn,nrH);for(i=0;i300;i+)fscanf(fp; %d; &ai);fclose(fp);)writeDat()(FILE *fp;int i;fp=fopen(out.dat,wH);fprintf(fp,n%dn%7.2fn%7.2fn
265、,cnt,pjzhpjz2);fclose(fp);题目88函数ReadDat()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中,请编制 函 数 SortCharAO,其函数的功能是:以行为单位对字符按从小到大的顺序进行排序,排序后的结果仍按行重新存入字符串数组x x 中,最后调用函数writeDat()把结果xx输出到文件 OUT1.DAT 中。例 : 原 文 :dAe,BfC.CCbbAA结果:, .ABCdefAACCbb原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。部分源程序存在文件progl.c中。请勿改动主函数main。、读数据函数Read
266、Dat。 和输出数据函数writeDat()的内容。#include#include#includechar xx50801;int maxline=0;/*文章的总行数* /int ReadDat(void);void WriteDat(void);void SortCharA(void)int ij,k,strl;char ch;for(i=0;iMAXLINE;I+)strl=strlen(xxi);for(j=0;jxxik)ch=xxij; xxij=xxik; xxik=ch;)void main()(clrscr();if(ReadDat()printf( 数据文件IN.DAT不
267、能打开! n007n);return;SortCharA();WriteDat();)int ReadDat(void)(FILE *fp;int i=0;char *p;if(fp=fopen(,IN.DAr,; r,)=NULL) return 1;while(fgets(xxi,80,fp)!=NULL)p=strchr(xxij,n,);if(p)*p=O;i+;)maxline=i;fclose(fp);return 0;)void WriteDat(void)(FILE *fp;int i;clrscr();fp=fopen(OUTl .DATu,wu);for(i=0;iMAXL
268、INE;I+) printf(%sn,xxi);fprintf(fp,n%snH,xxi);)fclose(fp);题 目 89已知数据文件IN.DAT中存有200个四位数, 并已调用读函数readDat。 把这些数存入数组 a 中,请考生编制一函数jsV al(),其功能是:把一个四位数的千位数字上的值加上个位数字上的值恰好等于百位数字上的值加上十位数字上的值, 并且原四位数是奇数, 则统计出满足此条件的个数e n t并把这些四位数按从小到大的顺序存入数组b 中,最后调用写函数wrileDat()把结果ent以及数组b 中符合条件的四位数输出到OUT.DAT文件中。注意:部分源程序存在文件p
269、rogl.c中。程序中已定义数组: a200, b200,已定义变量:ent请勿改动数据文件IN.DAT中的任何数据、主函数main。 、读函数readDat。 和写函数writeDat。 的内容。#include#define MAX 200int alMAXJ, bMAXJ, ent = 0 ;void jsVal()(int i,j,gw,sw,bw,qw;for(i=0;iMAX;I+)gw=ali%10; sw=aliJ/10%10;bw=ai/100%10; qw=ai/1000;if(qw+gw)=(sw+bw)&ai%2) bcnt+J=ai;for(i=0;iCNT-l;I+
270、)for(j=i+l;jb|jj) qw=bi; bi=bj; bj=qw;void readDat()in ti;FILE *fp ;fp = fopen(Hin.dat, r);for(i = 0 ; i M AX ; i+) fscanf(fp, %d, &ai);fclose(fp);void main()(in ti;readDat();jsVal();printf( 满足条件的数=%dn”, ent);for(i = 0 ; i ent; i+) printf(%d , bi);printf(nnn) ;writeDat();)writeDat()(FILE *fp ;int i
271、;fp = fopen(nout.datn, wu) ;fprintf(fp, n%dnn, ent);for(i = 0 ; i ent; i+) fprintf(fp, n%dn, bi);fclose(fp); 题 目 9 0 下列程序的功能是:将一正整数序列K1,K2,.,K9重新排列成一个新的序列。新序列中,比 K1小的数都在K1的前面( 左面) ,比 K1大的数都在K 1的后面( 右面) 。要求编写函数jsValue。 实现此功能, 最后调用writeDat。 函数将新序列输出到文件out.dat中。说明: 在程序中已给出了 10个序列,每个序列有9 个正整数,并存入数组a109中
272、,分别求出这10个新序列。例: 序歹( ) 6,8,9,1,2,547,3经重排后成为 3,4,5,2,1,6,8,9,7)部分源程序存在文件progl.c中。请勿改动主函数main。 和写函数writeDat。 的内容。#includejsValue(int a109) int i,j,k,val,num;for(i=0;i10;i+) val=afi0;for(j=0;j9;j+)if(airjl0;k-)aik=aik-l;ai0=num;main()(ini a109= 6,83,1,2,5,4,7,3,3,5,8,9,1,264,7,8,2,1,9,354,6,7,3,5 , 2,9
273、,8,6,7,4,4,7,891,2,5,3,6,4,7,3,5 , 2,6,8,9,(9,1,3,5,8,6,2,4,7),2,6 , 9,8,3,5,7,4,5,3,7,9,1,826,4,7,1,325,8,9,4,6,) ;int i,j;jsValue(a);for(i=0;i10;i+)for(j=0;j9;j+) printf(%d,alijjj);if(j=7)printf(,);)printf(n);)writeDat(a);writeDat(int al 09)FILE *fp;ini i,j;fp=fopen(out.dat,w);for(i=0;i10;i+)for(j
274、=0;j9;j+)printf(%d,aij);fprintf(fp,%d,aij);if(j=7) fprintf(fp,);)printf(n);fprintf(fp,n);)fclose(fp);题目91请编制程序progl.c,从文件in.dat中读取200个整数至数组x x 中, 求出奇数的个数cntl和偶数的个数cnt2以及数组xx下标为偶数的元素值的算术平均值pj ( 保留2 位小数) 。结果 cntl,cnt2,pj 输出到 out.dat 中。部分程序、读数据函数read_dat(int xx200)及输出格式已给出。#include#include#define N 200
275、void read_dat(int xxN)(int i,j;FILE *fp;fp=fopen(,in.dat,rH);for(i=0;i20;i+)for(j=0;j10;j+)fscanf(fp,H%d,M,&xxi* 10+jJ);printf(%d u,xxi*10+j);)printf(nnH);)fclose(fp);)void main()(int i,j,sum;ini cntl,cnt2,xxN;float pj;FILE *fw;clrscr();fw=fopen(,out.dat,wn);read_dat(xx);sum=0; pj=O.O; cntl=cnt2=0;f
276、or(i=0;i if(xxi%2) cntl+;else cnt2+;if(i%2=0) pj+=xxi;sum+;)pj/=sum;printf(,nncntl=%d,cnt2=%d,pj=%6.2fn,cntl,cnt2,pj);fprintf(fw,%dn%dn%6.2fn,cntl,cnt2,pj);fclose(fw);题目92请编制程序p ro g l.c,从文件IN.DAT中读取200个整数至数组x x中,求出最大数max及最大数的个数ent和数组x x中能被3整除或能被7整除的算术平均值pj( 保留2位小数) 。结果max,ent,pj输出到OUT.DAT中。部分程序、读数据
277、函数read_dat(int xx200)及输出格式已给出。#include#include#define N 200void read_dat(int xxNJ)(int i,j;FILE *fp;fp=fopen(,in.datn,r);for(i=0;i20;i-H-)for(j=0;j10;j+)fscanf(fp,d,”,&xxi* 10+jJ);printf(d”,xxi*10+j);)printf(,n,);)fclose(fp);)void main()(int m,temp,n,sum;int cnt,xxNl,max ;float pj;FILE *fw;clrscr();
278、fw=fopen(out.dat,wn);read_dat(xx);cnt=0; max=xx0; pj=O.O; n=0;for(m=0;mN;M+)if(max for(m=0;mN;M+)if(xxm=max) cnt+;if(xxm%3=0llxxm%7=0) pj+=xxm; n+; )P” =n;printf(nnnmax=%d,cnt=%d,pj=%6.2fn,max,cnt,pj);fprintf(fw/%dn%dn%6.2fn,max,cnt,pj);fclose(fw);题目93请编制函数ReadDat。 实现从文件IN.DAT中读取1000个十进制整数到数组x x 中;请
279、编制函数Compute(),分别计算出x x 中奇数的个数o d d ,偶数的个数ev en ,平均值aver以及方差totfc的值,最后调用函数WriteDat。 把结果输出到OUT.DAT文件中。计算方差的公式如下:N2totfc=l/N (xxi-aver)i=l原始数据文件存放的格式是:每行存放10个数,并用逗号隔开。( 每个数均大于。且小于等于2000)部分源程序存在文件progl.c中。请勿改动主函数main()和输出数据函数writeDat。 的内容。#include#include#include#define MAX 1000int xxMAX,odd=0,even=0;do
280、uble aver=0.0,totfc=0.0;void WriteDat(void);int ReadDat(void)(int i;FILE *fp;if(fp=fopen(nIN.DAT,rn)=NULL) return 1;/ * * * * * * * * * * * * * * * 编制函数 ReadDat。 * * * * * * * * * * * * * * * * * /for(i=0;iMAX;I+) fscanf(fp,%d,&xxi);if(i+l)%10=0)fscanf(fp,nnn);)fclose(fp);return 0;void Compute(void)
281、 inti;for(i=0;iMAX;I+) if(xxij%2) odd+;else even+;aver+=xxi;)aver/=MAX;for(i=0;iMAX;I+)totfc+=(xxij-aver)*(xxlij-aver);totfc/=MAX;)void main()(inti;for(i=0;iif(ReadDat()printf( 数据文件IN.DAT不能打开! 007n);return;Compute();printf(,ODD=%dnOVEN=%dnAVER=%fnTOTFC=%fn,odd,even,aver,totfc);WriteDat();void WriteD
282、at(void)(FILE *fp;inti;fp=fopen(OUT.DAT,;,wM);fprintf(fp,%dn%dn%fn%fn,odd,even,aver,totfc);fclose(fp);)题目94请编制程序progl.c,从文件in.dat中读取200个整数至数组x x 中, 求出奇数的个数cntl和偶数的个数cnt2以及数组x x 中值为偶数的算术平均值pj ( 保留2 位小数) 。结果 cntl,cnt2,pj 输出到 out.dat 中。部分程序、读数据函数read_dat(int xx|200)及输出格式已给出。#include#include#define N 20
283、0void read_dat(int xxN)(int i,j;FILE *fp;fp=fopen(in.dat,;,rM);for(i=0;i20;i+)for(j=0;j10;j+)fscanf(fp/%d/,&xxi*10+j);printf(H%d n,xxi*10+j);)printf(,n,);)fclose(fp);void main()(int m,sum;int cntl,cnt2,xxN;float pj;FILE *fw;fw=fopen(out.dat,w);clrscr();read_dat(xx);cntl=0; cnt2=0; pj=O.O;for(m=0;mN;
284、M+)if(xxm%2) cntl+;else cnt2+; pj+=xxm;if(cnt2=0) pj=O;else pj/=cnt2;printf(nncnt 1 =%d,cnt2=%d,pj=%6.2fn,cnt 1 ,cnt2,pj);fprintf(fw,%dn%dn%6.2fn,cntl,cnt2,pj);fclose(fw);题目95函数ReadDat。 实现从文件ENGIN中读取一篇英文文章,存入到字符串数组xx 中;请编制函数encryptChar(),按给定的替代关系对数组x x 中的所有字符进行替代,仍存入数组x x 的对应的位置上,最后调用函数WriteDat。 把结果
285、xx输出到文件PS4.DA中。替代关系:f(p)=p*l I mod 256 (p 是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值) ,如果计算后f(p)值小于等于32或 f(p)对应的字符是大写字母,则该字符不变,否则将f(p)所对应的字符进行替代。部分源程序存在文件progl.c中。原始数据文件存放的格式是:每行的宽度均小于80个字符。请勿改动主函数main。 、读数据函数ReadDat。 和输出数据函数WriteDat。 的内容。#include#include#include#includeunsigned char xx50f80;int maxline=0;
286、/*文章的总行数* /int ReadDat(void);void WriteDat(void);void encryptChar() int i,j;for(i=0;iMAXLINE;I+)for(j=0;j=A&xxiU*ll%256v=Z) continue;else xxij=xxij*l 1%256;void main()(clrscr();if(ReadDat()printf( 数据文件ENGIN不能打开! n007n);return;)encryptChar();WriteDat();int ReadDat(void)FILE *fp;int i=0;unsigned char
287、*p;if(fp=fopen(eng.in,Mru)=NULL) return 1;while(fgets(xxi,80,fp)!=NULL)p=strchr(xxij,n,);if(p)*p=O;i+;1maxline=i;fclose(fp);return 0;)void WriteDat(void)(FILE *fp;int i;fp=fopen(ps4.dat,w);for(i=0;iM AXLINE;I+) printf(M%sn,xxi);fprintf(fp, ,%sn, ,xxi);)fclose(fp);题目96函数ReadDat。 实现从文件ENGIN中读取一篇英文文章,存
288、入到字符串数组xx 中;请编制函数encryptChar(),按给定的替代关系对数组x x 中的所有字符进行替代,仍存入数组xx的对应的位置上,最后调用函数WriteDat。 把结果xx输出到文件PS5.DAT中。替代关系:f(p)=p*llmod 256 (p 是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCH值) ,如果原字符是小写字母或计算后f(p)值小于等于3 2 ,则该字符不变,否则将f(p)所对应的字符进行替代。部分源程序存在文件progl.c中。原始数据文件存放的格式是:每行的宽度均小于80个字符。请勿改动主: 函数main。 、读数据函数ReadDat。 和输出
289、数据函数WriteDat。 的内容。#include#include#include#includeunsigned char xx5080;int maxline=O;/*文章的总行数* /int ReadDat(void);void WriteDat(void);void encryptChar() int i,j;for(i=0;iMAXLINE;I+)for(j=0;jSTRLEN(XXLI);J+)if(xxij*l l%256=a&xxi皿 v=z) continue;else xxij=xxijjj*l 1%256;)void main()(clrscr();if(ReadDat
290、()printf( 数据文件ENGIN不能打开! n007);return;encryptChar();WriteDatO;)int ReadDat(void)(FILE *fp;int i=0;unsigned char *p;if(fp=fopen(Heng.in,MrH)=NULL) return 1;while(fgets(xxi,80,fp)!=NULL)p=strchr(xxi,n,);if(p)*p=O;i+;)maxline=i;fclose(fp);return 0;void WriteDat(void)(FILE *fp;int i;fp=fopen(ps5.dat,w);
291、for(i=0;iMAXLINE;I+)printf(%sn,xxi);fprintf(fp, %sn ,xxi);fclose(fp);)题目97函数ReadDat。 实现从文件ENGIN中读取一篇英文文章,存入到字符串数组xx 中;请编制函数encryptChar(),按给定的替代关系对数组x x 中的所有字符进行替代,仍存入数组xx的对应的位置上,最后调用函数WriteDat()把结果xx输出到文件PS9,DAT中。替代关系:f(p)=p*ll mod 256 (p 是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值) ,如果原字符是数字字符0 至 9 或计算后f(p
292、)值小于等于3 2 ,则该字符不变,否则将f(p)所对应的字符进行替代。部分源程序存在文件progLc中。原始数据文件存放的格式是:每行的宽度均小于80个字符。请勿改动主函数main。 、读数据函数ReadDat。 和输Hl数据函数WriteDat。 的内容。#include#include#include#includeunsigned char xx5080;int maxlineH);/*文章的总行数刃int ReadDat(void);void WriteDat(void);void encryptChar() int i,j;for(i=0;iMAXLINE;I+)for(j=0;j
293、STRLEN(XXI);J+)if(xxij*ll%256=,0,&xxij=,9,) continue;else xxijj=xxijjj*l 1%256;void main()(clrscr();if(ReadDat()printf( 数据文件ENGIN不能打开! n007n);return;)encryptChar();WriteDatO;int ReadDat(void)FILE *fp;int i=0;unsigned char *p;if(fp=fopen(eng.in,r,)=NULL) return 1;while(fgets(xxi,80,fp)!=NULL)p=strchr
294、(xxiAn1);if(p)*p=O;i+;Imaxline=i;fclose(fp);return 0;Ivoid WriteDat(void)FILE *fp;int i;fp=fopen(Hps9.dat,w);for(i=0;i读数据函数ReadDat()和输出数据函数WriteDat。 的内容。#include#include#include#includeunsigned char xx50Jl80J;int maxline=0;/*文章的总行数* /int ReadDat(void);void WriteDat(void);void encryptChar() int i,j;f
295、or(i=0;iMAXLINE;I+)for(j=0;jSTRLEN(XXri);J+)if(xxfifj*17%256=32ll(xxij*17%256)%2!=0) continue;else xxi 皿 =xxi 皿 *17%256;void main()(clrscr();if(ReadDat()printf( 数据文件ENGIN不能打开! n007);return;)encryptChar();WriteDat();)int ReadDat(void)FILE *fp;int i=0;unsigned char *p;if(fp=fopen(eng.in,ru)=NULL) retu
296、rn 1;while(fgets(xxi,80,fp)!=NULL)p=strchr(xxiAn*);if(p)*p=O;i+;)maxline=i;fclose(fp);return 0;)void WriteDat(void)(FILE *fp;inti;fp=fopen(,ps3.dat,w,);for(i=0;iMAXLINE;I+)printf(n%sn,xxi);fprintf(fp,%sn,xxi);fclose(fp);题目99已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm( 字符型4 位) ,产品名称me( 字符型10位) ,单价dj( 整型
297、) ,数量si( 整型) ,金额je( 长整型) 五部分组成。其中:金额= 单价* 数量计算得出。函数ReadDat。 是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat。 ,其功能要求:按金额从小到大进行排列,若金额相等,则按产品代码从小到大进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat。 把结果输出到文件OUT1.DAT中。部分源程序存在文件progl.c中。请勿改动主函数main。、读数据函数ReadDat。 和输出数据函数WriteDat。 的内容。#include#include#include#include#include#d
298、efine MAX 100typedef struct(char dm5;/* 产品代码 * /char 产品名称* /int dj; /*单价 * /int si; /* 数量* /long je; /* 金额* /PRO;PRO sellLMAXJ;void ReadDatO;void WriteDat();void SortDat()int ij;PRO xy;for(i=0;i99;i+)for(j=i+ l;jsellj.jellselli.je=sellj.je&strcmp(selli.dm,sellj.dm)O)xy=selli;sell i=sellj;sellfj=xy;)
299、void main()(memset(sell,0,sizeof(sell);ReadDat();SortDat();WriteDat();)void ReadDat()(FILE *fp;char str80,chl 1;int i;fp=fopen(HIN.DAT; r);for(i=0;il 00;i+)fgets(str,80Jp);memcpy(selli.d m,str,4);memcpy(selli. mc,str+4,10);memcpy(ch,str+14,4); ch4=0;selli.dj=atoi(ch);memcpy(ch,str+18,5);ch5=0;selli.
300、sl=atoi(ch);selli.je=(long)selli.dj*selli.sl;)fclose(fp);)void WriteDat()(FILE *fp;inti;fp=fopen(HOUT LDAT”, W );for(i=0;i100;i+)printf(M%s %s %4d %5d %5dn, selli.dm,selli.me,selli.dj,selli.sl,selli.je);fprintf(fp,”%s %s %4d %5d %5dn, selli.dm,selli.mc,selli.dj,selli.sl,selli.je);)fclose(fp);)题目100函
301、数ReadDatO实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中,请编制 函 数 ChaionvA(),其函数的功能是:以行为单位把字符串中的最后一个字符的ASCII值右移4 位,高位补0 后加最后第二个字符的ASCII值,得到最后一个新的字符,最后第二个字符的ASCH值右移4 位,高位补0 后加最后第三个字符的ASCII值,得到最后第二个新的字符,依此类推一直处理到第二个字符,第一个字符的ASCII值加原最后一个字符的 ASCII值,得到第个新的字符,得到的新字符分别存放在原字符串对应的位置匕最后已处理的字符串仍按行重新存入字符串数组x x 中,最后调用函数writeDat(
302、)把结果xx输出到文件OUT10.DAT中。原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。部分源程序存在文件progl.c中。请勿改动主函数main()和写函数writeDat()的内容。#include#include#includecharxx5080;int maxline=0;/*文章的总行数* /int ReadDat(void);void WriteDat(void);void CharConvA() int i,j;char p,c;for(i=0;iO;j )xxijj=(xxlij|j4)+xxijj-lj;xxiO=p+c;)void main()
303、(clrscr();if(ReadDat()printf( 数据文件IN.DAT不能打开! n007M);return;)CharConvA();WriteDat();int ReadDat(void)(FILE *fp;int i=0;char *p;if(fp=fopen(IN.DAT,nrH)=NULL) return 1;while(fgets(xxi,80,fp)!=NULL)p=strchr(xxi,n,);if(p)*p=O;i+;)maxline=i;fclose(fp);return 0;)void WriteDat(void)(FILE *fp;int i;fp=fopen(,OUT10.DAT,;,wu);for(i=0;iM AXLINE;I+) printf(M%sn,xxi);fprintf(fp,%sn,xxi);)fclose(fp);