版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
三级信息管理技术上机试题
汇编2011年版1:下列程序的功能是:将大于整数m且紧靠m的k个素数存入数组xx。请编写函数num(intm,intk,intxx[])实现函数的要求,最后调用函数readwriteDAT。把结果输出到文件out.dat中。例如:若输入17,5,则应输出:19,23,29,31,37o注意:部分源程序已给出。请勿改动主函数main()和函数readwriteDAT。的内容。 类型:素数。voidnum(intm,intk,intxx口)/*标准答案*/{intdata=m+l;inthalf,n=O,I;while(l){half=data/2;fbr(I=2;I<=half;H-+)ifi(data%I=O)break;ifi(I>half){xx[n]=data;n-H-;}if(n>=k)break;data-H-;}}或者:voidnum(intm,intk,intxx[]){intij,s=O;fbr(i=m+1;k>0;i++){fbr(j=2j<iJ+-i-)if(i%j==O)break;/*注:素数为只能被自己和1整除的数.如果i%j等于0,说明i不是素数,跳出本层循环*/iflCE){xx[s-H-]=i;k—;}}}或者:voidnum(intm,intk,intxx[]){inti=0;fbr(m=m+l;k>0;m++)iRisP(m)){xx[i-H-]=m;k・・;}}原程序如下:#include<conio.h>#include<stdio.h>voidreadwriteDAT();intisP(intm){inti;for(i=2;i<m;i++)ifi(m%i=0)return0;return1;}voidnum(intm,intk,intxx[])])main(){intm,n,xx[1000];clrscr();printff\nPleaseentertwointegers:**);scanftH%d,%d",&m,&n);num(m,n,xx);fbr(m=0;m<n;m++)printfC%d”,xx[m]);printf(”\n”);readwriteDAT();system(npauseH);)voidreadwriteDAT(){intm,n,xx[1000],i;FILE*rf,*wf;rf=fbpen("in.datn,HrH);wf=fbpen(nout.datH,nwM);fbr(i=0;i<10;i++){fscanfi[rf,M%d%d”,&m,&n);num(m,n,xx);fbr(m=0;m<n;m++)fprintfi(wf,H%d*xx[m]);fprintfi[wf;"\n");)fclose(rf);fclose(wf);}2:已知数据文件IN.DAT中存有200个四位数,并己调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:如果四位数各位上的数字均是0或2或4或6或8,则统计出满足此条件的个数ent,并把这些四位数按从大到小的顺序存入数组b中。最后main()函数调用写函数writeDat()把结果ent以及数组b中符合条件的四位数输出到OUT.DAT文件中。注意:部分源程序存在文件PROG1.C文件中。程序中已定义数组:a[200],b[200],已定义变量:ent请勿改动数据文件IN.DAT中的任何数据、主函数main。、读函数readDat。和写函数writeDat()的内容voidjsVal()/*标准答案*/{intbb[4];intI,j,k,flag;for(I=0;I<200;I++){bb[0]=a[I]/1000;bb[l]=a[I]%1000/100;bb[2]=a[I]%100/10;bb[3]=a[I]%10;for(j=0;j<4y++){if(bb[j]%2=0)flag=l;else{flag=O;break;}}if(flag=l){b[cnt]=a[l];cnt-H-;}}fbr(I=O;I<cnt-l;I-H-)fbr(j=I+lj<cnty++)if(b[I]<bU]){k=b[I];b[I]=bU];b[j]=k;})原程序如下:#include<stdio.h>#defineMAX200inta[MAX],b[MAX],ent=0;voidjsVal()voidreadDat(){inti;FILE*fp;fp=fbpen(”in.dat",“r”);for(i=0;i<MAX;i++)fscanfi(fp,H%d\&a[i]);fclose(fp);}voidmain(){inti;rcadDat();jsVal();printf("满足条件的数=%(1":ent);fbr(i=0;i<ent;i-H-)printf(n%d”,b[i]);printf(,,\nH);writeDat();systcm(^^pause^^);)writeDat(){FILE*fp;inti;fp=fbpen(,,out.datn,nwn);fprintf(fp,"%d\n",ent);for(i=0;i<ent;i++)fprintf(fp,H%d\nH,b[i]);fclose(fp);3:函数READDAT。实现从文件IN.DAT中读取一篇英文文章存入到字符串数组XX中;请编制函数STROR。,其函数功能是:以行为单位把字符串中的所有小写字母O左边的字符串内容移到该串的右边存放,然后并把小写字母O删除,余下的字符串内容移到已处理字符串的左边存放.最后把已处理的字符串仍按行重新存入字符串数组XX中,最后调用函数WRITEDAT0把结果XX输出到文件OUT.DAT中.例如:原文:Youcancreateanindexonanyfield.youhavethecorrectrecord.结果:nanyfield.Youcancreateanindexrd.yuhavethecrrectrec原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格. 类型:字符串(单词)的倒置和删除。voidStrOR(void)/*标准答案*/{intI,j,k,index,strl;charch;fbr(I=O;I<maxline;I-H-){strl=strlen(xx[I]);indcx=strl;fbr(j=O;j<strl;j++)if(xx[l][j]=(o,){for(k=j;k<strl-l;k-b+)xx[I][k]=xx[I][k+l];xx[I][strLl]=:index。}fbr(j=strl-l;j>=index;j-){ch=xx[I][strl-l];fbr(k=strl-l;k>O;k-)xx[I][k]=xx[I][k-l];xx[I][0]=ch;}}}或者:voidStrOR(void){inti;chara[80],*p;fbr(i=O;i<maxline;i-H-){p=strchr(xx[i]/o,);while(p){memset(a,0,80);memcpy(a,xx[i],p-xx[i]);strcpy(xx[i],p+l);strcat(xx[i],a);p=strchr(xx[i],'o');}})或者:voidStrOR(void)/*我的非指针解法*/{inti,righto,j,k;chartcm[80];fbr(i=O;i<maxline;i++){k=0;righto=0;memset(tern,0,80);fbr(j=strlen(xx[i])-lj>=O;j—){if(xx[i][j]—o'){righto=j;break;}}fbr(j=righto4-lj<strlen(xx[i]);j-H-)tem[k++]=xx[i][j];fdr(j=0;j<rightoj+-l-){iftxx[i]U]!='o')tem[k++]=xx[i][j];)strcpy(xx[i],tem);})或者:注:该题要求的字符串中所有小写字母。左边的字符串内容移到该串的右边存放,即将串中“最后''一个字母O左右两侧的内容互换。题中第一个while。特环的作用是让pl指向最后一个字母‘o'。第一个ctrcat()函数的作用是将pl以后的字符都放到新串t中,第二个strcat()函数的作用是将pl以前的字符连接到新串t的后面(注意:在些之前要让pl所指的单元成为pl前面字符串的结束位置*pi=,(r)。这时完成左右互换。最后一个while。循环的作用是删除新串中的所有小写字母采用的删除方法是不是'。’的字母一律留下,否则不留(即相当于删除。)voidStrOR(void)(inti;char*pl,*p2,t[80];fbr(i=0;i<maxline;i4-+){t[0]=,\0,;p2=xx[i];while(*p2){if(*p2==,o,)pl=p2;p2-H-;)strcat(t,pl+l);*pl=*\O*;strcat(t,xx[i]);pl=xx[i];p2=t;while(*p2){if(*p2!=,o,)*pl++=*p2;P2f}*pl=*\0';}}或者:注:该题的主要算法是先让两字符指针都指向串尾,然后使一指针(pl)往前移动,当出现不是字母时则表示在pl+1与p2之间是一个单词,并将该单词存入一变量⑴),最后将tl连接到新串中⑴;接着再往前找第二个单词,依次类推直到字符串头。由此可知新串就是原串中各单词的倒排。voidStrOL(void){inti,k;char*pl,*p2;chart[80],tl[80];for(i=O;i<maxline;i++){p2=pl=strchr(xx[i]A0,)A0';t[O]=tl[O]^O,;k=l;while(k)(while(isalpha(*p1)=0&&pl!=xx[i]){pl-;p2=pl;}while(isalpha(*pl)&&p1>=xx[i])pl—;memcpy(tl,pH-l,p2-p1);tl[p2-pl]=0;strcat(t,tl);strcat(t,nH);if(pl<xx[i])k=0;}strcpy(xx[i],t);}}原程序如下:#include"stdio.hn#include"string.h"#include"conio.h"charxx[50][80];intmaxline=0;intReadDat(void);voidWriteDat(void);voidStrOR(void){}voidmain(){clrscr();ififReadDatO){printfif'Can'topenthefile!\n");return;}StrOR();WriteDatf);system(Mpausen);)intReadDat(void){FILE*fp;inti=0;char*p;if((fp=fopen(,,in.dat,,;,r,,))=NULL)return1;while(fgets(xx[i],80,fp)!=NULL){p=strchr(xx[i],'\n);if(p)*p=o;i++;}maxline=i;fclose(fp);return0;)voidWriteDat(void){FILE*fp;inti;fp=fopen("out.dat","w");for(i=O;i<maxline;i++){printf("%s\n",xx[i]);fprintf(fp,"%s\n",xx[i]);)fclose(fp);4:函数ReadDat()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中;请编制函数StrOL(),其函数的功能是:以行为单位对行中以空格或标点符号为分隔的所有单词进行倒排,同时去除标点符号,之后把已处理的字符串(应不含标点符号)仍按行重新存入字符串数组xx中。最后main。函数调用函数WriteDat。把结果xx输出到文件OUT6.DAT中。例如:原文:YouHeMeIamastudent.结果:MeHeYoustudentaamI原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。 类型:字符串(单词)的倒置和删除。voidStrOL(void)/*标准答案*/{intI,j,k,strl,l;charc;fbr(I=0;I<maxline;l4-+)fbr(j=O;j<strlen(xx[I]);j-H-){c=xx[I][j];if((c>=,A,&&c<=,Z')||(c>=,a,&&c<='z,)||c=,');elsexx[I][j]-';!fbr(l=O;l<maxline;l-H-){charch[80]={0};charpp[80]={0};strl=strlen(xx[l]);I=strl-1;k=l;while(l){while(((xx[l][I]>=,a,&&xx[l][I]<=,z,)||(xx[l][I]>=,A,&&xx[l][I]<=,z,))&&I>=0){for(j=k;j>=0;j-)pp[j+l]=pp|j];pp[0]=xx[l][I];k-H-;1-;}strcat(ch,pp);strcpy(pp,MMMM);k=l;ifi[I==-l)break;while((xx[l][I]<,A,||xx[l][I]><z,)&&I>=0){for(j=k;j>=0;j-)pp[j+l]=pp[j];pp[0]=xx[l][I];k++;I-;)strcat(ch,pp);strcpy(pp,,H,,H,);k=0;if(I=-l)break;}strcpy(xx[l],ch);})或者:voidStrOL(void){intcharyy[80];fbr(i=O;i<maxline;i-H-){ll=strlen(xx[i]);k=n=0;fbr(j=ll-l;j>=O;j-){if(isalpha(xx[i][j]))k++;else{fbr(m=1;m<=k;m++)yy[n++]=xx[i][j+m];k=0;}if(xx[i]|j]='*)yy[n"]='}fdr(m=l;m<=k;m-H-)yy[n++]=xx[i][j+m];yy[n]=0;strcpy(xx[i],yy);)}原程序如下:#includeHstdio.hM#includeHstring.hM#includcnconio.hM#includeMctype.h"charxx[50][80];intmaxline=0;intRcadDat(void);voidWriteDat(void);voidStrOR(void){}voidmain(){clrscr();ifi(ReadDat()){printf(nCan'topenthefilc!\nH);return;}StrOR();WriteDat();systcm(npauseH);}intReadDat(void){FILE*fp;inti=0;char*p;ifi((fp=fbpen(nin.dat,,,Y,))=NULL)return1;while(fgets(xx[i],80,fp)!=NULL){p=strchr(xx[i],*\n,);if(P)*P=0;i++;)maxline=i;fclose(fp);return0;)voidWriteDat(void){FILE*fp;inti;fp=fopen("out.dat","w");fbr(i=O;i<maxline;i-H-){printf("%s\n",xx[i]);fprintf(fp,"%s\n",xx[i]);}fclose(fp);5:在文件in.dat中有200个正整数,且每个数均在1000至9999之间。函数ReadDat()读取这200个数存放到数组aa中。请编制函数jsSort(),其函数的功能是:耍求按每个数的后三位的大小进行升序排列,然后取出满足此条件的前10个数依次存入数组b中,如果后三位的数值相等,则按原先的数值进行降序排列。最后调用函数WriteDat。把结果bb输出到文件out.dat中。例:处理前60125099901270258088处理后90126012702580885099注意:部分源程序已给出。请勿改动主函数main。、读数据函数ReadDat()和输出数据函数WriteDat。的内容。voidmain(){rcadDat();jsSort();writeDat();system("pausen);)readDat(){FILE*in;inti;in=fbpen(,,in.datH,Y,);fbr(i=O;i<200;i-H-)fscanf(in,H%d,n,&aa[i]);fclose(in);}writeDat(){FILE*out;inti;clrscr();out=fbpen("out.dat",W);fbr(i=O;i<10;i++){printf(Mi=%d,%d\n",i+l,bb[i]);用rintf(out,"%d\n”,bb[iD;}fclose(out);voidjsSort()/*标准答案*/{intI,j,data;fbr(I=0;I<199;I-H-)fbr(j=I+l;jv200;j++){if(aa[I]%1000>aa[j]%1000){data=aa[I];aa[I]=aa[j];aa[j]=data;}elseif(aa[I]%1000==aa[j]%1000)if(aa[I]<aa[j]){data=aa[I];aa[I]=aa[j];aa[j]=data;}}fbr(I=0;I<10;I-H-)bb[I]=aa[I];}原程序如下:#include<stdio.h>#include<string.h>#include<conio.h>intaa[200],bb[10];voidjsSort()6:在文件in.dat中有200个正整数,且每个数均在1000至9999之间。函数ReadDat()读取这200个数存放到数组aa中。请编制函数jsSort(),其函数的功能是:要求按每个数的后三位的大小进行降序排列,然后取出满足此条件的前10个数依次存入数组b中,如果后三位的数值相等,则按原先的数值进行升序排列。最后调用函数WriteDat()把结果bb输出到文件out.dat中。例:处理前90125099601270258088处理后50998088702560129012注意:部分源程序已给出。请勿改动主函数main。、读数据函数ReadDat()和输出数据函数WriteDat()的内容。voidjsSort()/*标准答案*/{intI,j,data;fbr(I=0;K199;I-H-)fbr(j=I+l;j<200j-H-){if(aa[I]%1000<aa[j]%1000){data=aa[I];aa[I]=aa[j];aa(j]=data;}elseif(aa[l]%1000=aa[j]%1000)if(aa[I]>aa[j]){data=aa[I];aa[I]=aa[j];aa[j]=data;}}fbr(I=0;K10;I++)bb[I]=aa[I];}原程序如下:#include<stdio.h>#include<string.h>#include<conio.h>intaa[200],bb[10];voidjsSort()(}voidmain()£IreadDat();jsSort();writeDat();system("pauseH);}readDat()(FILE*in;inti;in=fbpen(Hin.datM,V);for(i=0;i<200;i+4-)fscanf(in,"%d,n,&aa[i]);fclose(in);}writeDat()(FILE*out;inti;clrscr();out=fbpen(”out.dat"Jw”);fbr(i=O;i<10;i++){printfCMi=%d,%d\n",i+l,bb[i]);fprintfi(out,,,%d\n,,,bb[i]);)fclose(out);7:已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位)产品名称me(字符型10位),单价dj(整型入数量si(整型),金额je(长整型)四部分组成。其中:金额=单价*数量计算得出。函数ReadDat()是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按产品代码从大到小进行排列,若产品代码相同,则按金额从大到小进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT10.DAT中。注意:部分源程序存放在PROG1.C中。请勿改动主函数main()、读数据函数ReadDat。和输出数据函数WriteDat。的内容。voidSortDat。/*标准答案*/{intIj;PROxy;fbr(I=0;I<99;I++)fbr(j=I+lj<100;j++)if(strcmp(sell[I].dm,sell[j].dm)<0){xy=sell[I];sell[I]=sell[j];sell[j]=xy;}elseif(strcmp(sell[I].dm,sell[j].dm)=O)if(sell[I].je<sell[j].je){xy=sell[l];sell[I]=sell[j];sell[j]=xy;}}原程序如下:#include<stdio.h>#include<mem.h>#include<string.h>#include<conio.h>#include<stdlib.h>#defineMAX100typedefstruct{chardm[5];/*产品代码*/char 产品名称*/intdj;/*单价*/intsi;/*数量*/longje;/*金额*/}PRO;PROsell[MAX];voidReadDat();voidWriteDat();voidSortDat(){}voidmain(){memset(sell,0,sizeofl(sell));RcadDat();SortDat();WriteDat();}voidReadDat(){FILE*fp;charstr[80],ch[l1];inti;H=fbpen("IN.DAT”Jr”);fbr(i=0;i<100;i++){fgets(str,80,fp);memcpy(sell[i].dm,str,4);memcpy(sell[i].mc,str+4,10);memcpy(ch,str+14,4);ch[4]=0;sell[i].dj=atoi(ch);memcpy(ch,str+18,5);ch[5]=0;sell[i].sl=atoi(ch);sell[i].je=(long)sell[i].dj*sell[i].sl;}fclose(fp);}voidWriteDat(void){FILE*fp;inti;fp=fopen(MOUT10.DATM,"wH);fbr(i=O;i<l00;i++){fprintf(fp,n%s%s%4d%5d%101d\n0,sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je);!fclose(fp);}8:函数ReadDat()实现从文件ENGIN中读取一篇英文文章,存入到字符串数组XX中;请编制函数encryptChar。,按给定的替代关系对数组XX中的所有字符进行替代,仍存入数组XX的对应的位置上,最后调用函数WriteDatO把结果XX输出到文件PS1.DAT中。替代关系:f(p)=p*llmod256(p是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果计算后f(p)值小于等于32或大于130,则该字符不变,否则将Rp)所对应的字符进行替代。注意:部分源程序已给出。原始数据文件存放的格式是:每行的宽度均小于80个字符。请勿改动主函数main。、读数据函数ReadDat。和输出数据函数WriteDat。的内容。voidencryptChar。/*标准答案*/{intI;char*pf;fbr(I=O;I<maxline;I++){pf=xx[I];while(*pf!=0){if(*pf*11%256>130||*pf*11%256<=32);else*pf=*pf*l1%256;p2;}))或者:voidencryptChar(){inti,j;char*p;fbr(i=0;i<maxline;i4-+)fbr(j=O;j<strlen(xx[i]);j-H-){p=(xx[i]U]*H)%256;if<p<=32||p>130)elsexx[i][j]=p;}}原程序如下:#includc<stdio.h>#include<string.h>#include<conio.h>#include<ctype.h>unsignedcharxx[50][80];intmaxline=O;/*文章的总行数*/intRcadDat(void);voidWriteDat(void);voidencryptChar()(}voidmain()(clrscr();ifIReadDat()){prints”数据文件ENGIN不能打开!\n\007”);return;}encryptChar();WriteDat();system("pauseM);}intReadDat(void){FILE*fp;inti=0;unsignedchar*p;if((fp=fbpen(neng.in,\,,rM))=NULL)return1;while(fgets(xx[i],80,fp)!=NULL){p=strchr(xx[i]/\n,);if(p)*p=O;i++;}maxline=i;fclose(fp);return0;)voidWriteDat(void)iFILE*fp;inti;fp=fopen(,,psl.dat,,,"wH);fbr(i=O;i<maxline;i++){printfr%s\n”,xx[i]);fprintf(fp,H%s\nM,xx[i]);|fclose(fp);9:函数ReadDat()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中;请编制函数SortCharD(),其函数的功能是:以行为单位对字符按从大到小的顺序进行排序,排序后的结果仍按行重新存入字符串数组xx中。最后main。函数调用函数WriteDat。把结果xx输出到文件OUT2.DAT中。例:原文:dAe,BfC.CCbbAA结果:fedCBA.,bbCCAA原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。注意:部分源程序存放在PROG1.C中。请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。 类型:字符串(单词)的倒置和删除。voidSortCharD(void)/*标准答案*/{intI,j,k,strl;charch;fbr(I=O;I<maxline;I++){strl=strlen(xx[I]);fbr(j=O;j<strl-1fbr(k=j+1;k<strl;k++)if<XX[I][j]<XX[I][k]){ch=xx[I][j];xx[I][j]=xx[I][k];xx[I][k]=ch;}}}原程序如下:#include<stdio.h>#include<string.h>#include<conio.h>charxx[50][80];intmaxline=0;/*文章的总行数*/intRcadDat(void);voidWriteDat(void);voidSortCharD(void){intI,j,k,strl;charch;fbr(I=O;I<maxline;I-H-){strl=strlen(xx[I]);fbr(j=OJ<strl-lj++)fbr(k=j+l;k<strl;k++)if(xx[I]U]<xx[I][k]){ch=xx[I][j];xx[I][j]=xx[I][k];xx[I][k]=ch;}}}voidmain()(clrscr();ifl[ReadDat()){printf("数据文件IN.DAT不能打开!\n\007”);return;}SortCharD();WriteDat();systcm("pauseM);}intReadDat(void)(FILE*fp;inti=0;char*p;if((fp=fbpen(MIN.DATM,V))=NULL)return1;while(fgets(xx[i],80,fp)!=NULL){p=strchr(xx[i],*\n');if(p)*p=0;if}maxline=i;fclose(fp);return0;voidWriteDat(void)(FILE*fp;inti;clrscr();fp=fopen("OUT2.DAT“,“w”);fbr(i=0;i<maxline;i++){printf(M%s\nM,xx[i]);fprintf(fp,"%s\nH,xx[i]);)fclose(fp);10:请编制函数ConvertCharA(),其函数的功能是:以行为单位把字符串中的所有小写字母改写成该字母的下一个字母,如果是字母z,则改写成字母a,大写字母和其它字符保持不变。把一处理的字符串仍按行重新存入字符串数组xx中。。最后main。函数调用函数WriteDat()把结果xx输出到文件OUT3.DAT中。例:原文:Adb.Bcdzaabck.LLhj结果:Aec.Bdeabbcdl.LLik原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。注意:部分源程序存放在PROG1.C中。请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat。的内容。 类型:字符串(单词)的倒置和删除。voidConvertCharA(void)/*标准答案*/{intIj,str;fbr(I=O;I<maxline;H-+){str=strlen(xx[I]);fbr(j=O;j<stry++)if(xx[I][j]=='z')xx[I][j]='a';else if(xx[I][j]>=,a,&&xx[I]|j]<=y)xx[I][j]+=l;})原程序如下:#include<stdio.h>#includc<string.h>#include<conio.h>charxx[50][80];intmaxline=0;/*文章的总行数*/intRcadDat(void);voidWriteDat(void);voidConvertCharA(void){}voidmain(){clrscr();ifi(ReadDat()){printf("数据文件IN.DAT不能打开!\n\007");return;}ConvertCharA();WriteDat();system("pause**);}intReadDat(void){FILE*fp;inti=0;char*p;ifi((fp=fbpen(MIN.DATM,nrM))==NULL)return1;while(fgets(xx[i],80,fp)!=NULL){p=strchr(xx[i],5');if(p)*p=0;i++;}maxline=i;fclose(fp);return0;voidWriteDat(void)(FILE*fp;inti;clrscr();fp=fbpen(MOUT3.DATH,Hwn);fbr(i=0;i<maxline;i-H-){printf(H%s\nM,xx[i]);fprintf(fp,M%s\nH,xx[i]);}fclose(fp);11:下列程序的功能是:把s字符串中的所有字母改写成该字母的下个字符,字母z改写成字母a。要求大写字母仍为大写字母,小写字母仍为小写字母,其他字符不做改变。请编写函数chg(char*s)实现程序的要求,最后调用函数readwriteDat。把结果输出到文件out.dat中。例如:s字符串中原有的内容为:Mn.123Zxy,则调用该函数后,结果为No.l23AyZo注意:部分源程序已给出。请勿改动主函数main。和输出数据函数readwriteDat()(Kj内容。voidchg(char*s)/*标准答案*/{while(*s)if(*s=,z,||*s=,Z,){*s-=25;s++;}elseif(*s>=,a,&&*s<=y){*S+=1;S-H-;}elseifi(*s>=,A,&&*s<=rY'){*S4-=1;S-H-;}elses-H-;}或者:voidchg(char*s){inti,k;k=strlen(s);fbr(i=O;i<k;i++){if(s[i]=^||s[i]=='Z*)s[i]-=25;elseifi(isalpha(s[i]))s[i]++;})原程序如下:#include<conio.h>#include<string.h>#include<stdio.h>#include<ctype.h>#defineN81voidreadwriteDAT();voidchg(char*s)main(){chara[N];clrscr();printf(HEnterastring:”);gets(a);printf(HTheoriginalstringis:");puts(a);chg(a);printf("Thestringaftermodified:");puts(a);readwriteDAT();system("pause");voidreadwriteDAT()inti;chara[N];FILE*rf,*wf;rf=fbpen("in.dat","r");wf=fopen("out.dat","w");fbr(i=0;i<10;i++){fscanRrf,"%s",a);chg(a);fprintf(wf,"%s\n",a);)fclose(rf);fclose(wf);12:已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位)产品名称me(字符型10位),单价dj(整型),数量si(整型),金额je(长整型)四部分组成。其中:金额=单价*数量计算得出。函数ReadDat()是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按产品名称从小到大进行排列,若产品名称相同,则按金额从小到大进行排列.最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT5.DAT中。注意:部分源程序存放在PROG1.C中。请勿改动主函数main()、读数据函数ReadDat。和输出数据函数WriteDat。的内容。voidSortDat()/*标准答案*/{intIJ;PROxy;fbr(I=0;I<99;I++)fbr0=I+lj<lOO;j++)if(strcmp(sell[I].dm,sell[j].dm)<0){xy=sell[I];sell[I]=sell[j];sell[j]=xy;}elseifl(strcmp(sell[I].dm,sell[j].dm)=O)if(sell[I].je<sell[j].je){xy=sell[I];sell[l]=sell|j];sell[j]=xy;})原程序如下:#include<stdio.h>#include<mem.h>#include<string.h>#includc<conio.h>#include<stdlib.h>#defineMAX100typedefstruct{chardm[5];/*产品代码*/char01武11];/*产品名称*/intdj;/*单价*/intsi;/*数量*/longje;/*金额*/}PRO;PROsell[MAX];voidReadDat();voidWriteDat();voidSortDat()()voidmain(){memset(sell,0,sizeofi[sell));ReadDat();SortDat();WriteDatQ;}请勿改动主函数main(请勿改动主函数main()、读数据函数ReadDat。和输出数据函数WriteDat()的内容。voidSortDat()/*标准答案*/{intIj;PROxy;fbr(I=0;I<99;I++)fbr(j=I+lu<100j-H-)if(strcmp(sell[I].mc,sell[j].mc)>0){xy=sell[I];sell[I]=sell[j];sell[j]=xy;}elseifi[strcmp(sell[I].mc,sell[j].mc)==O)if(sell[I].je<sell[j].je){xy=sell[I];sell[I]=sell[j];sell[j]=xy;})原程序如下:#include<stdio.h>#include<mem.h>#include<string.h>#include<conio.h>#include<stdlib.h>#defineMAX100typedefstruct{chardm[5];/*产品代码*/char 产品名称*/intdj;/*单价*/intsi;/*数量*/longje;/*金额*/}PRO;PROsell[MAX];voidReadDat();voidWriteDat();voidSortDat()()voidmain(){memset(sell,0,sizeofl[sell));ReadDat();SortDat();WriteDatO;}voidReadDat(){FILE*fp;charstr[80],ch[l1];inti;voidReadDat(){FILE*fp;charstr[8O],ch[lI];inti;fp=fbpen(,,IN.DATM,,,rH);fbr(i=0;i<100;i4H-){fgets(str,8O,fp);mcmcpy(sell[i].dm,str,4);memcpy(sell[i].mc,str*-4,10);mcmcpy(ch,str+14,4);ch[4]=0;sell[i].dj=atoi(ch);memcpy(ch,str+18,5);ch[5]=0;sell[i].sl=atoi(ch);sell[i].je=(long)scll[i].dj*sell[i].sl;}fclose(fp);}voidWriteDat(void){FILE*fp;inti;fp=fbpen(nOUT5.DATM,"wn);for(i=0;i<100;i++){用rintf(电"%s%s%4d%5d%101d\nM,sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je);}fclose(fp);}13:已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位)产品名称me(字符型10位),单价dj(整型),数量si(整型),金额je(长整型)四部分组成。其中:金额=单价*数量计算得出。函数ReadDat()是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按产品代码从小到大进行排列,若产品代码相同,则按金额从大到小进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT6.DAT中。注意:部分源程序存放在PROG1.C中。fp=fbpen(MIN.DATH,"rH);fbr(i=0;i<100;i++){fgets(str,80,fp);memcpy(sell[i].dm,str,4);memcpy(sell[i].mc,str-i-4,10);mcmcpy(ch,str+l4,4);ch[4]=0;sell[i].dj=atoi(ch);mcmcpy(ch,str+l8,5);ch[5]=0;sell[i].sl=atoi(ch);sell[i].je=(long)sell[i].dj*scll[i].sl;}fclose(fp);}voidWritcDat(void){FILE*fp;inti;fp=fopen(,,OUT6.DATM,"wH);fbr(i=O;i<lOO;i++){fprintfi(fp,M%s%s%4d%5d%101d\nH,sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].jc);}fclosc(fp);}14:已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:依次从数组a中取出一个四位数,如果该数连续大于该四位数以后的5个数目该数是奇数,则统计出满足此条件的个数ent,并把这些四位数按从小到大的顺序存入数组b中。并要计算满足上述条件的四位数的个数ent。最后main。函数调用写函数writeDat()把结果ent以及数组b中符合条件的四位数输出到OUT.DAT文件中。注意:部分源程序存在文件PROG1.C文件中。程序中已定义数组:a[200],b[200],己定义变量:ent请勿改动数据文件IN.DAT中的任何数据、主函数main。、读函数readDat。和写函数writeDat()的内容。voidjsVal()/*标准答案*/{intIj,flag=O;intk;for(I=0;I<MAX-5;I++){fbr(j=I+lj<=I+5j++){if(a[I]>a[j])flag=l;else{flag=0;break;}if(a[I]%2==0)flag=0;}if(flag=l){b[cnt]=a[I];cnt-H-;}}fbr(l=O;I<cnt-l;I++)fbr(j=I+lJvcnt;j++)if(b[I]>b[j]){k=b[I];b[I]=bO];b[j]=k;}}原程序如下:#includc<stdio.h>#defineMAX200inta[MAX],b[MAX],cnt=0;voidjsVal(){)voidreadDat(){inti;FILE*fp;fp=fbpen(Min.datM,nrM);fbr(i=0;i<MAX;i++)fscanfiffp,M%dM,&a[i]);fclose(fp);)voidmain(){inti;readDat();jsVal();printff满足条件的数=%d\n”,ent);fbr(i=0;i<cnt;i++)printf(n%d”,b[i]);writeDat();system(MpauseH);writcDat(){FILE*fp;inti;fp=fbpen("out.dat“,"w“);fprintfl(fp,M%d\nH,ent);fbr(i=0;i<ent;i++)fprintfi(fp,M%d\nM,b[i]);fclose(fp);15:已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat。把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:若一个四位数的千位数字上的值小于等于百位数字上的值,百位数字上的值小于等于十位数字上的值,十位数字上的值小于等于个位数字上的值,并且此四位数是偶数,则统计出满足此条件的个数ent,并把这些四位数按从大到小的顺序存入数组b中。最后main。函数调用写函数writeDat()把结果ent以及数组b中符合条件的四位数输出到OUT.DAT文件中。注意:部分源程序存在文件PROG1.C文件中。程序中已定义数组:a[200],b[200],已定义变量:ent请勿改动主函数main。、读函数readDat()和写函数writeDat。的内容。voidjsVal()/*标准答案*/{intI,j;intal,a2,a3,a4,k;for(I=0;I<MAX;I++){al=a[I]/1000;a2=a[I]%1000/100;a3=a[I]%100/10;a4=a[I]%10;if((a1<=a2)&&(a2<=a3)&&(a3<=a4)&&(a[I]%2==0)){b[cnt]=a[I];cnt++;})fbr(I=O;I<cnt-l;I++)fbr(j=I+lj<cntj++)if(b[I]>bU]){k=b[I];b[I]=b[j];b[n=k;})原程序如F:#include<stdio.h>#defineMAX200inta[MAX],b[MAX],ent=0;voidjsVal(){)voidreadDat(){inti;FILE*fp;fp=fbpen(Min.datM,MrM);fbr(i=0;i<MAX;i++)fccanf(fp,M%dM,&a[i]);fclose(fp);)voidmain(){inti;readDat();jsVal();printfC满足条件的数=%d\n”,ent);fbr(i=0;i<ent;i++)printfif^dH,b[i]);printf(”\n”);writeDat();system(Mpausen);)writeDat(){FILE*fp;inti;fp=fbpen(”out.dat”,“w”);fprintf(fp,"%d\nH,ent);fbr(i=0;i<ent;i++)fprintfiffp,M%d\nn,b[i]);fclose(fp);}16:函数ReadDat()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组XX中,请编制函数StrCharJR。,其函数的功能是:以行为单位把字符串中所有字符的ASCII值右移4位,然后把右移后的字符ASCII值再加上原字符的ASCII值,得到新的字符仍存入原字符串对应的位置上。最后把已处理的字符串仍按行重新存入字符串数组xx中,最后调用函数writeDat。把结果XX输出到文件OUT8.DAT中。原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。注意:部分源程序已给出。请勿改动主函数main。、读数据函数ReadDat()和输出数据函数writeDat()的内容。voidStrCharJR(void)/*标准答案*/{intI,j,strl;fbr(I=O;I<maxline;I++){strl=strlen(xx[I]);fbr(j=Ou<strlj++)xx[I][j]+=xx[I][j]»4;}注:这个编程题比二级考得还简单。voidStrCharJR(void){intij;fbr(i=O;i<maxline;i-H-)for(j=0;xx[i][j]!=t\0,y4-+)xx[i][j]+=xx[i][j]»4;原程序如下:#include<stdio.h>#include<string.h>#include<conio.h>charxx[50][80];intmaxline=0;/*文章的总行数*/intRcadDat(void);voidWriteDat(void);voidStrCharJR(void){)voidmain(){clrscr();ifi(ReadDat()){printff数据文件IN.DAT不能打开据\007”);return;)StrCharJR();WriteDat();}intRcadDat(void){FILE*fp;inti=0;char*p;if((fp=fbpen(HIN.DATH,V))=NULL)return1;while(fgets(xx[i],80,fp)!=NULL){p=strchr(xx[i],*\n');if(p)*P=0;i++;)maxline=i;fclose(fp);return0;)voidWriteDat(void){FILE*fp;inti;clrscr();fp=fopen("OUT8.DAT“,“w”);fbr(i=0;i<maxline;i-H-){printf(M%s\nM,xx[i]);fprintf(fp,M%s\nM,xx[i]);)fclose(fp);}17:函数READDAT()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组XX中;请编制函数CHA(),其函数功能是:以行为单位把字符串中的第一个字符的ASCII值加第二个字符的ASCII值,得到第一个亲朋字符,第二个字符的ASCII值加第二个字符的ASCII值,得到第二个新字符,依此类推一直处理到最后第二个字符,最后一个字符的ASCH值加原第一个字符的ASCII值,得到最后一个新的字符,得到的新字符分别存放在原字符串对应的位置上。最后把己处理的字符串逆转后按行重新存入字符串数组XX中,最后调用函数WRITEDAT。把结果XX输出到文件OUT9.DAT中.原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格.注意:部分源程序已给出。请勿改动主函数main()、读数据函数ReadDat()和输出数据函数writeDat()的内容。voidChA(void)/*标准答案*/{intI,j,k,str;charch;fbr(I=O;I<maxline;I++){str=strlen(xx[I]);ch=xx[I][0];for(j=Oy<str-lj++)xx[l][j]+=xx[I][j+l];xx[I][str-l]+=ch;fbr(j=O,k=str-lj<str/2;j++,k-){ch=xx[I][j];xx[I][j]=xx[I][k];xx[I][k]=ch;}}}voidChA(void){intij;charp,c;fbr(i=O;i<maxline;i-H-){P=xx[i][0];c=xx[i][strlen(xx[i])-l];for(j=OJ<strlen(xx[i])-lJ++)xx[i][j]+=xx[i][j+l];xx[i][strlen(xx[i])-l]=p+c;strrev(xx[i]);}}原程序如下:#includc<stdio.h>#include<string.h>#includc<conio.h>charxx[50][80];intmaxline=0;/*文章的总行数*/intReadDat(void);voidWritcDat(void);voidChA(void){)voidmain(){clrscr();ifi[ReadDat()){printff数据文件IN.DAT不能打开!\n\007”);return;)ChA();WriteDat();)intReadDat(void)(FILE*fp;inti=0;char*p;if((fp=fbpen("IN.DAT”,T))=NULL)return1;while(fgets(xx[i],80,fp)!=NULL){p=strchr(xx[i],*\n');if(p)*p=0;i++;)maxline=i;fclose(fp);return0;)voidWriteDat(void)(FILE*fp;inti;clrscr();fp=fbpen("OUT9.DAT","w");fbr(i=0;i<maxline;i++){printf("%s\n",xx[i]);fprintf(fp,"%s\n",xx[i]);}fclose(fp);18:函数ReadDat。实现从文件ENGIN中读取•篇英文文章,存入到字符串数组XX中;请编制函数encryptChar(),按给定的替代关系对数组xx中的所有字符进行替代,仍存入数组XX的对应的位置上,最后调用函数WriteDat。把结果xx输出到文件PS10.DAT中。替代关系:f(p)=p*11mod256(p是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果原字符的ASCII值是偶数或计算后f(p)值小于等于32,则该字符不变,否则将f(p)所对应的字符进行替代。注意:部分源程序已给出。原始数据文件存放的格式是:每行的宽度均小于80个字符。请勿改动主函数main。、读数据函数RcadDat()和输出数据函数WriteDat()的内容。voidencryptChar。/*标准答案*/{intI;char*pf;fbr(I=O;I<maxline;I-H-){pf=xx[I];while(*pf!=0){if(*pf%2=0||*pf,tl1%256<=32)else*pf=*pf*l1%256;pg;})或者:voidencryptChar(){intij;char*p;fbr(i=O;i<maxline;i++)fbr(j=O;j<strlen(xx[i]);j-H-){p=(xx[i][j]*ll)%256;if(p<=32||xx[i][j]%2=0)elsexx[i][j]=p;})原程序如下:#include<stdio.h>#include<string.h>#include<conio.h>#include<ctype.h>unsignedcharxx[50][80];intmaxline=0;/*文章的总行数*/intRcadDat(void);voidWriteDat(void);voidencryptChar(){}voidmain(){clrscr();if(ReadDat()){printff数据文件ENGIN不能打开!\n\007”);return;)encryptChar();WriteDat();system(Mpausen);)intReadDat(void){FILE*fp;inti=0;unsignedchar*p;ifi((fp=fopen(,,eng.in,,,,,r,,))=NULL)return1;while(fgets(xx[i],80,fp)!=NULL){p=strchr(xx[i]/\n*);ifi(p)*p=O;if}maxline=i;fclosc(fp);return0;)voidWriteDat(void)]FILE*fp;inti;fp=fopen(MpslO.datM,nw");fbr(i=O;i<maxline;i-H-){pr血f("%s\rT,xx[i]);fprintf(fp,n%s\nM,xx[i]);}fclose(fp);19:编写一个函数findstr。,该函数统计一个长度为2的子字符串在另一个字符串中出现的次数。例如:假定输入的字符串为"asdasasdfgasdaszx67asdmklo",子字符串为"as",函数返回值为6。函数readwriteDat()的功能是实现从文件in.dat中读取两个字符穿4,并调用函数findstr(),最后把结果输出到文件out.dat中。注意:部分源程序已给出。请勿改动主:函数main。和函数ReadWrite()的内容。intfindStr(char*str,char*substr){intn;char*p,*r;n=0;while(*str){P=str;r=substr;while(*r)if(*r==*p){r-H-;p++;}elsebreak;n++;str++;}returnn;)原程序如下:#include<stdio.h>#includc<string.h>#include<conio.h>#defineN81intfindStr(char*str,char*substr){intn;char*p,*r;n=0;while(*str){P=str;r=substr;while(*r)ift*r=*p){r4-+;p-H-;}elsebreak;ifi[*r=W)n++;str+4-;}returnn;)main()(charstr[81],substr[3];intn;clrscr();printf(HEnterastring:");gets(str);printfif”Enterasubstring:*');gets(substr);puts(str);puts(substr);n=findStr(str,substr);printffn=%d\n”,n);ReadWrite();system(Mpausen);)ReadWrite(){charstr[81],substr[3],ch;intn,len,i=0;FILE*rf,*wf;rf=fbpen(nin.dat",V);wf=fbpen(Hout.datM,nwM);while(i<5){fgets(str,80,rf);fgets(substr,10,rf);lcn=strlen(substr)-1;ch=substr[len];if(ch=,\n,||ch=Ox1a)substr[len]=O;n=findStr(str,substr);fprintfi(wf,,,%d\nn,n);i";}fclose(rf);fclose(wf);20:编写函数jsvakie,它的功能是:求Fibonacci数列中大于t的最小的-一个数,结果由函数返回。其中Fibonacci数列F(n)的定义为:F(0)=0,F(l)=lF(n)=F(n-l)+F(n-2)最后调用函数writeDat()读取10个数据L分别得出结果且把结果输出到文件out.dat中。例如:当t=1000时,函数值为:1597。注意:部分源程序已给出。请勿改动主函数main。和写函数writeDat()的内容。intjsValue(intt)/*标准答案*/{intfl=0,f2=l,fn;fh=fl+f2;while(fh<=t){fl=Q;f2=fh;fh=fl+f2;}returnfh;}原程序如下:#include<stdio.h>intjsvalue(intt)i}main(){intn;n=1000;printf(wn=%d,f=%d\nn,njsvalue(n));writeDat();}writeDat(){FILE*in,*out;inti,n,s;in=fbpen(,,in.datM,Y,);out=fbpen(Mout.dat",MwM);fbr(i=0;i<10;i++){fscanf(in,M%dH,&n);s=^jsvalue(n);printf(M%d\nM,s);fprintf(out,"%d\nH,s);)fclose(in);fclose(out);}21:下列程序的功能是:利用发下所示的简单迭代方法求方程:cos(x)-x=0的一个实根。xn+l=cos(xn)迭代步骤如下:(1)取XI初值为0.0;(2)X0=Xl,把XI的值赋给X0;(3)X1=COS(XO),求出一个新的XI;(4)若X0-X1绝对值小0.000001,执行步骤(5),否则执行步骤(2);(5)所求XI就是方程8s(X)・X=0的一个实根,作为函数值返回。请编写函数countvalue。实现程序的要求,最后调用函数WR【TEDAT()把结果输出到文件OUT17.DAT中。注意:部分源程序已给出。请勿改动主函数main。和输出数据函数writeDAT()的内容。floatcountValue()/*标准答案*/{floatx0,x1=0.0;while(l){x0=xl;xl=cos(x0);if(fabs(xO-x1)<1e-6)break;returnxl;)或者:floatcountvalue(){doublexO,xl;x1=0.0;do{x0=x1;xl=cos(x0);}while(fabs(xO-xl)>=0.000001);returnxl;}原程序如下:#includc<conio.h>#include<math.h>#includc<stdio.h>floatcountvalue()(}main(){clrscr();printfC实根=%f\n”,countvalue());printf(H%f\n,,,cos(countvalue())-countvalu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 47486-2026血管芯片通用技术要求
- 土方开挖工程检验批质量验收记录表
- 项目安全员绩效考核评分表
- 财务印鉴管理制度
- 胸腔闭式引流的健康教育
- (辅导班)2026年新高三数学暑假讲义(基础班)第13讲 数列求和(解析版)
- 2025-2026学年平凉市高考考前模拟语文试题含解析
- 【浙江省杭州市事业单位考试综合应用能力(中小学教师类D类)备考重点解析】
- 【2025】鄂州鄂城社区工作者招考笔试试题
- 【2026】超星尔雅学习通《论文写作初阶(北京大学)》章节测试及答案
- 2026四川甘孜州巴塘县考调事业单位工作人员18人重点基础提升(共500题)附带答案详解
- 北京市2025中国文化遗产研究院应届毕业生招聘4人笔试历年参考题库典型考点附带答案详解
- 2026年住院医师规范化培训试题【新题速递】附答案详解
- 2026年广东省广州市高三二模英语试题(含答案)
- CNCA-C09-02:2025 强制性产品认证实施规则 移动电源、锂离子电池和电池组(试行)
- 疾控中心采购制度
- 2026西安银行总行科技部、数据管理部相关岗位招聘笔试模拟试题及答案解析
- 交通安全培训【课件文档】
- 贵州国企招聘2025贵州磷化(集团)有限责任公司招聘89人笔试参考题库附带答案详解
- 纱线基础知识图文详解
- FZ/T 73023-2006抗菌针织品
评论
0/150
提交评论