c语言上机练习100题

上传人:微*** 文档编号:168530098 上传时间:2022-11-10 格式:DOCX 页数:73 大小:250.17KB
收藏 版权申诉 举报 下载
c语言上机练习100题_第1页
第1页 / 共73页
c语言上机练习100题_第2页
第2页 / 共73页
c语言上机练习100题_第3页
第3页 / 共73页
资源描述:

《c语言上机练习100题》由会员分享,可在线阅读,更多相关《c语言上机练习100题(73页珍藏版)》请在装配图网上搜索。

1、C语言上机练习100题、替换字符。(1、 3、 5、 7、 9、 27、 30、 73、 79、 91、 93、 95、 97、 99)二、字符串左右排序和比较。(2 4、 6、 12、 26、 29、 71、 72、 74、 84、 90、 96、 98、 100)三、正整数排序求平均值(包括将数拆散、求最大最小值)。国 31、 33、 35、 37、 39、 42、 44、 46、 47、 48、 49、 50、 51、 52、 53、 54、 56、 58、 60、 61、 63、 65、 67、 69、 92、 94、)四、产品五个因素的比较排列,是结构体操作问题。(11、13、15、

2、17、19、81、83、85、87、89)五、素数。(14、22、28、51、80)六、数字排序。 18 )七、其他数学计算。(16、20、36、43、55、57、59、64、66、78、86、88)、数字或字符移位后的计算。(21、23、41、45、77)学生成绩,结构体问题。(24、T6)十、字符串(单词)的倒置和删除。、T5.)十、选票问题。(32 68, 70 82)十二、出圈问题。(34)十三、进制转换。(不、40 62 )1题函数ReadDatO实现从文件ENGIN中读取一篇英文文章,存 入到字符串数组xx中;请编制函数encryptCharO,按给定的替代关 系对数组XX中的所有

3、字符进行替代,仍存入数组XX的对应的位 置1:,最后调用函数WriteDat。把结果xx输出至文件PS 10.DAT 中。替代关系:f(p)=p*U mod 256 (p是数组屮某一个字符的ASCHreturn;encryptChar();WriteDatO;值,f(p)是计算后新字符的ASCII值),如果原字符的ASCII值是偶 数或计算后f(p)值小于等于32,则该字符不变,否则将f(p)所对应 的字符进行替代。部分源程序已给出,原始数据文件存放的格式是:每行的宽度 均小于80个字符。请勿改动主函数main()、读数据函数ReadDatO和输出数据函数 WriteDat。的内容。#incl

4、ude#include#include#includeint ReadDat(void)FILE *fp;int i=0;unsigned char *p;if(fp=fopen(,eng.in,V)=NULL) return 1;while(fgets(xx|i,80,fp)!=NULL)p=strchr(xxi,n);if(p)*p=O;i+;iunsigned char xx5O8O;int maxline=0;/文章的总行数/1maxline=i;fclose(fp);return 0;int ReadDat(void)void WriteDat(void)void WriteDat(

5、void)void encryptChar()()FILE *fp;int i;fp=fopen(ps Iddat Jw);tor(i=0;imaxline;i+)void main()clrscr();if(ReadDat()printf(数据文件ENGIN不能打开!n007);printf(H%sn,xxiJ); fprintf(fp,sn”,xxi); fclose(fp);)注:在ReadDatO函数中由于fgets()函数读入数据时没有读入字符 串结束符,;因而用while。循环在xx数组每一行未尾将换行符An,替换成结束符*pf=*pf*ll%256; pf+; )。编写的函数如:

