1、题目 1请编写一个函数 jsValue(int m,int k,int xx),该函数的功能是:将大于整数 m 且紧靠 m 的k 个素数存入数组 xx 传回。 int isP(int m)int i;for(i=2;i0;m+)if(isP(m) xxs+=m; k-;题目 2已知数据文件 IN.DAT 中存有 200 个四位数,并已调用读函数 readDat()把这些数存入数组a 中,请考生编制一函数 jsVal(),其功能是:如果四位数各位上的数字均是 0 或 2 或 4 或6 或 8,则统计出满足此条件的个数 cnt,并把这些四位数按从大到小的顺序存入数组 b 中。void jsVal(
2、) int i,j,qw,bw,sw,gw;for(i=0;i=0;j-) k=0; memset(tem,0,80);if(xxij=o)righto=j; for(s=righto+1;s=0;j-) if(isalpha(xxij) k+; else for(m=1;maaj%1000|aai%1000=aaj%1000aai=aaj;aaj=data;for(i=0;i130) continue;else xxij=xxij*11%256;题目 9(字符串排序题)函数 ReadDat()实现从文件 IN.DAT 中读取一篇英文文章存入到字符串数组 xx 中,请编制函数 SortChar
3、D(),其函数的功能是:以行为单位对字符按从大到小的顺序进行排序,排序后的结果仍按行重新存入字符串数组 xx 中, 例:原文:dAe,BfC.CCbbAA结果:fedCBA.bbCCAAvoid SortCharD(void)int i,j,k,strl;char ch;for(i=0;i=aselli=sellj;sellj=xy;题目 13(结构体运算题)已知在文件 IN.DAT 中存有 100 个产品销售记录,每个产品销售记录由产品代码 dm(字符型 4 位),产品名称 mc(字符型 10 位),单价 dj(整型) ,数量 sl(整型),金额 je(长整型)五部分组成。其中:金额=单价*
4、数量计算得出。函数 ReadDat()是读取这 100 个销售记录并存入结构数组 sell 中。请编制函数 SortDat(),其功能要求:按产品代码从小到大进行排列,若产品代码相等,则按金额从大到小进行排列,最终排列结果仍存入结构数组 sell 中, void SortDat()int i,j;PRO xy;for(i=0;i0|strcmp(selli.dm,sellj.dm)=0else flag=0;break;if(flag=1) bcnt+=ai; for(i=0;ibj) flag=bi;bi=bj;bj=flag;题目 15(整数各位数字运算排序题)已知数据文件 IN.DAT
5、中存有 200 个四位数,并已调用读函数 readDat()把这些数存入数组a 中,请考生编制一函数 jsVal(),其功能是:若一个四位数的千位数字上的值小于等于百位数字上的值,百位数字上的值小于等于十位数字上的值,以及十位数字上的值小于等于个位数字上的值,并且原四位数是偶数,则统计出满足此条件的个数 cnt 并把这些四位数按从小到大的顺序存入数组 b 中,void jsVal()int i,j;int qw,bw,sw,gw;for (i=0;ibj) qw=bi;bi=bj;bj=qw题目 16(字符替换题)函数 ReadDat()实现从文件 IN.DAT 中读取一篇英文文章存入到字符串
6、数组 xx 中,请编制函数 StrCharJR(),其函数的功能是:以行为单位把字符串中所有字符的 ASCII 值右移 4 位,然后把右移后的字符 ASCII 值再加上原字符的 ASCII 值,得到新的字符仍存入原字符串对应的位置上。最后把已处理的字符串仍按行重新存入字符串数组 xx 中,void StrCharJR()int i,j;for(i=0;i4);题目 17 (亲朋字符替换题)函数 READDAT()实现从文件 IN.DAT 中读取一篇英文文章存入到字符串数组 XX 中;请编制函数 CHA(),其函数功能是: 以行为单位把字符串中的第一个字符的 ASCII 值加第二个字符的 ASC
7、II 值,得到第一个亲朋字符,第二个字符的 ASCII 值加第三个字符的 ASCII 值,得到第二个新字符,依此类推一直处理到最后第二个字符,最后一个字符的 ASCII 值加原第一个字符的 ASCII 值,得到最后一个新的字符,得到的新字符分别存放在原字符串对应的位置上。最后把已处理的字符串逆转后按行重新存入字符串数组 XX 中,void ChA(void) int i,j;char ch;for(i=0;i=0.000001);return x1;题目 22(平方根问题)请编写函数 countValue(),它的功能是:求 n 以内(不包括 n)同时能被 3 与 7 整除的所有自然数之和的平
8、方根 s,并作为函数值返回,例如若 n 为 1000 时,函数值应为:s=153.909064。double countValue(int n) int i;double s=0.0;for(i=1;i=half) return 1;else return 0;题目 26(整数统计运算题)已知在文件 IN.DAT 中存有若干个(个数0) totNum+;data=xxi1; if(data%2=0)totCnt+;totPjz+=xxi; if(totCnt=0) totPjz=0;else totPjz/=totCnt;题目 27(整数各位数字运算题)已知数据文件 in.dat 中存有 30
9、0 个四位数,并已调用读函数 ReadDat()把这些数存入数组 a中,请编制一函数 jsValue(),其功能是:求出千位数上的数减百位数上的数减十位数上的数减个位数上的数大于零的个数 cnt,再把所有满足此条件的四位数依次存入数组 b 中,然后对数组 b 的四位数按从小到大的顺序进行排序,例如:9123,9-1-2-30 ,则该数满足条件存入数组 b 中,且个数 cnt=cnt+1。9812,9-8-1-20 ,则该数不满足条件忽略。 jsValue() int i,j,qw,bw,sw,gw;for(i=0;i0) bcnt+=ai;for(i=0;ibj) qw=bi; bi=bj;
10、bj=qw;题目 28(整数各位打散组合运算题)已知数据文件 IN.DAT 中存有 200 个四位数,并已调用读函数 readDat()把这些数存入数组a 中,请考生编制一函数 jsVal(),其功能是:把千位数字和十位数字重新组成一个新的十位数 ab(新十位数的十位数字是原四位数的千位数字,新十位数的个位数字是原四位数的十位数字) ,以及把个位数字和百位数字组成另一个新的十位数 cd(新十位数的十位数字是原四位数的个位数字,新十位数的个位数字是原四位数的百位数字) ,如果新组成的两个十位数 ab-cd=0 且 ab-cd=0for(i=0;i=10 且 ab-cd=10bi=bj;bj=fl
11、ag;题目 31(结构体运算题)已知在文件 IN.DAT 中存有 100 个产品销售记录,每个产品销售记录由产品代码 dm(字符型 4 位),产品名称 mc(字符型 10 位),单价 dj(整型) ,数量 sl(整型),金额 je(长整型)五部分组成。其中:金额=单价*数量计算得出。函数 ReadDat()是读取这 100 个销售记录并存入结构数组 sell 中。请编制函数 SortDat(),其功能要求:按金额从大到小进行排列,若金额相同,则按产品代码从大到小进行排列, 最终排列结果仍存入结构数组 sell 中,void SortDat()int i,j;PRO xy;for(i=0;ise
12、llj.je) xy=selli;selli=sellj;sellj=xy;题目 33(方差运算题)请编制函数 ReadDat()实现从文件 IN.DAT 中读取 1000 个十进制整数到数组 xx 中;请编制函数 Compute()分别计算出 xx 中偶数的个数 even,奇数的平均值 ave1,偶数的平均值 ave2以及方差 totfc 的值,计算方差的公式如下:N 2totfc=1/N (xxi-ave2)i=1设 N 为偶数的个数,xxi为偶数,ave2 为偶数的平均值。for(i=0;i=M,这里 Sn=A1+A2+.+An,并依次把 n 值存入数组单元 b0,b1和 b2中,请编制
13、 jsValue()函数来实现此功能,jsValue()int a1=1,a2=1,a12,sn,k=2;sn=a1+a2;while(1)a12=a1+2*a2;if(sn=100) b0=k;if(sn=1000) b1=k; if(sn=10000) b2=k;break;sn=sn+a12;a1=a2;a2=a12;k+; 运行结果为:M=100,n=6M=1000,n=9M=10000,n=11题目 36(字符替换题)函数 ReadDat()实现从文件 ENG.IN 中读取一篇英文文章,存入到字符串数组 xx 中;请编制函数 encryptChar(),按给定的替代关系对数组 xx
14、中的所有字符进行替代,仍存入数组xx 的对应的位置上,替代关系:f(p)=p*11 mod 256(p 是数组中某一个字符的 ASCII 值,f(p)是计算后新字符的 ASCII 值) ,如果计算后 f(p)值小于等于 32 或 f(p)对应的字符是数字 0 至 9,则该字符不变,否则将 f(p)所对应的字符进行替代。void encryptChar() int i,j;for(i=0;i=0selli=sellj;sellj=xy;题目 39(选票问题)现有一个 10 个人 100 行的选票数据文件 IN.DAT,其数据存放的格式是每条记录的长度均为 10 位,第一位表示第一个人的选中情况,
15、第二位表示第二个人的选中情况,依此类推 :内容均为字符 0 和 1,1 表示此人被选中,0 表示此人未被选中,全选或不选均为无效的选票。给定函数 ReadDat()的功能是把选票数据读入到字符串数组 xx 中。请编制函数CountRs()来统计每个人的选票数并把得票数依次存入 yy0到 yy9中。void CountRs(void) int i,j,count;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=0) totCnt+; totPjz+=xxi;if(tot
16、Cnt=0) totPjz=0;else totPjz/=totCnt;题目 41(SIX/NINE 问题)下列程序 prog1.c 的功能是:计算出自然数 SIX 和 NINE,它们满足的条件是SIX+SIX+SIX=NINE+NINE 的个数 cnt 以及满足此条件所有的 SIX 与 NINE 的和 SUM。请编写函数 countValue()实现程序的要求, 其中的 S, I,X,N ,E 各代表一个十进制数字。void countValue() int s,i,x,n,e,six,nine;for(s=1;sxxik) ch=xxij;xxij=xxik;xxik=ch; 题目 44(
17、字符串左右排序交换题 )函数 ReadDat()实现从文件 in.dat 中读取 20 行数据存放到字符串数组 xx 中(每行字符串长度均小于 80) 。请编制函数 jsSort(),其函数的功能是:以行为单位对字符串按给定的条件进行排序,排序后的结果仍按行重新存入字符串数组 xx 中,条件:从字符串中间一分为二,左边部分按字符的 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则处理后字符串
18、h g f e d c b a8 7 6 5 9 4 3 2 1void jsSort() int i,j,k,strl,half;char temp;for(i=0;i=0;j-,k-)temp=xxij; xxij=xxik; xxik=temp;题目 45(数字统计排序题 )已知数据文件 IN.DAT 中存有 200 个四位数,并已调用读函数 readDat()把这些数存入数组a 中,请考生编制一函数 jsVal(),其功能是:依次从数组 a 中取出一个四位数,如果该四位数连续大于该四位数以前的五个数且该数是偶数(该四位数以前不满五个数,则不统计) ,则统计出满足此条件的个数 cnt 并
19、把这些四位数按从大到小的顺序存入数组 b 中,void jsVal()int i,j,flag;for(i=5;iajelse flag=0; break;if(flag=1) bcnt+=ai; for(i=0;iajelse flag=0;break;if(flag=1) bcnt+=ai;for(i=0;i0) xy=selli;selli=sellj;sellj=xy;题目 48(整数各位数字运算题 )已知数据文件 in.dat 中存有 300 个四位数,并已调用读函数 ReadDat()把这些数存入数组 a中,请编制一函数 jsValue(),其功能是:求出千位数上的数加个位数上的数
20、等于百位数上的数加十位数上的数的个数 cnt,再把所有满足此条件的四位数依次存入数组 b 中,然后对数组 b 的四位数按从小到大的顺序进行排序,例如:6712,6+2=7+1,则该数满足条件存入数组 b 中,且个数 cnt=cnt+1。8129,8+90 ,则该数满足条件计算平均值 pjz1,且个数 cnt=cnt+1。9812,9-8-1-20) cnt+;pjz1+=ai;else n+;pjz2+=ai; if(cnt=0) pjz1=0;else pjz1/=cnt;if(n=0) pjz2=0;else pjz2/=n; 题目 50(字符串左右排序交换题 )函数 ReadDat()实
21、现从文件 in.dat 中读取 20 行数据存放到字符串数组 xx 中(每行字符串长度均小于 80) 。请编制函数 jsSort(),其函数的功能是:以行为单位对字符串按给定的条件进行排序,排序后的结果仍按行重新存入字符串数组 xx 中, 条件:从字符串中间一分为二,左边部分按字符的 ASCII 值升序排序,排序后左边部分与右边部分进行交换。如果原字符串长度为奇数,则最中间的字符不参加处理,字符仍放在原位置上。例如:位置 0 1 2 3 4 5 6 7 8源字符串 d c b a h g f e 4 3 2 1 9 8 7 6 5则处理后字符串 h g f e a b c d8 7 6 5 9
22、 1 2 3 4void jsSort() int i,j,k,strl,half;char temp;for(i=0;ixxik)temp=xxij; xxij=xxik; xxik=temp; for(j=half-1,k=strl-1;j=0;j-,k-)temp=xxij; xxij=xxik; xxik=temp;题目 51(整数各位打散组合运算题)没有提供求素数函数 isprime() ,可自己编制已知数据文件 IN.DAT 中存有 200 个四位数,并已调用读函数 readDat()把这些数存入数组a 中,请考生编制一函数 jsVal(),其功能是:把千位数字和十位数字重新组成一
23、个新的十位数(新十位数的十位数字是原四位数的千位数字,新十位数的个位数字是原四位数的十位数字) ,以及把个位数字和百位数字组成另一个新的十位数(新十位数的十位数字是原四位数的个位数字,新十位数的个位数字是原四位数的百位数字) ,如果新组成的两个十位数均是素数且新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组 b 中,并要计算满足上述条件的四位数的个数 cnt。int isprime(int m)int i;for(i=2;i=10 for(i=0;i=10 for(i=0;i0,则该数满足条件存入数组 b 中,且个数 cnt=cnt+1。9812,9-8-1-20 ,则该
24、数不满足条件忽略。jsValue() int i,j,qw,bw,sw,gw;for(i=0;i0) bcnt+=ai; for(i=0;ibj) qw=bi;bi=bj;bj=qw;题目 54(整数各位数运算排序题)已知数据文件 in.dat 中存有 300 个四位数,并已调用读函数 ReadDat()把这些数存入数组 a中,请编制一函数 jsValue(),其功能是:求出千位数上的数加百位数上的数等于十位数上的数加个位数上的数的个数 cnt,再把所有满足此条件的四位数依次存入数组 b 中,然后对数组 b 的四位数按从大到小的顺序进行排序,例如:7153,7+1=5+3,则该数满足条件存入数
25、组 b 中,且个数 cnt=cnt+1。8129,8+11; if(data%2)totCnt+;totPjz+=xxi;if(totCnt=0) totPjz=0;else totPjz/=totCnt;题目 71(字符串左右排序题)函数 ReadDat()实现从文件 in.dat 中读取 20 行数据存放到字符串数组 xx 中(每行字符串长度均小于 80) 。请编制函数 jsSort(),其函数的功能是:以行为单位对字符串按给定的条件进行排序,排序后的结果仍按行重新存入字符串数组 xx 中,最后调用函数 WriteDat()把结果 xx 输出到文件 out.dat 中。条件:从字符串中间一
26、分为二,左边部分按字符的 ASCII 值降序排序,右边部分按字符的 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则处理后字符串 d c b a e f g h4 3 2 1 9 5 6 7 8void jsSort()int i,j,k,strl,half;char ch;for(i=0;ixxik) ch=xxij;xxij=xxik;xxik=ch;题目 72(整数各位打散组合运算题)已知数据文件 IN.DAT 中存有
27、200 个四位数,并已调用读函数 readDat()把这些数存入数组a 中,请考生编制一函数 jsVal(),其功能是:把个位数字和千位数字重新组成一个新的十位数(新十位数的十位数字是原四位数的个位数字,新十位数的个位数字是原四位数的千位数字) ,以及把百位数字和十位数字组成另一个新的十位数(新十位数的十位数字是原四位数的百位数字,新十位数的个位数字是原四位数的十位数字) ,如果新组成的两个十位数均是偶数并且两个十位数中至少有一个数能被 9 整除,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组 b 中,并要计算满足上述条件的四位数的个数 cnt。void jsV
28、al()int i,j,thou,hun,ten,data,ab,cd;for(i=0;i=b 题目 75 (整数各位数运算及排序题)在文件 in.dat 中有 200 组数据,每组有 3 个数,每个数均是三位数。函数 ReadDat()读取这200 组数据存放到结构数组 aa 中,请编制函数 jsSort(),其函数的功能是:要求在 200 组数据中找出条件为每组中的第一个数大于第二个数加第三个数的和,其中满足条件的组数作为函数 jsSort()的返回值,同时把满足条件的数据存入结构数组 bb 中,再对 bb 中的数据按照每组数据的第一个数加第三个之和的大小进行升序排列(第一个数加第三个数的
29、和均不相等) ,排序后的结果仍重新存入结构数组 bb 中,int jsSort() int i,j,cnt=0;data xy;for(i=0;i(aai.x2+aai.x3) bbcnt+=aai;for(i=0;ibbj.x1+bbj.x3) xy=bbi; bbi=bbj; bbj=xy;return cnt;题目 76(整数各位打散组合运算题)已知数据文件 IN.DAT 中存有 200 个四位数,并已调用读函数 readDat()把这些数存入数组a 中,请考生编制一函数 jsVal(),其功能是:把个位数字和千位数字重新组成一个新的十位数(新十位数的十位数字是原四位数的个位数字,新十位
30、数的个位数字是原四位数的千位数字) ,以及把百位数字和十位数字组成另一个新的十位数(新十位数的十位数字是原四位数的百位数字,新十位数的个位数字是原四位数的十位数字) ,如果新组成的两个十位数必须是一个奇数,另一个为偶数并且两个十位数中至少有一个数能被 17 整除,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组 b 中,并要计算满足上述条件的四位数的个数 cnt。void jsVal()int i,j,thou,hun,ten,data,ab,cd;for(i=0;i=10for(i=0;ibj) thou=bi;bi=bj;bj=thou;题目 78(整数各位统
31、计排序题)已知数据文件 IN.DAT 中存有 200 个四位数,并已调用读函数 readDat()把这些数存入数组a 中,请考生编制一函数 jsVal(),其功能是:若一个四位数的千位数字上的值大于等于百位数字上的值,百位数字上的值大于等于十位数字上的值,以及十位数字上的值大于等于个位数字上的值,并且原四位数是奇数,则统计出满足此条件的个数 cnt 并把这些四位数按从小到大的顺序存入数组 b 中,void jsVal()int i,j,thou,hun,ten,data;for(i=0;i=hun for(i=0;ibj) thou=bi;bi=bj;bj=thou;题目 79(数字运算题)请
32、编写函数 void countValue(int *a,int *n),它的功能是:求出 1 到 1000 之内能被 7 或 11 整除但不能同时被 7 或 11 整除的所有整数放在数组 a 中,并通过 n 返回这些数的个数。void countValue(int *a,int *n) int i;*n=0;for(i=1;i0 ,则该数满足条件计算平均值 pjz1,且个数 cnt=cnt+1。8129,9-8-1-20) cnt+; pjz1+=ai;else n+; pjz2+=ai;if(cnt=0) pjz1=0;else pjz1/=cnt;if(n=0) pjz2=0;else p
33、jz2/=n;题目 81(整数各位数运算题)已知数据文件 in.dat 中存有 300 个四位数,并已调用读函数 ReadDat()把这些数存入数组 a中,请编制一函数 jsValue(),其功能是:求出千位数上的数加百位数等于十位数上的数加个位数上的数的个数 cnt,再求出所有满足此条件的四位数平均值 pjz1,以及不满足此条件的四位数平均值 pjz2,例如:7153,7+1=5+3,则该数满足条件计算平均值 pjz1,且个数cnt=cnt+1。8129,8+12+9,则该数不满足条件计算平均值 pjz2。jsValue()int i,thou,hun,ten,data,n=0;for(i=
34、0;i300;i+)thou=ai/1000; hun=ai%1000/100;ten=ai%100/10; data=ai%10;if(thou+hun=ten+data) cnt+;pjz1+=ai;else n+;pjz2+=ai;if(cnt=0) pjz1=0;else pjz1/=cnt;if(n=0) pjz2=0;else pjz2/=n;题目 82(素数题)已知数据文件 in.dat 中存有 300 个四位数,并已调用读函数 ReadDat()把这些数存入数组 a中,请编制一函数 jsValue(),其功能是:求出所有这些四位数是素数的个数 cnt,再求出所有满足此条件的四位
35、数平均值 pjz1,以及不满足此条件的四位数平均值 pjz2,例如:5591 是素数,则该数满足条件计算平均值 pjz1,且个数 cnt=cnt+1。9812 是非素数,则该数不满足条件计算平均值 pjz2。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(cnt=0) pjz1=0;else pjz1/=cnt;if(300-cnt=0) pjz2=0;else pjz2/=(
36、300-cnt);题目 83(方差运算题)请编制函数 ReadDat()实现从文件 IN.DAT 中读取 1000 个十进制整数到数组 xx 中;请编制函数 Compute()分别计算出 xx 中奇数的个数 odd,奇数的平均值 ave1,偶数的平均值 ave2以及所有奇数的方差 totfc 的值,最后调用函数 WriteDat()把结果输出到 OUT.DAT 文件中。计算方差的公式如下:N 2totfc=1/N (xxi-ave1)i=1设 N 为奇数的个数,xxi为奇数,ave1 为奇数的平均值。for(i=0;iMAX;i+)fscanf(fp,“%d,“,if(i+1)%10=0)fscanf(fp,“n“);fclose(fp);return 0;void Compute(void)