已阅读5页,还剩19页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
字符串左右排序和比较2题 函数ReadDat()实现从文件in.dat中读取20行数据存放到字符串数组xx中(第行字符串长度均小于80)。请编制函数jsSort(),其函数的功能是:以行为单位对字符串按给定的条件进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数WriteDat()把结果xx输出到文件out.dat中。条件:从字符串中间一分为二,左边部分按字符的ASCII值升序排序,排序后左边部分与右边部分进行交换。如果原字符串长度为奇数,则最中间的字符不参加处理,字符仍放在原位置上。例如:位置012345678源字符串d c b a h g f e 4 3 2 1 9 8 7 6 5 则处理后字符串 h g f e a b c d 8 7 6 5 9 1 2 3 4部分源程序已给出。请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。 #include#include#includechar xx2080;void jsSort()void main()readDat();jsSort();writeDat();readDat()FILE *in;int i=0;char *p;in=fopen(in.dat,r);while(i20&fgets(xxi,80,in)!=NULL)p=strchr(xxi,n);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);-注:先采用冒泡法对左边部分进行升序排序,然后将排序后的左半与右半按对应位进行调换。void jsSort()int i,strl,half,j,k;char ch;for(i=0;i20;i+) /*行循环*/strl=strlen(xxi); /*每行长度*/ half=strl/2;for(j=0;jhalf-1;j+) /*每行的第j个位置*/for(k=j+1;kxxik)ch=xxij; /*每次将最小数赋给xxij*/ xxij=xxik; xxik=ch;for(j=half-1,k=strl-1;j=0;j-,k-)ch=xxij;xxij=xxik;xxik=ch;void jsSort()int i,j,k,strl;char ch;for(i=0;i20;i+)strl=strlen(xxi);for(j=0;jstrl/2;j+)for(k=j+1;kxxik)ch=xxij;xxij=xxik;xxik=ch;for(j=0;jstrl/2;j+)ch=xxij;xxij=xxi(strl+1)/2+j;xxi(strl+1)/2+j=ch;6题 函数ReadDat()实现从文件in.dat中读取20行数据存放到字符串数组xx中(第行字符串长度均小于80)。请编制函数jsSort(),其函数的功能是:以行为单位对字符串按给定的条件进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数WriteDat()把结果xx输出到文件out.dat中。条件:从字符串中间一分为二,左边部分按字符的ASCII值降序排序,右边部分按字符的ASCII值升序排序。如果原字符串长度为奇数,则最中间的字符不参加排序,字符仍放在原位置上。例如:位置012345678源字符串a b c d h g f e 1 2 3 4 9 8 7 6 5则处理后字符串 d c b a e f g h 4 3 2 1 9 5 6 7 8部分源程序已给出。请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。#include#include#includechar xx2080;void jsSort()void main()readDat();jsSort();writeDat();readDat()FILE *in;int i=0;char *p;in=fopen(in.dat,r);while(i20&fgets(xxi,80,in)!=NULL)p=strchr(xxi,n);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);-注:要注意当要进行右半部分排序时,一定要判断原字符串个数是否为奇数,若是则要half加1,本题对右半部分采用选择法对其进行升序排序。void jsSort()int i,strl,half,j,k,p;char ch;for(i=0;i20;i+)strl=strlen(xxi);half=strl/2;for(j=0;jhalf-1;j+)for(k=j+1;khalf;k+)if(xxijxxik)ch=xxij;xxij=xxik;xxik=ch;if(strl%2) half+; /* Must to note the order line! */for(j=half;jstrl;j+)p=j;for(k=j;kstr;k+)if(xxikxxip)p=k;ch=xxij;xxij=xxip;xxip=ch;void jsSort()int i,j,k,strl;char ch;for(i=0;i20;i+)strl=strlen(xxi);for(j=0;jstrl/2;j+)for(k=j+1;kstrl/2;k+)if(xxijxxik)ch=xxij;xxij=xxik;xxik=ch;for(j=(strl+1)/2;jstrl;j+)for(k=j+1;kxxik)ch=xxij;xxij=xxik;xxik=ch;12题 函数ReadDat()实现从文件in.dat中读取20行数据存放到字符串数组xx中(第行字符串长度均小于80)。请编制函数jsSort(),其函数的功能是:以行为单位对字符串变量的下标为奇数的字符按其ASCII值从小到大的顺序进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数WriteDat()把结果xx输出到文件out.dat中。例如:位置01234567源字符串h g f e d c b a 则处理后字符串 h a f c d e b g部分源程序已给出。请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。#include#include#includechar xx2080;void jsSort()void main()readDat();jsSort();writeDat();readDat()FILE *in;int i=0;char *p;in=fopen(in.dat,r);while(i20&fgets(xxi,80,in)!=NULL)p=strchr(xxi,n);if(p)*p=0;i+;fclose(in);writeDat()FILE *out();int i;out=fopen(out.dat,w);clrscr();for(i=0;i20;i+)printf(%sn,xxi);fprintf(out,%sn,xxi);fclose(out);-注:该题亦是采用冒泡法,但在写法上与11题不同。void jsSort()int i,j,k,strl;char temp;for(i=0;i20;i+)strl=strlen(xxi);for(k=1;kstrl;k=k+2)for(j=k+2;jxxij)temp=xxik;xxik=xxij;xxij=temp;void jsSort()int i,j,k,strl;char ch;for(i=0;i20;i+)strl=strlen(xxi);for(j=1;jstrl;j=j+2)for(k=j+2;kxxik)ch=xxij;xxij=xxik;xxik=ch;26题 下列程序的功能是:求出ss字符串中指定字符c的个数,并返回此值。请编写函数int num(*char ss,char c)实现程序要求,最后调用函数readwriteDat()把结果输出到文件out.dat中。(注:大小写字母有区别)例如,若输入字符串ss=123412132 ,c=1,则输出3。部分源程序已给出。请勿改动主函数main()和输出数据函数writeDat()的内容。 #include #include #define M 81void readwriteDAT();int num(char *ss,char c)main()char aM,ch;clrscr();printf(nPlease enter a string: );gets(a);printf(nPlease enter a char; );ch=getchar();printf(nThe number of the char is:%dn ,num(a,ch);readwriteDAT();viod readwriteDAT()int i;FILE *rf,*wf;char aM,bM,ch;rf=fopen(in.dat ,r );wf=fopen( out.dat ,w );for(i=0;i10;i+)fscanf(rf, %s,a);fscanf(rf, %s ,b);ch=*b;fprintf(wf, %c=%dn: ,ch,num(a,ch);fclose(rf);fclose(wf); -注:太简单了。int num(char *ss,char c)int i=0;while(*ss!=0)if(*ss+=c) i+;return i;29题 函数ReadDat()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中,请编制函数SortCharD(),其函数的功能是:以行为单位对字符按从大到小的顺序进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数writeDat()把结果xx输出到文件OUT2.DAT中。例:原文:dAe,BfC.CCbbAA结果:fedCBA.bbCCAA原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。部分源程序已给出。请勿改动主函数main()、读数据函数ReadDat()和输出数据函数writeDat()的内容。 #include#include#includechar xx5080;int maxline=0;/*文章的总行数*/int ReadDat(void)void WriteDat(void)void SortCharD(void)void main()clrscr();if(ReadDat()printf( 数据文件ENG.IN不能打开!n007 );return;SortCharD();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,n);if(p)*p=0;i+;maxline=i;fclose(fp);return 0;void WriteDat(void)FILE *fp;int i;fp=fopen( OUT2.DAT , w);for(i=0;imaxline;i+)printf( %sn ,xxi);fprintf(fp, %sn ,xxi);fclose(fp); -注:该题采用的是起(冒)泡法进行排序。void sortchard(void)int i,j,k,strl;char ch;for(i=0;imaxline;i+)strl=strlen(xxi);for(j=0;jstrl-1;j+)for(k=j+1;kstrl;k+)if(xxijxxik)ch=xxij;xxij=xxik;xxik=ch;72、下列程序的功能是:把S字符串中的所有字符左移一个位置,串中的第一个字符移到最后.请编写函数CHG(CHAR *S)实现程序要求,最后调用函数READWRITEDAT()把结果输出到OUT.DAT文件中.例如:S字符串中原有内容为:MN.123XYZ,则调用函数后,结果为:N.123XYZM.# includestring.h# includestdio.h# includectype.h# define N 81 void readwritedat();void chg(char *s) int i;char ch=s0;for (i=0;i=strlen(s)-1;i+)si=si+1; si=ch;main()char aN;printf(enter a string :);gets(a);printf(the original string is :);puts(a);chg(a);printf(the string after modified:);puts(a);readwritedat();void readwritedat()int i;char aN;FILE *rf,*wf;rf=fopen(in.dat,r);wf=fopen(out.dat,w);for(i=0;i10;i+)fscanf(rf,%s,a);chg(a);fprintf(wf,%sn,a);fclose(rf);fclose(wf);/* 注:strcpy(s,s+1)的作用是将第二个字符及以后的字符前移一位,注意这时最后一个字符还不是原来的第一个字符,用*(s+i-1)=c;来将原第一个字符存入串尾,最后还要赋一个新的串结束符。*/void chg(char *s)int i=strlen(s);char c=*s;strcpy(s,s+1);*(s+i-1)=c;*(s+i)=0;74、下列程序的功能是:统计在TT字符串中A到Z26个字母各自现的次数,并存入PP数组.请编写函数CNT(CHAR *TT,INT PP)实现程序的要求,最后调用函数READWRITEDAT()把结果输出到文件OUT.DAT中.(仅统计小写字母.)例如:当输入字符串:abcdefgabcdeabc后,输出的结果应该是:3 3 3 2 2 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0#include #include void readwritedat(); void cnt(char *tt, int pp)main()char tt1000;int pp26, k, n;clrscr() ;printf(nplease enter a char string:) ; scanf(%s,tt);cnt(tt,pp);for(k = 0; k26; k+) printf (%d ,ppk);printf(n);readwritedat();void readwritedat()char tt1000;int pp26, k, n, i;FILE *rf, *wf;rf = fopen(in.dat,r);wf = fopen(out.dat,w);for(i = 0; i10;i+)fscanf(rf,%s,tt);cnt(tt,pp);for(k = 0;k26; k+) fprintf(wf,%d,ppk);fprintf(wf,n);fclose(rf);fclose(wf);/* 注:题中必须先对数组pp赋初值。pp*tt-a+的作用是将对应的元素增加1,即当*tt为a时应对pp0加1,而pp*tt-a即相当于pp0,依此类推。*/void cnt(char *tt, int pp)int i;for
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高考地理一轮复习第十六章区际联系与区域协调发展第二节资源跨区域调配课件
- 自建房建筑安全合同(2篇)
- 海尔净水 课件
- 西京学院《影视广告》2022-2023学年第一学期期末试卷
- 初三(4)班月考动员
- 幼儿园小班歌唱活动《表情歌》教案
- 第二节国民党政府处在全民的包围中
- 西华师范大学《中国地理》2021-2022学年第一学期期末试卷
- 高考地理一轮复习第三章地球上的大气及其运动第一节大气的组成和垂直分层及大气受热过程课件
- 西华师范大学《写意花鸟画》2023-2024学年第一学期期末试卷
- 家长会课件:小学二年级家长会课件主题
- 《艺术概论》课件-第六章 艺术类型
- 报联商-职场沟通必修课
- 九年级期中家长会数学教师发言稿
- 员工能力评价表(全套)
- 冀教版四年级英语上册《Goldilocks and the Three Bears》教学课件公开课
- 个体诊所药品清单
- 干部履历表格式
- 《老年人康乐活动》课件
- 滴滴出行运营测试题答案
- 木门及门套安装工程施工方案
评论
0/150
提交评论