6、该函数的基本算法是一让字符指针p所向每 一行的开头然后逐一往后移动,在移动过程中按要求进行转换。*pf%2=0用于判断是否 为偶数。if()条件语句用了控制不替代字符。)解法2:void encryptChar() int i,j,t;解法1:for(i=0;imaxline;i+) 1void encryptChar()(int i;char *pf;for(i=0;imaxline;i+) / 行循环/pf=xxi;/*每行字符个数/while(*pf!=0)if(*pf%2=OII*pf* 11 %25632)tfor(j=0;jstrlen(xxi);j+)(t=xxij*ll%256

7、;if(t=32 II xxi|j%2=0) continue;xxij=t;)pf+;continue;12题函数ReadDatO实现从文件in.dat中读取20行数据存放到字其函数的功能是:以行为单位对字符串按给定的条件进行排序,符半数组xx中(第行字符串长度均小于80)。请编制函数jsSoi!。,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数WriteDat。把结果xx输出到文件outdat中。条件:从字符串中间一分为二,左边部分按字符的ASCII值升序 排序,排序后左边部分与右边部分进行交换。如果原字符串长度 为奇数,则最中间的字符不参加处理,字符仍放在原位置上。)readD

8、at() (例如:位置 012345678FILE *in;源字符串d c b a h g f eint i=0;432198765char *p;则处理后字符串hgfeabcdin=fopen(in.dat;V);876591234while(i20&fgets(xxi,80,in)!=NULL)(部分源程序已给出。p=strchr(xxiAn);请勿改动主函数main。、读函数ReadDal。和写函数WrileDal。if(P)*P=O;的内容.i+;#include#include#includefclose(in); )char xx 20 80;writeDat()void jsSo

9、rt()FILE *out();(int i;clrscr();)out=fopen(,out.datw); for(i=0;i20;i+)void main()printf(M%sn,xxi);fprintf(out,%sn,xxi);readDat();)jsSort();writeDat();)fclose(out);注:先采用冒泡法对左边部分进行升序排序,然后将排序后的左 半与右半按对应位进行调换。void jsSort()void jsSort() (int ij,k,strl;int i,strl,halfj,k;char ch;char ch;for(i=0;i20;i+)/ 行

10、循环/for(i=0;i20;i+) (strl=strlen(xxi);/ 每行长度/strl=strlen(xx|i|);half=strl/2;for(j=0;jstrl/2;j+)for(j=0;jhalf-l;j+)/* 每行的第j 个位置/for(k=j+1 ;kstrl/2;k+)for(k=j+1 ;kxxik)if(xxiUlxxik)ch=xxij;/* 每次将最小数赋给 xxij*/(ch=xxi 皿;xxij=xxik;xxij=xxik;xxik=ch; )xx|i|k=ch;for(j=0;j=O;j,k-)( ch=xxij;ch=xxij;xx|i|j=xxi(

11、strl+l)/2+jl;xxij=xxik;xxik=ch;xxi(strl+ l)/2+j =ch; ) ) ) )3题函数ReadDat。实现从文件:ENGIN中读取篇英文文章,存入到字符串数组xx中;请编制函数encryptChar。,按给定的替代关系对数组XX中的所有字符进行替代,仍存入数组XX的对应的位 置上,最后调用函数WriteDatO把结果XX输出到文件PS8.DAT中。替代关系:f(p)=p*U mod 256 (p是数组中某个字符的ASCH 值,f(p)是计算后新字符的ASCII值),如果原字符是小写字母或计 算后f(p)值小于等于32,则该字符不变,否则将f(p)所对应

