1、计算机(一)按产品名称从小到大进行排列,若产品名称相等,则按金额从小到大进行排列,最终排列结果仍存入结构数组sell中void SortDat()int i,j; PRO xy; for(i=0;i99;i+) for(j=i+1;j0|strcmp(selli.mc,sellj.mc)=0&selli.jesellj.je) xy=selli;selli=sellj;sellj=xy;(二)求出千位数上的数加个位数上的数等于百位数上的数加十位数上的数的个数cnt,再把所有满足此条件的四位数依次存入数组b中,然后对数组b的四位数按从小到大的顺序进行排序jsValue()int i,qw,bw,
2、sw,gw,j; for(i=0;i300;i+) qw=ai/1000; bw=ai%1000/100; sw=ai%100/10; gw=ai%10; if(qw+gw=bw+sw) bcnt+=ai; for(i=0;icnt-1;i+) for(j=i+1;jbj) qw=bi; bi=bj; bj=qw;(三)千位数字与百位数字之和等于十位数字与个位数字之和,且千位数字与百位数字之和等于个位数字与千位数字之差的10倍。计算并输出这些四位自然数的个数cnt以及这些数的和sum。void countValue()int i,thou,hun,ten,data; for(i=1000;i5
3、000;i+) thou=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; (四)求出千位数上的数加百位数等于十位数上的数加个位数上的数的个数cnt,再求出所有满足此条件的四位数平均值pjz1,以及不满足此条件的四位数平均值pjz2,jsValue()int i,thou,hun,ten,data,n=0; for(i=0;i=0且ab-cd=10且两个数均是奇数,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的
4、顺序存入数组b中,并要计算满足上述条件的四位数的个数cntvoid jsVal()int i,j,thou,hun,ten,data,ab,cd; for(i=0;i=0&(ab-cd)=10&cd=10) bcnt+=ai; for(i=0;icnt-1;i+) for(j=i+1;jcnt;j+) if(bibj) thou=bi; bi=bj;bj=thou;(六)依次从数组a中取出一个四位数,如果该四位数连续小于该四位数以后的五个数且该数是偶数(该四位数以后不满五个数,则不统计),则统计出满足此条件的个数cnt并把这些四位数按从小到大的顺序存入数组b中void jsVal()int i
5、,j,flag; for(i=0;iMAX-5;i+) for(j=i+1;j=i+5;j+) if(aiaj&ai%2=0) flag=1; else flag=0; break; if(flag=1) bcnt+=ai; for(i=0;icnt-1;i+) for(j=i+1;jbj) flag=bi;bi=bj;bj=flag;(七)依次从数组a中取出一个四位数,如果该四位数连续大于该四位数以前的五个数且该数是奇数,且该数必须能被7整除(该四位数以前不满五个数,则不统计),则统计出满足此条件的个数cnt并把这些四位数按从大到小的顺序存入数组b中void jsVal() int i,j,
6、flag; for(i=5;iMAX;i+) for(j=i-5;jaj&ai%2&ai%7=0) flag=1; else flag=0;break; if(flag=1) bcnt+=ai; for(i=0;icnt-1;i+) for(j=i+1;jcnt;j+) if(bibj) flag=bi; bi=bj; bj=flag;(八)要求按每个数的后三位的大小进行降序排列,然后取出满足此条件的前10个数依次存入数组bb中,如果后三位的数值相等,则按原先的数值进行升序排列void jsSort() int i,j,data; for(i=0;i199;i+) for(j=i+1;j200
7、;j+) if(aai%1000aaj) data=aai;aai=aaj;aaj=data; for(i=0;i10;i+) bbi=aai;(九)将大于整数m且紧靠m的k个素数存入数组xx传回。若输入17, 5 则应输出:19,23,29,31,37int isP(int m) int i; for(i=2;i0;m+) if(isP(m) xxs+=m; k-;(十)1、求出这文件中共有多少个正整数totNum;2、求这些数右移1位后,产生的新数是偶数的数的个数totCnt,以及满足此条件的这些数(右移前的值)的算术平均值totPjzvoid CalValue(void)int i,da
8、ta;for(i=0;i0) totNum+; data=xxi1; if(data%2=0)totCnt+;totPjz+=xxi; if(totCnt=0) totPjz=0; else totPjz/=totCnt;(十一)1、求出这N个实数的平均值aver;分别求出这N个实数的整数部分之和sumint以及小数部分之和sumdec void CalValue(void) int i; for (i=0;iN;i+) sumint+=(long)xxi; sumdec+=xxi-(long)xxi; aver+=xxi; aver/=N;(十二)计算出xx中奇数的个数odd,奇数的平均值a
9、ve1,偶数的平均值ave2以及所有奇数的方差totfc的值/*编制函数ReadDat()的部分*/for(i=0;iMAX;i+) fscanf(fp,%d,&xxi); if(i+1)%10=0) fscanf(fp,n); void Compute(void) int i,yyMAX; for(i=0;iMAX;i+) yyi=0; for(i=0;iMAX;i+) if(xxi%2) yyodd+=xxi; ave1+=xxi; else even+; ave2+=xxi; if(odd=0) ave1=0; else ave1/=odd; if(even=0) ave2=0; els
10、e ave2/=even; for(i=0;iodd;i+) totfc+=(yyi-ave1)*(yyi-ave1)/odd;(十三)分别计算出xx中奇数的个数odd,偶数的个数even,平均值aver以及方差totfc的值/*编制函数ReadDat()*/ for(i=0;iMAX;i+) fscanf(fp,%d,&xxi); if(i+1)%10=0) fscanf(fp,n); void Compute(void) int i; for(i=0;iMAX;i+) if(xxi%2) odd+; else even+; aver+=xxi; aver/=MAX; for(i=0;iMA
11、X;i+) totfc+=(xxi-aver)*(xxi-aver); totfc/=MAX;(十四)1、求出这文件中共有多少个正整数totNum;2、求这些数中的各位数字之和是奇数的数的个数totCnt,以及满足此条件的这些数的算术平均值totPjzvoid 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) totCnt+; totPjz+=xxi; if(totCnt=0) totPj
12、z=0; else totPjz/=totCnt;(十五)计算出xx中偶数的个数even,奇数的平均值ave1,偶数的平均值ave2以及方差totfc的值for(i=0;iMAX;i+) fscanf(fp,%d,&xxi); if(i+1)%10=0) fscanf(fp,n); void Compute(void) int i,yyMAX; for(i=0;iMAX;i+) yyi=0; for(i=0;iMAX;i+) if(xxi%2=0) yyeven+=xxi; ave2+=xxi; else odd+; ave1+=xxi; if(odd=0) ave1=0; else ave1
13、/=odd; if(even=0) ave2=0; else ave2/=even; for(i=0;ieven;i+)totfc+=(yyi-ave2)*(yyi-ave2)/even;(十六)f(p)=p*11 mod 256(p是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果计算后f(p)值小于等于32或f(p)对应的字符是大写字母,则该字符不变,否则将f(p)所对应的字符进行替代。void encryptChar() int i,j; for(i=0;imaxline;i+) for(j=0;jstrlen(xxi);j+) if(xxij*11%256=
14、A&xxij*11%256=Z) continue;else xxij=xxij*11%256;(十七)以行为单位把字符串中的所有小写字母改写成该字母的上一个字母,如果是字母a,则改写成字母z。大写字母仍为大写字母,小写字母仍为小写字母,其它字符不变原文: Adb.Bcdza abck.LLhj 结果:Aca.Bbcyz zabj.LLgivoid ConvertCharD(void) int i,j; for(i=0;imaxline;i+) for(j=0;j=b&xxij=z) xxij-=1; (十八)把 s 字符串中的所有字母改写成该字母的下一个字母,字母z改写成字母a。要求大写字母
15、仍为大写字母,小写字母仍为小写字母,其它字符不做改变。void chg(char *s)int I;for(I=0;I=a&si=A&si=Y) si+=1; (19)以行为单位对字符按从大到小的顺序进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数writeDat()把结果xx输出到文件OUT2.DAT中。 例:原文:dAe,BfC. CCbbAA 结果:fedCBA. bbCCAA 原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。 部分源程序存在文件prog1.c中。 请勿改动主函数main()、读数据函数ReadDat()和输出数据函数writeD
16、at()的内容。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; (20)内容均为字符0和1,1表示此人被选中,0表示此人未被选中,全选或不选均为无效的选票。void CountRs(void) int i,j,count; for(i=0;i100;i+) count=0; for(j=0;j10;j+) if(x
17、xij=1) count+; if(count=0|count=10) continue; for(j=0;j10;j+) if(xxij=1) yyj+; 21.从字符串中间一分为二,左边部分按字符的ASCII值降序排序,排序后左边部分与右边部分进行交换。如果原字符串长度为奇数,则最中间的字符不参加处理,字符仍放在原位置上。例如:位置012345678源字符串a b c d h g f e 1 2 3 4 9 8 7 6 5 则处理后字符串 h g f e d c b a8 7 6 5 9 4 3 2 1 9void jsSort() int i,j,k,strl,half; char te
18、mp; for(i=0;i20;i+) strl=strlen(xxi); half=strl/2; for(j=0;jhalf-1;j+) for(k=j+1;khalf;k+) if(xxij=0;j-,k-) temp=xxij; xxij=xxik; xxik=temp; 22. 以行为单位对字符串变量的下标为奇数的字符按其ASCII值从小到大的顺序进行排序,排序后的结果仍按行重新存入字符串数组xx中void jsSort()int i,j,k,strl; char ch; for(i=0;i20;i+) strl=strlen(xxi); for(j=1;jstrl-2;j=j+2)
19、 for(k=j+2;kxxik) ch=xxij;xxij=xxik;xxik=ch; 23从字符串中间一分为二,左边部分按字符的ASCII值降序排序,右边部分按字符的ASCII值升序排序。如果原字符串长度为奇数,则最中间的字符不参加排序,字符仍放在原位置上。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-1;j+) for(k=j+1;khalf;k+) if(xxijxxik) ch=xxij;xxij=xxik;xxik=ch;
20、 if(strl%2) half+; for(j=half;jstrl-1;j+) for(k=j+1;kxxik) ch=xxij;xxij=xxik;xxik=ch; 24. 从字符串中间一分为二,左边部分按字符的ASCII值升序排序,排序后左边部分与右边部分进行交换。如果原字符串长度为奇数,则最中间的字符不参加处理,字符仍放在原位置上。void jsSort() int i,j,k,strl,half; char temp; for(i=0;i20;i+) strl=strlen(xxi); half=strl/2; for(j=0;jhalf-1;j+) for(k=j+1;kxxik
21、) temp=xxij; xxij=xxik; xxik=temp; for(j=half-1,k=strl-1;j=0;j-,k-) temp=xxij; xxij=xxik; xxik=temp; 25以行为单位对行中以空格或标点符号为分隔的所有单词进行倒排。最后把已处理的字符串(应不含标点符号)仍按行重新存入字符串数组xx中, 例如:原文:You He Me I am a student.结果:Me He You student a am Ivoid StrOL(void) int i,j,k,s,m,strl; char str80; for(i=0;i=0;j-) if(isalph
22、a(xxij) k+; else for(m=1;m=k;m+) strs+=xxij+m; k=0; if(!isalpha(xxij) strs+= ; for(m=1;m=k;m+) strs+=xxij+m;strs=0; strcpy(xxi,str); 26以行为单位把字符串中的所有字符的ASCII值左移4位,低位补0,如果左移后,其字符的ASCII值小于等于32或大于100,则原字符保持不变,否则就把左移后的字符ASCII值再加上原字符ASCII值,得到新的字符仍存入原字符串对应的位置上。最后把已处理的字符串仍按行重新存入字符串数组xx中,void StrCharJL(void)
23、 int i,j; char c; for(i=0;imaxline;i+) for(j=0;jstrlen(xxi);j+) c=xxij4; if(!(c100) xxij+=c; 27:以行为单位把字符串中的第一个字符的ASCII值加第二个字符的ASCII值,得到第一个新字符,第二个字符的ASCII值加第三个字符的ASCII值,得到第二个新字符,依此类推一直处理到最后第二个字符,最后一个字符的ASCII值加原第一个字符的ASCII值,得到最后一个新的字符,得到的新字符分别存放在原字符串对应的位置上。最后把已处理的字符串逆转后按行重新存入字符串数组XX中void ChA(void) int i,j; char ch; for(i=0;imaxline;i+) ch=xxi0; for(j=0;jstrlen(xxi)-1;j+) xxij+=xxij+1; xxistrlen(xxi)-1+=ch; strrev(xxi); 28把 s 字符串中的所有字符左移一个位置,串中的第一个字符移到最后 例如:s字符串中原有内容为:Mn.123xyZ,则调用该函数后,结果为:n.123xyZMvoid chg(char *s)
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1