1、三级上机考试试题分类解答目 录替 换 字 符 题 - 第1页字符串左右排序和比较 - 第2页正整数排序求平均值 - 第5页产品五个因素的比较排列 - 第8页素 数 - 第9页数 字 排 序 - 第10页数 学 计 算 - 第10页数 字 或 字 符 移 位 - 第14页字符串(单词)的倒置和删除 - 第15页选 票 问 题 - 第16页 出 圈 问 题 - 第17页进 制 转 换 - 第18页泰山学院信息科学技术学院 雪夜寒鹰整理制作(版权所有,转载请注明出处)替 换 字 符 题1.函数ReadDat()实现从文件ENG.IN中读取一篇英文文章,存入到字符串数组xx中;请编制函数encrypt
2、Char(),按给定的替代关系对数组xx中的所有字符进行替代,仍存入数组xx的对应的位置上,最后调用函数WriteDat()把结果xx输出到文件PS10.DAT中。替代关系:f(p)=p*11 mod 256 (p是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果原字符的ASCII值是偶数或计算后f(p)值小于等于32,则该字符不变,否则将f(p)所对应的字符进行替代。部分源程序已给出,原始数据文件存放的格式是:每行的宽度均小于80个字符。void encryptChar()int i,j,t;for(i=0;imaxline;i+)for(j=0;jstrlen(
3、xxi);j+)t=xxij*11%256;if(t=32 | xxij%2=0) continue;xxij=t;黑体部分可变条件判断条件语句如果原字符是小写字母或计算后f(p)值小于等于32if(t=a & xxij=z)如果原字符是大写字母或计算后f(p)值小于等于32if(t=A & xxij=Z)如果计算后f(p)值小于等于32或f(p)对应的字符是数字0至9if (t=0 & t= 9)如果原字符是数字字符0至9或计算后f(p)值小于等于32if(t=0 & xxij=9)如果计算后f(p)值小于等于32或f(p)对应的字符是大写字母if(t=A & t=Z)如果计算后f(p)值小
4、于等于32或f(p)对应的字符是小写字母if(t=a & t=z)如果计算后f(p)值小于等于32或其ASCII值是偶数if(t=32 | t%2=0)如果计算后f(p)值小于等于32或其ASCII值是奇数if(t=32 | t%2=1)如果计算后f(p)值小于等于32或大于130,则该字符不变if(t130)2.函数ReadDat()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中,请编制函数ConverCharD(),其函数的功能是:以行为单位把字符串中的所有小写字母改写成该字母的上一个字母,如果是字母a,则改写成字母z。大写字母仍为大写字母,小写字母仍为小写字母,其他字符不
5、变。最后把已处理的字符串仍按行重新存入字符串数组xx中,最后调用函数writeDat()把结果xx输出到文件OUT4.DAT中。例:原文:Adb.Bcdzaabck.LLhj结果:Aca.Bbcyzzabj.LLgi原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。*void convertchard(void)char *p;int i;for(i=0;imaxline;i+)p=xxi;while(*p+)if(islower(*(p-1) *(p-1)=(*(p-1)-a+26-1)%26+a;3.函数READDAT()实现从文件IN.DAT中读取一篇英文文章存入到
6、字符串数组XX中;请编制函数CONVERTCHARA(),其函数功能是:以行为单位把字符串中的所有小写字母改写成该字母的下一个字母,如果是字母Z,则改写成字母A. 大写字母仍为大写字母,小写字母仍为小写字母,其他字符不变.把已处理的字符串仍按行重新存入字符串数组XX中,最后调用函数WRITEDAT()把结果XX输出到文件OUT.DAT中.例:原文:Adb.Bcdzaabck.LLhj结果:Aec.Bdeabbcdl.LLik原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格.*void convertcharA(void)char *p;int i;for(i=0;i=a&
7、*pz) *p=*p+1;p+;4.下列程序的功能是:把s字符串中的所有字母改写成该字母的下一个字符,字母z改写成字母a。要求大写字母仍为大写字母,小写字母仍为小写字母,其他字符不做改变。请编写函数chg(char *s)实现程序的要求,最后调用函数readwriteDat()把结果输出到文件out.dat中。例如:s字符串中原有的内容为:Mn.123Zxy,则调用该函数后,结果为No.123Ayz。void chg(char *s)int i,j,k;k=strlen(s);for(i=0;ik;i+)if(si=z/si=Z )si-=25;elseif(isalpha(si)si+=1;
8、5函数READDAT()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组XX中;请编制函数CHA(),其函数功能是:以行为单位把字符串中的第一个字符的ASCII值加第二个字符的ASCII值,得到第一个亲朋字符,第二个字符的ASCII值加第三个字符的ASCII值,得到第二个新字符,依此类推一直处理到最后第二个字符,最后一个字符的ASCII值加原第一个字符的ASCII值,得到最后一个新的字符,得到的新字符分别存放在原字符串对应的位置上。最后把已处理的字符串逆转后按行重新存入字符串数组XX中,最后调用函数WRITEDAT()把结果XX输出到文件OUT9.DAT中.原始数据文件存放的格式是:每
9、行的宽度均小于80个字符,含标点符号和空格.void ShA(void)int i,j;char t1;for(i=0;imaxline;i+)t1=xxi0;for(j=0;xxij+1!=0;j+)xxij=xxij+xxij+1;xxij+1=xxij+1+t1;答案二:void ShA(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;字符串左右排序和比较6.函数ReadDat()实现从文件in.dat中读取20行数据存
10、放到字符串数组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
11、 4void 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+) for(k=j+1;kxxik) ch=xxij;xxij=xxik;xxik=ch;for(j=half-1,k=strl-1;j=0;j-,k-)ch=xxij;xxij=xxik;xxik=ch;7.函数ReadDat()实现从文件in.dat中读取20行数据存放到字符串数组xx中(第行字符串长度均小于80)。请编制函数jsSort(),其函数的功能是:以行为单位对字符串按给定
12、的条件进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数WriteDat()把结果xx输出到文件out.dat中。条件:从字符串中间一分为二,右边部分按字符的ASCII值降序排序,排序后左边部分与右边部分进行交换。如果原字符串长度为奇数,则最中间的字符不参加排序,字符仍放在原位置上。例如:位置012345678源字符串h g f e a b c d8 7 6 5 9 1 2 3 4则处理后字符串 d c b a h g f e4 3 2 1 9 8 7 6 5void jsSort()int i,j,k,strl;char ch;for(i=0;i20;i+)strl=strl
13、en(xxi);for(j=(strl+1)/2;jstrl;j+)for(k=j+1;kstrl;k+)if(xxijxxik)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;8.函数ReadDat()实现从文件in.dat中读取20行数据存放到字符串数组xx中(第行字符串长度均小于80)。请编制函数jsSort(),其函数的功能是:以行为单位对字符串按给定的条件进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数WriteDat()把结果x
14、x输出到文件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 h4 3 2 1 9 5 6 7 8void 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+)f
15、or(k=j+1;khalf;k+)if(xxijxxik)ch=xxij;xxij=xxik;xxik=ch;if(strl%2) half+; for(j=half;jstrl;j+)p=j;for(k=j;kstr;k+)if(xxikxxip)p=k;ch=xxij;xxij=xxip;xxip=ch;-9.函数ReadDat()实现从文件in.dat中读取20行数据存放到字符串数组xx中(第行字符串长度均小于80)。请编制函数jsSort(),其函数的功能是:以行为单位对字符串变量的下标为奇数的字符按其ASCII值从小到大的顺序进行排序,排序后的结果仍按行重新存入字符串数组xx中,最
16、后调用函数WriteDat()把结果xx输出到文件out.dat中。例如:位置01234567源字符串h g f e d c b a 则处理后字符串 h a f c d e b g该题亦是采用冒泡法 void jsSort()int i,j,k,strl;char temp;for(i=0;i20;i+)strl=strlen(xxi);for(k=1;kstrl;k=k+2) /*如果下标为偶数则为0*/for(j=k+2;jxxij)temp=xxik;xxik=xxij;xxij=temp;10.求出ss字符串中指定字符c的个数,并返回此值。请编写函数int num(*char ss,c
17、har c)实现程序要求,最后调用函数readwriteDat()把结果输出到文件out.dat中。(注:大小写字母有区别)例如,若输入字符串ss= 123412132 ,c=1,则输出3。int num(char *ss,char c)int i,k=0;for(i=0;istrlen(ss);i+)if(ssi=c) k+;return k;11.函数ReadDat()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中,请编制函数SortCharD(),其函数的功能是:以行为单位对字符按从大到小的顺序进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数writeD
18、at()把结果xx输出到文件OUT2.DAT中。例:原文:dAe,BfC.CCbbAA结果:fedCBA.bbCCAA原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。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=0;kstrl-1-i;k+)if(xxikxxik+1)ch=xxik;xxik=xxik+1;xxik+1=ch;12.下列程序的功能是:把S字符串中的所有字符左移一个位置,串中的第一个字符移到最
19、后.请编写函数CHG(CHAR *S)实现程序要求,最后调用函数READWRITEDAT()把结果输出到OUT.DAT文件中.例如:S字符串中原有内容为:MN.123XYZ,则调用函数后,结果为:N.123XYZM.*void chg(char *s)int i=strlen(s);char c=*s;strcpy(s,s+1);*(s+i-1)=c;*(s+i)=0;13.下列程序的功能是:统计在TT字符串中A到Z26个字母各自现的次数,并存入PP数组.请编写函数CNT(CHAR *TT,INT PP)实现程序的要求,最后调用函数READWRITEDAT()把结果输出到文件OUT.DAT中.
20、(仅统计小写字母.)*void cnt(char *tt, int pp)int i;for(i=0;i=a&*tt=s&s+i*mn) break; strcuur=strlast; strcuur=ch; loop(int s,int m,int n,char str)int kk=s;char ch=strs;while(kk+m)%n!=s)strkk=str(kk+m)%n;kk=(kk+m)%n;strkk=ch;正整数排序求平均值(包括将数拆散、求最大最小值)15.在文件中有200个正整数,且每个数均在1000至9999之间。函数ReadDat()读取这200个数存放到数组aa中
21、。请编制函数jsSort(),其函数的功能是:要求按每个数的后三位的大小进行升序排列,然后取出满足此条件的前10个数依次存入数组b中,如果后三位的数值相等,则按原先的数值进行降序排列。最后调用函数WriteDat()把结果bb输出到文件out.dat中。例:处理前 6012 5099 9012 7025 8088处理后 9012 6012 7025 8088 5099void jsSort()int i,j;int t;for(i=0;i200;i+)for(j=i+1;jaaj%1000)t=aai;aai=aaj;aaj=t;else if(aai%1000=aaj%1000)if (aa
22、iaaj)t=aai;aai=aaj;aaj=t;for(i=0;i10;i+)bbi=aai;16.已知数据文件IN.DAT中存有300个四位数,并已调用读函数ReadDat()把这些数存入数组a中,请编制一函数jsValue(),其功能是:求出千位数上的数加个位数等于百位数上的数加十位数上的数的个数cnt,再求出所有满足此条件的四位数平均值pjz1,以及不满足此条件的四位数平均值pjz2,最后调用写函数把结果输出到OUT.DAT文件。该题的关键在于会不会取出一个数的个、十、百、千位上的数。ai%10对10求余结果为个位数,ai%100/10先对100求余得出后两位数然后再除10,由于为整数
23、因此得出上一个后两位数的第一位。依此类推。jsvalue()int i,g,s,b,q,k=0;for(i=0;i300;i+)g=ai%10;s=ai%100/10;b=ai/100%10;q=ai/1000;if(q+g)=(s+b) cnt+;pjz1+=ai;else k+;pjz2+=ai;pjz1/=cnt;pjz2/=k;17.已知数据文件IN.DAT中存有300个四位数,并已调用读函数ReadDat()把这些数存入数组a中,请编制一函数jsValue(),其功能是:求出所有这些四位数是素数的个数cnt,再把所有满足此条件的四位数依次存入数组b中,然后对数组b的四位数按从小到大的顺序进行排序,最后调用写函数writeDat()把结果输出到OUT.DAT文件。例如:5591是素数,则该数满足条件存入数组b中
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1