12、的字符 进行替代。部分源程序已给出。原始数据文件存放的格式是:每行的宽度 均小于80个字符。请勿改动主函数main。、读数据函数ReadDat。和输出数据函数 WriteDat。的内容。)encryptCharO;WriteDatO;)int ReadDat(void) (FILE *fp;int i=0;unsigned char *p;#include#include#include#includeif(fp=fopen(Meng.in,/,r,*)=NULL) return 1; while(fgets(xx i ,80,fp) !=NULL) p=strchr(xx|iAn);if(p

13、)*p=O;i+;unsigned char xx5O8O;int maxline=0;/文章的总行数/maxline=i;fclose(fp);int ReadDat(void) void WrileDat(void)return 0; )void encryptChar() (void WriteDat(void) (FILE *fp;)int i;fp=fopen(ps8.dat,“w);void main()(for(i=0;imaxline;i+) printf(%sn,xxi);clrscr();if(ReadDat()printf(数据文件ENG.IN不能打开!n00);retu

14、rn;fprintf(fp,%sn,xxi);)fclose(fp);)注:与题1相似。void encryptcharO (int i;void encryptChar() |char *pf;fbr(i=O;i=a,&*pf=z)ll*pf* ll%25632)pf+;continue;)*pf=*pf*ll%256;pf+;int ij,t;for(i=0;imaxline;i+)(for(j=0;jstrlen(xxi);j+)(t=xxij*ll%256;if(t=a & xxij=z) continue;xx|i|j=t;4题函数ReadDatO实现从文件in.dat中读取20行数

15、据存放到字 符串数组xx中(第行字符串长度均小于80)。请编制函数jsSort。, 其函数的功能是:以行为单位对字符串按给定的条件进行排序, 排序后的结果仍按行重新存入字符串数组XX中,最后调用函数 WriteDat。把结果xx输出到文件outdat中。条件:从字符串中间一分为二,左边部分按字符的ASCH值降序 排序,排序后左边部分与右边部分进行交换。如果原字符串长度 为奇数,则最中间的字符不参加处理,字符仍放在原位置上。例如:位置 01 2345678源字符串abcdhgfe123498765则处理后字符串hgfedcba876594321部分源程序已给出。请勿改动主函数main。、读数据函

16、数ReadDatO和输出数据函数 WriteDat。的内容。#include#includein=fopen(Hin .dat,rH);#includewhile(i20&fgets(xxi,80,in)!=NULL) p=strchr(xxi,n);char xx20|8()|;if(p)*p=O;i+;void jsSort()(1)fclose(in);)JwriteDat()void main()FILE *out();readDat(); jsSort();int i;writeDat(); )clrscr();out=fopen(out.dat,nwH); for(i=0;i20;

17、i+)readDat()printf(sn”,xxi);(fprintf(out/%snxx(i);FILE *in;)int i=0;fclose(out);char *p;注:该题采用插入法实行降序排序,其它与题2相似。 void jsSort()void jsSort() (int ij,k,strl;int i,strl,halfj,k;char ch;char ch;for(i=0;i20;i+)for(i=0;i20;i+)(strl=strlen(xxi);strl=strlen(xx|i|);half=strI/2;for(j=0;jstrl/2;j+)for(j=l;jhal

18、f;j+)for(k=j+1 ;kstrl/2;k+)ch=xij;if(xxij=O)&(chxxi k)( ch=xxij;xxik+l=xxik;xxij=xxik;k-;xxik=ch;)xx|i|k+l =ch;)for(j=0;j=O;j,k-)(ch=xxij;ch=xxij;xx|i|j=xx|il|(strl+l)/2+j;xxiU=xxik;xxik=ch;xxi(strl+l)/2+j=ch; )1) )5题函数RcadDat。实现从文件ENGIN中读取噺英文文章,存请勿改动主函数main。、读数据函数ReadDatO和输出数据函数入到字符串数组xx中;请编制函数encr

19、yptChaK),按给定的替代关WriteDat。的内容。系对数组XX中的所有字符进行替代,仍存入数组XX的对应的位#include置上,最后调用函数WriteDatO把结果xx输出到文件PS6.DAT中。#include替代关系:f(p)=p*ll mod 256 (p是数组中某个字符的ASCII#include值,f(p)是计算后新字符的ASCII值),如果计算后f(p)值小于等T 32或f(p)对应的字符是数字至9,则该字符不变,否则将f(p)所对#include应的字符进行替代。unsigned char xx|50|80|;部分源程序已给出。原始数据文件存放的格式是:每行的宽度 均小

20、于80个字符。int maxline=0;/文章的总行数/int ReadDat(void) void WrileDat(void)if(fp=fopen(Meng.in/r)=N ULL) return 1;while(fgets(xxi,80,fp)!=NULL)void encryptChar() (p=strchr(xxi,n);if(p)*p=O;i+;JJ maxline=i;void main()fclose(fp);return 0;clrscr();if(ReadDat()|printf(数据文件ENGIN不能打开!n007”);void WriteDat(void)retu

21、rn;)FILE*fp;encryptChar();int i;WriteDat();)fp=fopen(ps6.dat,wM);for(i=0;imaxline;i+)int ReadDat(void)printf(%sn,xxi);(fprintf(fp,H%sn,xxi);FILE *fp; int i=0;)fclose(fp);unsigned char *p;)注:与题1相似。只是它要求对f(p)进行判断。void encryptcharQ(void encryptChar() (int i;int i,j,strl:char *pf;int t;fbr(i=O;imaxline;

22、i+)fbr (i=0;i=,0&*pf* 11 %256=9)ll*pf* 11 %25632)pf+;continue;for(j=0;jstrl;j+) (*pf=*pf*ll%256;t=xxi|j*ll%256;pf+;if(t=0 & t= 9) continue;xxij=t;) ) )只是为了上机能通过,不追求什么算法速度,答案仅供大家参考.6题函数RcadDatO实现从文件in.dat中读取20行数据存放到字#include符半数组XX中(第行字符串长度均小于80)。请编制函数jsSon。,#include其函数的功能是:以行为单位对字符串按给定的条件进行排序, 排序后的结果

