《2022年全国计算机考试三级上机C语言题库 .pdf》由会员分享,可在线阅读,更多相关《2022年全国计算机考试三级上机C语言题库 .pdf(27页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、一、素数题:题目 1. 请编写一个函数jsValue(int m,int k,int xx),该函数的功能是:将大于整数m且紧靠 m的 k 个素数存入数组 xx 传回。例如:若输入17 5 则应输出: 19,23,29,31,37。 int isP(int m) int i; for(i=2;i0;m+) if(isP(m) xxs+=m; k-; 题目 34. 程序 prog1.c的功能是:选出 100 以上 1000 之内所有个位数字与十位数字之和被10 除所得余数恰是百位数字的素数(如293) 。计算并输出上述这些素数的个数cnt 以及这些素数值的和sum。 请考生编写函数countVa
2、lue( )实现程序要求void countValue() int i,j,bw,sw,gw; for(i=100;i1000;i+) bw=i/100; sw=i%100/10; gw=i%10; for(j=2;ji;j+) if(i%j=0) break; if(i=j) &(gw+sw)%10=bw) cnt+; sum+=i; 55、已知数据文件in.dat中存有300 个四位数,并已调用读函数ReadDat() 把这些数存入数组a 中,请编制一函数jsValue(),其功能是:求出所有这些四位数是素数的个数cnt ,再把所有满足此条件的四位数依次存入数组b 中,然后对数组 b 的四
3、位数按从小到大的顺序进行排序,最后调用写函数writeDat()把结果输出到out.dat文件。例如:5591 是素数,则该数满足条件存入数组b 中,且个数 cnt=cnt+1 。9812 是非素数,则该数不满足条件忽略。#include int a300,b300,cnt=0; int isP(int m) int i; for(i=2;im;i+) if(m%i=0)return 0; return 1; jsValue() int i,j,value; for(i=0;i300;i+) if(isP(ai) bcnt+=ai; for(i=0;icnt-1;i+) for(j=i+1;j
4、bj) value=bi; bi=bj; bj=value; 题目 64 下列程序的功能是:找出所有100 以内(含 100)满足 I ,I+4 ,I+10 都是素数的整数I (I+10 也在 100以内)名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 27 页 - - - - - - - - - 的个数 cnt 以及这些I 之和 sum 。请编写函数countValue()实现程序要求的功能int isPrime(int number) int i,tag=1; for
5、(i=2;tag& i=number / 2; i+) if(number % i =0) tag =0; return tag; void countValue() int i; for(i=2;i500;i-) for(j=2;ji;j+) if(i%j=0) break; if(j=i)cnt+; sum=sum+k*i; k=k*(-1); 题目 82. 已知数据文件in.dat中存有 300 个四位数,请编制一函数jsValue(),其功能是:求出所有这些四位数是素数的个数 cnt ,再求出所有满足此条件的四位数平均值pjz1 ,以及不满足此条件的四位数平均值pjz2 。例如: 55
6、91 是素数,则该数满足条件计算平均值pjz1 ,且个数cnt=cnt+1 。 9812 是非素数,则该数不满足条件计算平均值 pjz2 。程序中已定义数组:a300 ,已定义变量:cnt,pjz1,pjz2。#include int a300,cnt=0; double pjz1=0.0,pjz2=0.0; int isP(int m) int i; for(i=2;im;i+) if(m%i=0)return 0; return 1; jsValue() int i; for(i=0;i300;i+) if(isP(ai) pjz1+=ai;cnt+; else pjz2+=ai; if(
7、cnt=0) pjz1=0; else pjz1/=cnt; if(300-cnt=0) pjz2=0; else pjz2/=(300-cnt); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 27 页 - - - - - - - - - 二、结构体题目 7 已知在文件IN.DAT 中存有 100 个产品销售记录, 每个产品销售记录由产品代码dm(字符型 4 位 ), 产品名称mc(字符型 10 位) ,单价 dj( 整型 ) ,数量 sl( 整型) ,金额 je(
8、长整型 ) 五部分组成。其中:金额=单价 * 数量计算得出。请编制函数 SortDat(),其功能要求:按产品代码从大到小进行排列,若产品代码相同,则按金额从大到小进行排列,最终排列结果仍存入结构数组sell中void SortDat() int i,j; PRO xy; for(i=0;i99;i+) for(j=i+1;j100;j+) if(strcmp(selli.dm,sellj.dm)0|strcmp(selli.dm,sellj.dm)=0&selli.jesellj.je) xy=selli; sell i=sellj; sellj=xy; 题目 13 每个产品销售记录由产品代
9、码dm(字符型 4 位) ,产品名称mc(字符型 10 位) ,单价 dj( 整型 ) ,数量 sl( 整型 ) ,金额 je( 长整型 ) 五部分组成。其中:金额=单价 *数量计算得出。编制函数SortDat(),其功能要求:按产品代码从小到大进行排列,若产品代码相等,则按金额从大到小进行排列,最终排列结果仍存入结构数组sell中:void SortDat() int i,j; PRO xy; for(i=0;i99;i+) for(j=i+1;j0|strcmp(selli.dm,sellj.dm)=0&selli.jesellj.je) xy=selli;selli=sellj;sell
10、j=xy; 题目 38 编制函数SortDat(),其功能要求:按产品代码从小到大进行排列,若产品代码相同,则按金额从小到大进行排列,最终排列结果仍存入结构数组sell中void SortDat() int i,j; PRO xy; for(i=0;i99;i+) for(j=i+1;j0|strcmp(selli.dm,sellj.dm)=0&selli.jesellj.je) xy=selli;selli=sellj;sellj=xy; 题目 12 编制函数 SortDat(),其功能要求:按产品名称从小到大进行排列,若产品名称相等,则按金额从小到大进行排列,最终排列结果仍存入结构数组se
11、ll中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; 题目 32 SortDat(),其功能要求:按产品名称从大到小进行排列,若产品名称相等,则按金额从小到大进行排列,最终排列结果仍存入结构数组sell中void SortDat() int i,j; PRO xy; for(i=0;i99;i+) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - -
12、 - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 27 页 - - - - - - - - - for(j=i+1;j100;j+) if(strcmp(selli.mc,sellj.mc)sellj.je) xy=selli;selli=sellj;sellj=xy; 题目 42 SortDat(),其功能要求:按产品名称从大到小进行排列,若产品名称相等,则按金额从大到小进行排列,最终排列结果仍存入结构数组sell中void SortDat() int i,j; PRO xy; for(i=0;i99;i+) for(j=i+1;j100;j
13、+) if(strcmp(selli.mc,sellj.mc)0|strcmp(selli.mc,sellj.mc)=0&selli.jesellj.je) xy=selli;selli=sellj;sellj=xy; 题目 31 函数 SortDat(),其功能要求:按金额从大到小进行排列,若金额相同,则按产品代码从大到小进行排列,最终排列结果仍存入结构数组sell中void SortDat() int i,j; PRO xy; for(i=0;i99;i+) for(j=i+1;j100;j+) if(selli.jesellj.je|selli.je=sellj.je&strcmp(se
14、lli.dm,sellj.dm)0) xy=selli;selli=sellj;sellj=xy; 题目 47 函数 SortDat(),其功能要求:按金额从大到小进行排列,若金额相等,则按产品代码从小到大进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT3.DAT中。 void SortDat() int i,j; PRO xy; for(i=0;i99;i+) for(j=i+1;j100;j+) if(selli.je0) xy=selli;selli=sellj;sellj=xy; 题目 61 函数 SortDat(),其功能要求:按
15、金额从小到大进行排列,若金额相同,则按产品代码从大到小进行排列,最终排列结果仍存入结构数组sell中void SortDat() int i,j; PRO xy; for(i=0;i99;i+) for(j=i+1;jsellj.je|selli.je=sellj.je&strcmp(selli.dm,sellj.dm)0) xy=selli; selli=sellj; sellj=xy; 题目 99 函数 SortDat(),其功能要求:按金额从小到大进行排列,若金额相等,则按产品代码从小到大进行排列,最终排列结果仍存入结构数组sell中 void SortDat() int i,j; PR
16、O xy; for(i=0;i99;i+) for(j=i+1;jsellj.je|selli.je=sellj.je&strcmp(selli.dm,sellj.dm)0) xy=selli;selli=sellj;sellj=xy; 三、字符替换与移位题目 8 请编制函数encryptChar(),按给定的替代关系对数组xx 中的所有字符进行替代,仍存入数组xx 的对应的位置上,替代关系: f(p)=p*11 mod 256(p 是数组中某一个字符的ASCII 值, f(p)是计算后新字符的ASCII 值) ,如果计算后 f(p)值小于等于32 或大于 130,则该字符不变,否则将f(p)
17、所对应的字符进行替代。void encryptChar() int i,j; for(i=0;imaxline;i+) for(j=0;jstrlen(xxi);j+) if(xxij*11%256130) continue; else xxij=xxij*11%256; 题目 36 函数 encryptChar(), 替代关系: f(p)=p*11 mod 256 (p 是数组中某一个字符的ASCII 值,f(p) 是计算后新字符的ASCII值) ,如果计算后f(p)值小于等于32 或 f(p) 对应的字符是数字0 至 9,则该字符不变,否则将f(p) 所对应的字符进行替代。void enc
18、ryptChar() int i,j; for(i=0;imaxline;i+) for(j=0;jstrlen(xxi);j+) if(xxij*11%256=0&xxij*11%256=9) continue; else xxij=xxij*11%256; 题目 56 encryptChar(),替代关系: f(p)=p*11mod 256 (p 是数组中某一个字符的ASCII 值,f(p) 是计算后新字符的ASCII值) ,如果计算后f(p) 值小于等于32 或 f(p)对应的字符是小写字母,则该字符不变, 否则将 f(p) 所对应的字符进行替代。void encryptChar() i
19、nt i,j; for(i=0;imaxline;i+) for(j=0;jstrlen(xxi);j+) if(xxij*11%256=a&xxij*11%256=z) continue; else xxij=xxij*11%256; 题目 62(字符替换题)编制函数 encryptChar(),替代关系: f(p)=p*13 mod 256(p 是数组中某一个字符的ASCII 值, f(p) 是计算后新字符的ASCII 值) ,如果计算后 f(p) 值小于等于32 或其 ASCII 值是偶数,则该字符不变,否则将f(p) 所对应的字符进行替代。void encryptChar() int
20、i,j; for(i=0;imaxline;i+) for(j=0;jstrlen(xxi);j+) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 27 页 - - - - - - - - - if(xxij*13%256=32|(xxij*13%256)%2=0) continue; else xxij=xxij*13%256; 题目 95 替代关系: f(p)=p*11 mod 256(p 是数组中某一个字符的ASCII 值, f(p) 是计算后新字符的ASCII
21、值) ,如果计算后 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=A&xxij*11%256=Z) continue; else xxij=xxij*11%256; 题目 98 替代关系: f(p)=p*17 mod 256(p 是数组中某一个字符的ASCII 值, f(p) 是计算后新字符的ASCII 值) ,如果计算后 f(p) 值小于等于32 或
22、其 ASCII 值是奇数,则该字符不变,否则将f(p) 所对应的字符进行替代。void encryptChar() int i,j; for(i=0;imaxline;i+) for(j=0;jstrlen(xxi);j+) if(xxij*17%256=32|(xxij*17%256)%2!=0) continue; else xxij=xxij*17%256; 题目 96(字符替换题)请编制函数encryptChar()替代关系: f(p)=p*11mod 256 (p 是数组中某一个字符的ASCII 值, f(p) 是计算后新字符的 ASCII 值) ,如果计算后f(p) 值小于等于32
23、 或 f(p) 对应的字符是小写字母,则该字符不变, 否则将 f(p) 所对应的字符进行替代。void encryptChar() int i,j; for(i=0;imaxline;i+) for(j=0;jstrlen(xxi);j+) if(xxij*11%256=a&xxij*11%256=z) continue; else xxij=xxij*11%256; 题目 18 编制函数 encryptChar(),替代关系: f(p)=p*11 mod 256(p 是数组中某一个字符的ASCII 值, f(p) 是计算后新字符的ASCII 值) ,如果原字符的 ASCII 值是偶数或计算后
24、f(p) 值小于等于32,则该字符不变,否则将f(p) 所对应的字符进行替代。 void encryptChar() int i,j; for(i=0;imaxline;i+) for(j=0;jstrlen(xxi);j+) if(xxij*11%256=32|xxij%2=0) continue; else xxij=xxij*11%256; 题目 37 替代关系: f(p)=p*11 mod 256(p 是数组中某一个字符的ASCII 值, f(p) 是计算后新字符的ASCII 值) ,如果原字符是大写字母或计算后f(p) 值小于等于32,则该字符不变,否则将f(p) 所对应的字符进行替
25、代。void encryptChar() int i,j; for(i=0;imaxline;i+) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 27 页 - - - - - - - - - for(j=0;jstrlen(xxi);j+) if(xxij*11%256=A&xxij=Z) continue; else xxij=xxij*11%256; 题目 97 编制函数 encryptChar(),替代关系: f(p)=p*11 mod 256(p 是数组中某一
26、个字符的ASCII 值, f(p) 是计算后新字符的ASCII 值) ,如果原字符是数字字符0 至 9 或计算后 f(p) 值小于等于32,则该字符不变,否则将f(p) 所对应的字符进行替代。void encryptChar() int i,j; for(i=0;imaxline;i+) for(j=0;jstrlen(xxi);j+) if(xxij*11%256=0&xxij=9) continue; else xxij=xxij*11%256; 题目 10 编制函数 ConvertCharA(),其函数的功能是: 以行为单位把字符串中的所有小写字母改写成该字母的下一个字母,如果是字母z,
27、则改写成字母a。大写字母仍为大写字母,小写字母仍为小写字母,其他字符不变。例:原文:Adb.Bcdza abck.LLhj 结果: Aec.Bdeab bcdl.LLik 原始数据文件存放的格式是:每行的宽度均小于80 个字符,含标点符号和空格。void ConvertCharA(void) int i,j; for(i=0;imaxline;i+) for(j=0;j=a&xxij=y) xxij+=1; 题目 73 编制函数ConverCharD() ,其函数的功能是:以行为单位把字符串中的所有小写字母改写成该字母的上一个字母,如果是字母a,则改写成字母z。大写字母仍为大写字母,小写字母仍
28、为小写字母,其它字符不变。例:原文: Adb.Bcdza abck.LLhj 结果: Aca.Bbcyz zabj.LLgi void ConvertCharD(void) int i,j; for(i=0;imaxline;i+) for(j=0;j=b&xxij=z) xxij-=1; 题目 11(字符串字母移位题)程序 prog1.c的功能是:把 s 字符串中的所有字母改写成该字母的下一个字母,字母z 改写成字母a。要求大写字母仍为大写字母,小写字母仍为小写字母,其它字符不做改变。请编写函数chg(char *s)实现程序要求例如: s 字符串中原有的内容为:Mn.123Zxy,则调用该
29、函数后,结果为: No.123Ayz。 void chg(char *s) int I; for(I=0;I=a&si=A&si=Y) si+=1; 题目 16 编制函数StrCharJR(),其函数的功能是:以行为单位把字符串中所有字符的ASCII 值右移 4 位,然后把右移后的字符ASCII 值再加上原字符的ASCII 值,得到新的字符仍存入原字符串对应的位置上。最后把已处理的字符串仍按行重新存入字符串数组xx 中void StrCharJR() int i,j; for(i=0;imaxline;i+) for(j=0;j4); 题目 63(字符串移位题)程序 prog1.c的功能是:
30、把 s 字符串中的所有字符左移一个位置,串中的第一个字符移到最后。编写函数 chg(char *s)实现程序要求例如: s 字符串中原有内容为:Mn.123xyZ,则调用该函数后,结果为:n.123xyZM。 void chg(char *s) int i; char ch=*s; for(i=0;istrlen(s)-1;i+) si=si+1; sstrlen(s)-1=ch; 题目 100(字符替换题)函数 ReadDat() 实现从文件IN.DAT 中读取一篇英文文章存入到字符串数组xx 中,请编制函数CharConvA() ,其函数的功能是:以行为单位把字符串中的最后一个字符的ASC
31、II 值右移 4 位,高位补0 后加最后第二个字符的ASCII 值,得到最后一个新的字符,最后第二个字符的ASCII 值右移 4 位,高位补0 后加最后第三个字符的ASCII 值,得到最后第二个新的字符,依此类推一直处理到第二个字符,第一个字符的ASCII 值加原最后一个字符的ASCII 值,得到第一个新的字符,得到的新字符分别存放在原字符串对应的位置上。最后已处理的字符串仍按行重新存入字符串数组xx 中,最后调用函数writeDat()把结果 xx 输出到文件OUT10.DAT中。void CharConvA() int i,j; char p,c; for(i=0;i0;j-) xxij=
32、(xxij4)+xxij-1; xxi0=p+c; 题目 74(字符 ASCII 值移位替换题)请编制函数StrCharJL(),其函数的功能是:以行为单位把字符串中的所有字符的ASCII 值左移 4 位, 如果左移后, 其字符的 ASCII 值小于等于32 或大于 100,则原字符保持不变,否则就把左移后的字符ASCII 值再加上原字符ASCII 值,得到新的字符仍存入原字符串对应的位置上。最后把已处理的字符串仍按行重新存入字符串数组xx 中, char xx5080; int maxline=0;/*文章的总行数*/ int ReadDat(void); void WriteDat(voi
33、d); void StrCharJL(void) int i,j; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 27 页 - - - - - - - - - char c; for(i=0;imaxline;i+) for(j=0;jstrlen(xxi);j+) c=xxij4; if(!(c100) xxij+=c; 题目 17 (亲朋字符替换题)编制函数 CHA(), 其函数功能是 : 以行为单位把字符串中的第一个字符的ASCII 值加第二个字符的ASCII 值
34、, 得到第一个亲朋字符,第二个字符的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); 四、字
35、符串单词位置倒置题目 3 请编制函数StrOR( ),其函数的功能是:以行为单位依次把字符串中所有小写字母o 左边的字符串内容移到该串的右边存放,然后把小写字母o 删除,余下的字符串内容移到已处理字符串的左边存放,之后把已处理的字符串仍按行重新存入字符串数组xx 中。void StrOR(void) int i,righto,j,s,k; char tem80; for(i=0;i=0;j-) k=0; memset(tem,0,80); if(xxij=o) righto=j; for(s=righto+1;sstrlen(xxi);s+) temk+=xxis; for(s=0;srigh
36、to;s+) if(xxis!=o) temk+=xxis; strcpy(xxi,tem); else continue; 题目 4 函数 StrOL() ,其函数的功能是:以行为单位对行中以空格或标点符号为分隔的所有单词进行倒排。最后把已处理的字符串(应不含标点符号)仍按行重新存入字符串数组xx 中,例如:原文: You He Me I am a student. 结果: Me He You student a am I void StrOL(void) int i,j,k,s,m,strl; char str80; for(i=0;i=0;j-) if(isalpha(xxij) k+;
37、 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); 五、字符串排序题目 9(字符串排序题) 编制函数SortCharD(),其函数的功能是:以行为单位对字符按从大到小的顺序进行排序,排序后的结果仍按行重新存入字符串数组xx 中,例:原文: dAe,BfC. CCbbAA 结果: fedCBA. bbCCAA void SortCharD(void) int i,j,k,strl; char ch; fo
38、r(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; 题目 88(字符串排序题)编制函数 SortCharA(),其函数的功能是:以行为单位对字符按从小到大的顺序进行排序,排序后的结果仍按行重新存入字符串数组xx 中,例:原文: dAe,BfC. CCbbAA 结果: ,.ABCdef void SortCharA(void) int i,j,k,strl; char ch; for(i=0;imaxline;i
39、+) strl=strlen(xxi); for(j=0;jstrl-1;j+) for(k=j+1;kxxik) ch=xxij; xxij=xxik; xxik=ch; 题目 43(字符排序题)请编制函数jsSort(),其函数的功能是:以行为单位对字符串变量的下标为奇数的字符按其ASCII 值从小到大的顺序进行排序,排序后的结果仍按行重新存入字符串数组xx 中,例:位置0 1 2 3 4 5 6 7 源字符串a b c d e f g h 则处理后字符串 a h c f e d g b void jsSort() 名师资料总结 - - -精品资料欢迎下载 - - - - - - - -
40、- - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 27 页 - - - - - - - - - int i,j,k,strl; char ch; for(i=0;i20;i+) strl=strlen(xxi); for(j=1;jstrl-2;j=j+2) for(k=j+2;kxxik) ch=xxij;xxij=xxik;xxik=ch; 字符串左右排序交换题目 44 请编制函数jsSort(),其函数的功能是:以行为单位对字符串按给定的条件进行排序,排序后的结果仍按行重新存入字符串数组xx 中,条件:从字符串中间一分为二,左边部分按字符
41、的ASCII 值降序排序,排序后左边部分与右边部分进行交换。如果原字符串长度为奇数,则最中间的字符不参加处理,字符仍放在原位置上。例如:位置0 1 2 3 4 5 6 7 8 源字符串a b c d h g f e 1 2 3 4 9 8 7 6 5 处理后 h g f e d c b a 8 7 6 5 9 4 3 2 1 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;khalf;k+) if(
42、xxij=0;j-,k-) temp=xxij; xxij=xxik; xxik=temp; 题目 50 编制函数 jsSort(),其函数的功能是: 以行为单位对字符串按给定的条件进行排序,排序后的结果仍按行重新存入字符串数组xx 中,条件:从字符串中间一分为二,左边部分按字符的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 void
43、 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) temp=xxij; xxij=xxik; xxik=temp; for(j=half-1,k=strl-1;j=0;j-,k-) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 27 页 - - - - - - - -
44、- temp=xxij; xxij=xxik; xxik=temp; 题目 71、编制函数jsSort(),条件:从字符串中间一分为二,左边部分按字符的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 void jsSort() int i,j,k,strl,half; char ch; for(i=0;i20;i+) st
45、rl=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+; for(j=half;jstrl-1;j+) for(k=j+1;kxxik) ch=xxij;xxij=xxik;xxik=ch; 六、单词个数统计题目 19 编写一个函数findStr(char *str,char *substr),该函数统计一个长度为2 的子字符串在另一个字符串中出现的次数。例如,假定输入的字符串为asd asasdfg
46、 asd as zx67 asd mklo,子字符串为 as ,函数返回值是6。函数 ReadWrite()实现从文件in.dat中读取两个字符串,并调用函数findStr(),最后把结果输出到文件out.dat中。 int findStr(char *str,char *substr) int i,j,len1,len2,cnt=0,flag; len1=strlen(str); len2=strlen(substr); for(i=0;ilen1;i+) for(j=0;jlen2;j+) if(stri+j=substrj) flag=1; else flag=0;break; if(f
47、lag=1) cnt+; return cnt; 七、 Fibonacci数列题目 20 jsValue,它的功能是:求Fibonacci数列中大于t 的最小的一个数,结果由函数返回。其中Fibonacci数列F(n) 的定义为: F(0)=0,F(1)=1 F(n)=F(n-1)+F(n-2) 例如:当 t=1000 时,函数值为:1597。 int jsValue(int t) int f0=0,f1=1,fn; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 27
48、 页 - - - - - - - - - fn=f0+f1; while(fn=t) f0=f1; f1=fn; fn=f0+f1; return fn; 八、整数排序题目 2 编制一函数jsVal(),其功能是:如果四位数各位上的数字均是0 或 2 或 4 或 6 或 8,则统计出满足此条件的个数 cnt ,并把这些四位数按从大到小的顺序存入数组b 中。void jsVal() int i,j,qw,bw,sw,gw; for(i=0;iMAX;i+) qw=ai/1000; bw=ai/100%10; sw=ai%100/10; gw=ai%10; if(qw&qw%2=0&bw%2=0&
49、sw%2=0&gw%2=0) bcnt+=ai; for(i=0;icnt-1;i+) for(j=i+1;jcnt;j+) if(bibj) qw=bi; bi=bj; bj=qw; 题目 5 编制函数jsSort(),其函数的功能是:要求按每个数的后三位的大小进行升序排列,然后取出满足此条件的前10 个数依次存入数组bb 中,如果后三位的数值相等,则按原先的数值进行降序排列。最后调用函数WriteDat()把结果 bb 输出到文件out.dat中。例:处理前 6012 5099 9012 7025 8088 处理后 9012 6012 7025 8088 5099 void jsSort(
50、) int i,j,data; for(i=0;i199;i+) for(j=i+1;jaaj%1000|aai%1000=aaj%1000&aaiaaj) data=aai;aai=aaj;aaj=data; for(i=0;i10;i+) bbi=aai; 题目 6 编制函数jsSort(),其函数的功能是:要求按每个数的后三位的大小进行降序排列,然后取出满足此条件的前10 个数依次存入数组b 中,如果后三位的数值相等,则按原先的数值进行升序排列。void jsSort() int i,j,data; for(i=0;i199;i+) for(j=i+1;j200;j+) if(aai%1