23、仍按行重新存入字符串数组X X中,最后调用函数#includeWriteDatO把结果xx输出到文件outdat中。charxx2080;条件:从字符串中间一分为二,左边部分按字符的ASCH值降序 排序,右边部分按字符的ASCII值升序排序。如果原字符串长度void jsSort()为奇数,则最中间的字符不参加1排序,字符仍放在原位置上。(例如:位置 012345678源字符串a b c d h g f e)123498765则处理后字符串dcbaefghvoid main()432195678|部分源程序已给出。readDat();请勿改动主函数main。、读数据函数ReadDat()和输岀

24、数据函数jsSort();WriteDatO的内容。WriteDatO;readDat()IwriteDatOIiFILE *in;int i=O;iFILE *out();int i;char *p;clrscr();in=fopen(in.dat*HrM);while(i20&fgets(xxi,80,in)!=NULL) p=strchr(xxli,n);if(p)*p=O;i+;)fclose(in);out=fopen(,out.dat,wH); for(i=0;i20;i+) printf(%sn,xxi); fprintf(out,M%snxxi);) fclose(out);注

25、:要注意当要进行右半部分排序时,一定要判断原字符串个数 是否为奇数,若是则要half加1,本题对右半部分采用选择法对其进行升序排序。void jsSort()(int i,strl,halfj,k,p;char ch;for(i=0;i20;i+)strl=strlen(xxi);ha!f=strl/2;void jsSort()int i,j,k,strl;char ch;for(i=0;i20;i+) (strl=strlen(xxi);for(j=0;jhalf-1 ;j+)for(k=j+l;khalf;k+)if(xxiUxxik)ch=xxij;xxij=xxik;xxik=ch;

26、)if(strl%2) half+; /* Must to note the order line! */for(j=half;jstrl;j+)(p=j;for(j=0;jstrl/2;j+) for(k=j+l;kstrl/2;k+) if(xxijxxik)ch=xxij;xxij=xxikl;xxik=ch;for(j=(strl+l )/2;jstrl;j+) for(k=j+ l;kstrl;k+)fbr(k=j;kstr;k+4-)if(xxikxx|i|k) |ch=xxij;xxi|jl=xxik;xxik=ch;)7题函数ReadDat。实现从文件ENGIN中读取一篇英文文

27、章,存 入到字符串数组xx中;请编制函数encryptCharO,按给定的替代关 系对数组XX中的所有字符进行杵代,仍存入数组XX的对应的位 置上,最后调用函数WriteDatO把结果xx输出到文件PS4.DAT中。替代关系:f(p)=p*U mod 256 (p是数组中某个字符的ASCII 值,f(p)是计算后新字符的ASCH值),如果计算后f(p)值小于等于 32或f(p)对应的字符是大写字母,则该字符不变,否则将f(p)所对 应的字符进行替代.部分源程序已给出。原始数据文件存放的格式是:每行的宽度 均小于80个字符。请勿改动主函数main。、读数据函数ReadDat()和输出数据函数 W

28、ritcDat。的内容O#include#include#include#includeunsigned char xx5080;int maxline=0;/文章的总行数/int RcadDat(void)void WriteDat(void)void encryptChar()void main()()clrscr();i+;if(ReadDat()printf(数据文件ENGIN不能打开!n007);maxline=i;return;)fclose(fp);return 0;encryptChar();WriteDatO;)void Write Dat (void) int ReadDa

29、t(void)FILE *fp;(FILE *fp;int i;int i=0;fp=fopen(ps4.dat,w);unsigned char *p;for(i=0;imaxline;i+) printf(H%sn,xxi);if(fp=fopen(eng.in,r)=NULL) return 1;fprintf(fp,%sn”,xxi);while(fgets(xxi,80,fp)!=NULL)p=strchr(xxi,n*); if(p)*p=O;fclose(fp); )注:下题1相似,只是它要求对f(p)进行判断。void encryptchar()jiint i;void enc

30、ryptChar()char *pf;(for(i=0;imaxline;i+)int ij,t;pf=xxi;for(i=0;i=A&*pf* ll%256=Z)ll*pf* 11 %25632)for(j=0;jstrlen(xxi);j+)pf+;continue;|*pf=*pf*ll%256;t=xxil|jl*ll%256;pf+;if(t=A & t=Z) continue;)1xxi|j=t;) )8题在文件中有200个正整数,FL每个数均在1000至9999之间。void main()函数ReadDatO读取这200个数存放到数组aa中。请编制函数jsSort(),其函数的功

31、能是:要求按每个数的后三位的大小进行升readDat();序排列,然后取出满足此条件的前10个数依次存入数组b中,如果jsSortO;后三位的数值相等,则按原先的数值进行降序排列。最后调用函 数WriteDat。把结果bb输出到文件out.dat中。例:处理前 6012 5099 9012 7025 8088writeDat(); )处理后 90126012 7025 8088 5099 部分源程序已给出.readDat() (请勿改动:函数main。、读数据函数ReadDatO和输出数据函数FILE *in;WriteDat。的内容#includeint i;#includein=fopen

32、(in.da Jr);#includefor(i=0; i200; i+) fscanf(in/%d/&aai); fclose(in);int aa200,bb10;void jsSort()writeDat()|FILE *out;int i;fprintf(out,H%dnbbi);fclose(out);)clrscr();out=fopen(Mout.dat,w);for(i=0; i10; i+)printf(Mi=%d,%dni+l ,bbi);注:每个元素对1000求余得到后三位的数,然后用冒泡法进行排else if(aai% 1000=aa|j%I000)序。if(aaiaa

33、il)void jsSort() data=aai; aai=aaj; aa|j=data;)()int i,j,data;for(i=0;i10;i+)fbr(i=O; i 199; i+)bbi=aai;for(j=i+l;jaa|j%1000) data=aai; aai=aa|j; aaj=data; 9题函数ReadDatO实现从文件ENGIN中读取篇英文文章,存)入到字符串数组xx中;请编制函数encryptCharO,按给定的替代关encryptCharO;系对数组XX中的所有字符进行杵代,仍存入数组XX的对应的位WriteDatO;置上,最后调用函数WriteDatO把结果xx

34、输出到文件PS2.DAT中。替代关系:f(p)=p*13 mod 256 (p是数组中某个字符的ASCII值,f(p)是计算后新字符的ASCH值),如果计算后f(p)值小于等于int ReadDat(void)32或其ASCII值是偶数,则该字符不变,否则将f(p)所对应的字符(进行替代。FILE *fp;部分源程序已给出。原始数据文件存放的格式是:每行的宽度int i=0;均小于80个字符。unsigned char *p;请勿改动主函数main。、i数 据函数ReadDatO和输出数据函数WriteDat。的内容。if(fp=fopen(Meng. in/r )=NULL) return

35、1;#includewhi!e(fgets(xxi,80,fp)!=NULL)#includep=strchr(xxiAn);#includeif(p)*p=O;#includei+;1unsigned char xx5O8O;maxline=i;int maxline=0;/文章的总行数/fclose(fp);return 0;int ReadDat(void)void WriteDat(void)void WriteDat(void)void cncryptChar()(FILE *fp; int i;)fp=fopen(ps2.dat,w);void main()for(i=0; ima

36、x line;i+) (printf(H%sn,xxi);clrscr();fprintf(fp,%sn,xxi);if(ReadDat()printf(数据文件ENG.IN不能打开!n007);fclose(fp);return;)注:与题1相似。*pf=*pf*ll%256;void encryptchar()pf+;int i;char *pf;)for(i=0;imaxline;i+) pf=xxi; while(*pf!=O) if(*pf%2=OII*pf* 13%25632) pf+;continue;)void encryptChar()(ini ij,t;for(i=0;im

37、axline;i+)(t=xxij*13%256;if(t=32 II t%2=0) continue;xxij=t;)10题在文件in.dat中有200组数据,每组有3个数,每个数均是三位 数。函数ReadDat()读取这200组数据存放到结构数组aa中,请编 制函数jsSortO,其函数的功能是:要求在200组数据中找出条件为 每组屮的第一个数大于第二个数加第三个数的之和,其中满足 条件的个数作为函数jsSort()的返回值,同时把满足条件的数据 存入结构数组bb中,再对bb中的数据按照每组数据的第一个数 加第三个之和的大小进行升序排列(第一个数加第三个数的和 均不相等),排序后的结果仍重

38、新存入结构数组bb中,最后调用函 数WriteDatO把结果bb输出到文件out.dat中。部分源程序已给出。请勿改动主函数main。、读数据函数ReadDat。和输出数据函数 WriteDat。的内容。#include#include#includetypedef struct int xI,x2,x3;)data;data aa200,bb200;int jsSort()()void main() int count;readDat();count=jsSort(); /返回满足条件的个数/ writeDat(count);read Dat( int count)(FILE *in;int

39、 i;in=fopen(Hin.dat,rH);for(i=0; i200; i+)fscanf(in,%d,%d,%d,&aai.xl,&aai.x2,&aai.x3);fclose(in);writeDat() FILE *oul; int i;clrscr);out=fopen(out.da ,w);for(i=0; i10; i+)printf(%d,%d,%d 第一个数 + 第三个数=%dn,bbi.xl,bbi.x2,bbi.x3.bbi.xl+bbi.x3);fprintf(out,M%d,%d,%dnM,bbi.x 1 ,bbi.x2,bbi.x3); )fclose(out)

40、;for(j=0;jstrlen(xxi);j+)注:最后排序采用冒泡法。int jsSort() (int i,j,k=O;DATA swap;/定义个结构体变量,作为交换时的临时存放地/for(i=0;i(aai.x2+aai.x3)bbk+=aai;/先将符合第一个数大于第二个数 加第三个数的之和的数存入bb数组中/for(i=0;ik-l;i+)for(j=i+l;j(bb|j.xl+bbj.x3)swap=bbi;bb|i=bbjl;bb|j=swap;排序(从小到大)*/return k;)/在BB数组中进行11题已知在文件IN.DAT中存有100个产品销售记录,每个产品 销售记录

41、由产品代码dm(字符型4位),产品名称me(字符型10位), 单价dj(整型),数量s】(整型),金额je(长整型)四部分组成。其中:金 额=单价数量计算得出。函数ReadDat()是读取这100个销售记 录并存入结构数组se口中。请编制函数SortDatO,其功能要求:按 产品代码从大到小进行排列,若产品代码相同,则按金额从大到 小进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat。把结果输出到文件OUT10.D AT中。部分源程序已给出。请勿改动主函数main。、读数据函数ReadDat()和输出数据函数WriteDat()的内容.#include#include

42、#include#include#includeFILE *fp;char str|80|,chll; int i;#define MAX 100 typedef struct ( char dm5; /产品代码/ char mcll;/产品名称/ intdj;/ 单价/ int si; /*数量*/ long je; / 金额/ (PRO;PRO sellMAX;void ReadDat();fp=fopen(HIN.DAT;HrM);for(i=0;i100;i+)fgets(str,80,fp);memcpy(sell| i |.dm,str,4);memcpy(selli.mc,str

43、+4,10);memcpy(ch,str+ 14,4);ch4=0; sell|i.dj=atoi(ch);memcpy(ch,str+18,5);ch5=0; selli.sl=atoi(ch);void WriteDatO;sell i .je=( long)sell i .dj *sell i.sl; ivoid SortDat()()Ifclose(fp);void WriteDat(void)void main()(memset(selI,0,sizeof(sell);FILE *fp;int i;ReadDatO;SortDat();WriteDat(); )fp=fopen(OU

44、T10.DAT;HwM);for(i=0;i100;i+)fprintf(中,s%s%4d%5d%IOLdnM,selIi.dm,selHi.mc,selli.dj,selli.sl,selli.je);void ReadDat()fclose(fp);注:这时也是采用冒泡法进行排序。与前面的冒泡法在写法上有 所不同请注意区分。void SortDat() int i,j; swap=sellj; sellj=sell|j+l; sellj+l=swap; if(strcmp(sellj.dm,sell|j+l .dm)=O&selij.jesellj+l.je) swap=sell|j;se

45、llj=sellj+l;PRO swap;for(i=0;iMAX-l;i+)for(j=0;jMAX-l-i;j+)if(strcmp(sell|j|.dm,sell|j+1 |.dm)0)/用函数strcmp判断两个字符串的大小/sellj+l=swap;)12题函数ReadDat。实现从文件in.dat中读取20行数据存放到 字符串数组xx中(第行字符串长度均小于80)。请编制函数 jsSon(),其函数的功能是:以行为单位对字符串变量的下标为奇 数的字符按其ASCII值从小到大的顺序进行排序,排序后的结果 仍按行重新存入字符串数组xx中,最后调用函数WriteDat()把结 果xx输出

46、到文件out.dat中。例如:位置 01234567源字符串h g f e d c b a则处理后字符串h a f c d e b g部分源程序已给出。请勿改动主函数main。、读数据函数ReadDat()和输出数据函数 WriteDat。的内容。#include#includevoid jsSort() ()void main()(readDat();jsSort();writeDat();)readDat()(#includeFILE *in: int i=0;charxx2080;char *p;in=fopen(in.datrH);FILE *out();while(i20&fgets

47、(xxiL80Jn)!=NULL)int i;p=strchr(xxiAn);if(p)*p=O;out=fbpen(out.dat,wM);i+;clrscr();)for(i=0;i20;i+)fclose(in);printf(%sn”,xxi);)fprintf(out/%sn,xx(i);)writeDat()fclose(out);(注:该题亦是采用冒泡法,但在写法上与11题不同。void jsSort()1void jsSort() fint i,j,k,strl;tint i,j,k,strl;char temp:char ch;for(i=0;i20;i+)for(i=0;i

48、20;i+)(strl=strlen(xxi);strl=strlen(xxi);for(k= 1 ;kstrl;k=k+2)for(j= 1 ;jstrl;j=j+2)for(j=k+2;jstrl;j=j+2)for(k=j+2;kxxiU)if(xxiUxxik)(temp=xxi|k|;ch=xxij;xxik=xxiU;xxiU=xxik;xxi|j=temp;xxik=ch;) ) ) 13题已知在文件IN.DAT中存有100个产品销售记录,每个产品 销售记录由产品代码dm(字符型4位),产品名称me(字符型10位),void WriteDatO;单价dj(整型),数量si(整型)

49、,金额je(长整型)四部分组成。其中:金 额;单价数量计算得出。函数ReadDat。是读取这100个销售记 录并存入结构数组sell中。请编制函数SortDatO,其功能要求:按 产品代码从大到小进行排列,若产品代码相同,则按金额从大到 小进行排歹山最终排列结果仍存入结构数组sell中,最后调用函数 WriteDat。把结果输出到文件OUT8.DAT中。部分源程序已给出。请勿改动主函数main。、读数据函数ReadDat。和输出数据函数 WriteDat。的内容。#include#include#include#includc#include#define MAX 100typedef str

50、uct (char dm5;/产品弋码char mcll;/ 产品名称/int dj;/ 单价/int si;/ 数量/long je; / 金额 /(PRO;PRO sellMAX;void ReadDat();void SortDatO )void main() memset(sell,0,sizeof(sell); ReadDat();SortDatO;WriteDatO;)void ReadDat()(FILE *fp;char str80,chll;int i;fp=fopen(IN.DAT,r”); for(i=0;i100;i+)1 fgets(str,80,fp);memcpy

51、(sell i |.dm.str,4);memcpy(selli.mc,str+4,10); memcpy(ch,str+14,4);ch |4=0;selli.dj=atoi(ch);memcpy(ch,str+18,5);ch51=0;selli.sl=atoi(ch);selli.je=(long)seUi.dj*selli.sl;1FILE *fp;int i;fp=fopen(UT8.DAT,”);for(i=0;il(X);i+)fclose(fp);fprintf(fp,H%s%s%4d%5d%10Ldn;)selli.dm,selli.mc,selli.dj,selli.sl,

52、selli.je);1void WriteDat(void)jfclose(fp);15题已知在文件IN.DAT中存有100个产品销售记录,每个产品 销售记录由产品代码dm(字符型4位),产品名称me(字符型10位), 单价dj(整型),数埴si(整型),金领je(长整型)四部分组成。其屮:金 额=单价数量计算得出。函数RcadDatO是读取这100个销售记 录并存入结构数组sell中。请编制函数SortDatO,其功能要求:按 产品代码从大到小进行排列,若产品代码相同,则按金额从大到小进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat。把结果输出到文件OUT6.DAT中。部分源程序已给出。请勿改动主函数main()、读数据函数ReadDat。和输出数据函数WriteDatO的内容。#include注:该题的冒泡法与11题不同。sellj=swap;void SortDat()(if(strcmp(selli.mc,sellj.mc)=O&selli.jeselIj.je)int ij;PRO swap;swap=sel

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!