全国计算机等级考试三级C语言南开100道分类提纲版附答案_第1页
全国计算机等级考试三级C语言南开100道分类提纲版附答案_第2页
全国计算机等级考试三级C语言南开100道分类提纲版附答案_第3页
全国计算机等级考试三级C语言南开100道分类提纲版附答案_第4页
全国计算机等级考试三级C语言南开100道分类提纲版附答案_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、一、素数: 1 34 55 64 66 821: 将大于整数m且紧靠m的k个素数存入数组xx传回34:选出100以上1000之内所有个位数字与十位数字之和被10除所得余数恰是百位数字的素数55:求出300个四位数是素数的个数,并从小到大进行排序64:找出所有100以内(含100)满足I,I+4,I+10都是素数的整数I(I+10也在100以内)的个数以及这些I之和66:计算500-800内素数的个数,按从大到小顺序计算其间隔加、减之和82:求出300个四位数是素数的个数,再求出所有满足此条件的四位数平均值pjz1以及不满足此条件的四位数平均值pjz2二、结构体操作: 7 13 38 12 32

2、 42 31 47 61 99 60 757: 按产品代码从大到小进行排列,若产品代码相同,则按金额从大到小进行排列13:按产品代码从小到大进行排列,若产品代码相等,则按金额从大到小进行排列38:按产品代码从小到大进行排列,若产品代码相同,则按金额从小到大进行排列12:按产品名称从小到大进行排列,若产品名称相等,则按金额从小到大进行排列32:按产品名称从大到小进行排列,若产品名称相等,则按金额从小到大进行排列42:按产品名称从大到小进行排列,若产品名称相等,则按金额从大到小进行排列31:按金额从大到小进行排列,若金额相同,则按产品代码从大到小进行排列47:按金额从大到小进行排列,若金额相等,则

3、按产品代码从小到大进行排列61:按金额从小到大进行排列,若金额相同,则按产品代码从大到小进行排列99:按金额从小到大进行排列,若金额相等,则按产品代码从小到大进行排列60: 有200组数据,每组有3个数,每个数均是三位数,找出条件为每组中第二个数大于第一个数加第三 个数的之和,存入结构数组bb中,再对bb中的数据按照每组数据的第二个数加第三个之和的大小进行 降序排列75: 有200组数据,每组有3个数,每个数均是三位数,找出条件为每组中第一个数大于第二个数加第三个 数的和,存入结构数组bb中,再对bb中的数据按照每组数据的第一个数加第三个之和的大小进行升序 排列 if(aai.x1>(a

4、ai.x2+aai.x3) bbcnt+=aai; if(bbi.x1+bbi.x3>bbj.x1+bbj.x3) xy=bbi; bbi=bbj; bbj=xy;三、字符替换与移位: 8 36 56 62 98 95 96 18 37 97 10 73 11 63 16 100 74 178: f(p)值小于等于32或大于130,则该字符不变36:f(p)值小于等于32或f(p)对应的字符是数字0至9,则该字符不变56:f(p)值小于等于32或f(p)对应的字符是小写字母,则该字符不变62:f(p)值小于等于32或其ASCII值是偶数,则该字符不变98:f(p)值小于等于32或其ASC

5、II值是奇数,则该字符不变95:f(p)值小于等于32或f(p)对应的字符是大写字母,则该字符不变96:f(p)值小于等于32或f(p)对应的字符是小写字母,则该字符不变18:原字符的ASCII值是偶数或计算后f(p)值小于等于32,则该字符不变37:原字符是大写字母或计算后f(p)值小于等于32,则该字符不变97:原字符是数字字符0至9或计算后f(p)值小于等于32,则该字符不变10:把字符串中的所有小写字母改写成该字母的下一个字母,如果是字母z,则改写成字母a73:把字符串中的所有小写字母改写成该字母的上一个字母,如果是字母a,则改写成字母z11:把s字符串中的所有字母改写成该字母的下一个

6、字母,字母z改写成字母a (指针)63:把s字符串中的所有字符左移一个位置,串中的第一个字符移到最后 (指针)16:把字符串中所有字符的ASCII值右移4位,然后把右移后的字符ASCII值再加上原字符的ASCII值74:把字符串中所有字符的ASCII值左移4位,如果左移后,其字符的ASCII值小于等于32或大于100,则原字符保持不变,否则就把左移后的字符ASCII值再加上原字符ASCII值,得到新的字符100:把字符串中的最后一个字符的ASCII值右移4位后加最后第二个字符的ASCII值,得到最后一个新的字符,第一个字符的ASCII值加原最后一个字符的ASCII值,得到第一个新的字符17:第

7、一个字符加第二个字符=新字符,最后逆排序 strrev(xxi);四、字符串位置倒置: 33:把字符串中所有小写字母o左边的字符串内容移到该串的右边存放,然后把小写字母o删除,余下的字符串内容移到已处理字符串的左边存放五、字符串单词倒置: 44:对行中以空格或标点符号为分隔的所有单词进行倒排.最后把已处理的字符串(应不含标点符号)仍按行重新存入字符串数组xx中六、字符串左右排序交换: 44 50 7144: 从字符串中间一分为二,左边部分按字符的ASCII值降序排序,排序后左边部分与右边部分进行交换,如果原字符串长度为奇数,则最中间的字符不参加处理,字符仍放在原位置上50: 从字符串中间一分为

8、二,左边部分按字符的ASCII值升序排序,排序后左边部分与右边部分进行交换,如果原字符串长度为奇数,则最中间的字符不参加处理,字符仍放在原位置上71:从字符串中间一分为二,左边部分按字符的ASCII值降序排序,右边部分按字符的ASCII值升序排序,如果原字符串长度为奇数,则最中间的字符不参加排序,字符仍放在原位置上七、字符串排序: 9 88 439: 对字符按从大到小的顺序进行排序88:对字符按从小到大的顺序进行排序43:对字符串变量的下标为奇数的字符按其ASCII值从小到大的顺序进行排序八、单词个数统计: 1919:统计一个长度为2的子字符串在另一个字符串中出现的次数九、Fibonacci数

9、列: 2020: 求Fibonacci数列中大于t的最小的一个数 while(fn<=t) . return fn;十、迭代方法求方程: 21 do.while(fabs(x0-x1)>=0.000001);十一、平方根: 2222: 求n以内(不包括n)同时能被3与7整除的所有自然数之和的平方根s return sqrt(s);十二、实数运算: 2323: 求出N个实数的平均值aver,以及实数的整数部分之和sumint以及小数部分之和sumdec十三、完全平方数: 2424: 100至999中寻找符合条件的整数并依次从小到大存入数组中,它既是完全平方数,又是两位数字相同 for

10、(j=10;j*j<=i;j+) if(i=j*j&&(bw=sw|sw=gw|gw=bw) bbcnt+=i; return cnt;十四、回文数: 25 ltoa(n,xy,10);25: 寻找并输出11至999之间的数m,它满足m,m2和m3均为回文数十五、整数排序: 2 5 6 14 30 45 46 902: 把四位数各位上均是0或2或4或6或8的数从大到小的顺序存入数组b中5: 按每个数的后三位的大小进行升序排列,如果后三位的数值相等,按原先的数值进行降序排列6: 降序 , 升序14: 如果该四位数连续大于该四位数以后的五个数且该数是奇数,把这些四位数按从小到

11、大的顺序存入数组b中 for(j=i+1;j<=i+5;j+) if(ai>aj&&ai%2) flag=1; else flag=0;break;30: 小于 偶数, 从小到大45: 大于该四位数以前 偶数, 从大到小46: 大于 奇数,且该数必须能被7整除,把这些四位 数按从大到小的顺序存入数组b中 for(j=i-5;j<i;j+) if(ai>aj&&ai%2&&ai%7=0) flag=1; else flag=0;break;90: 将一正整数序列K1,K2,.,K9重新排列成一个新的序列.新序列中,比K1小的

12、数都在K1的前面,比K1大的数都在K1的后面十六、整数统计运算: 26 70 40 65 91 94 92 7926: 求出正整数totNum个数以及这些数右移1位后产生的新数是偶数的数的个数totCnt和满足此条件的这些数(右移前的值)的算术平均值totPjz70: 求出正整数totNum个数以及这些数右移1位后产生的新数是奇数的数的个数totCnt和满足此条件的这些数(右移前的值)的算术平均值totPjz40: 求出正整数totNum个数以及这些数各位数字之和是偶数的数的个数totCnt和满足此条件的这些数的算术平均值totPjz65: 求出正整数totNum个数以及这些数各位数字之和是奇

13、数的数的个数totCnt和满足此条件的这些数的算术平均值totPjz91: 200个整数,求出奇数的个数cnt1和偶数的个数cnt2以及数组下标为偶数的元素值的算术平均值pj(保留2位小数)94: 200个整数,求出奇数的个数cnt1和偶数的个数cnt2以及数组xx中值为偶数的算术平均值pj(保留2位小数)92: 200个整数,求出最大数max及最大数的个数cnt和数组xx中能被3整除或能被7整除的算术平均值pj(保留2位小数)79: 求出1到1000之内能被7或11整除但不能同时被7或11整除的所有整数放在数组a中,并通过n返回这些数的个数 (指针) if(i%7=0&&i%

14、11|i%7&&i%11=0) a(*n)+=i;十七、整数各位数字运算: 68 15 78 69 85 77 89 27 53 48 54 49 80 81 87 6768: 200个四位数,如果四位数各位上的数字均是奇数,则统计出满足此条件的个数cnt并把这些四位数按从大到小的顺序存入数组b中 if(thou&&thou%2&&hun%2&&ten%2&&data%2)15: 200个四位数,若一个四位数的千位数字上的值小于等于百位数字上的值,百位数字上的值小于等于十位数字上的值,以及十位数字上的值小于等于个位

15、数字上的值,并且原四位数是偶数,则统计出满足此条件的个数cnt并把这些四位数按从小到大的顺序存入数组b中78: 200个四位数,若一个四位数的千位数字上的值大于等于百位数字上的值,百位数字上的值大于等于十位数字上的值,以及十位数字上的值大于等于个位数字上的值,并且原四位数是奇数,则统计出满足此条件的个数cnt并把这些四位数按从小到大的顺序存入数组b中69: 200个四位数,把一个四位数的千位数字上的值减去百位数字上的值再减去十位数字上的值最后减去个位数字上的值,如果得出的值大于等于零且原四位数是奇数,则统计出满足此条件的个数cnt并把这些四位数按从小到大的顺序存入数组b中 if(thou-hu

16、n-ten-data>=0& &ai%2) bcnt+=ai;85: 200个四位数,把一个四位数的个位数字上的值减去千位数字上的值再减去百位数字上的值最后减去十位数字上的值,如果得出的值大于等于零且原四位数是偶数,则统计出满足此条件的个数cnt并把这些四位数按从小到大的顺序存入数组b中 if(data-thou-hun-ten>=0& &ai%2=0) bcnt+=ai;77: 200个四位数,把一个四位数的千位数字上的值加上十位数字上的值恰好等于百位数字上的值加上个位数字上的值,并且原四位数是偶数,则统计出满足此条件的个数cnt并把这些四位数按从

17、小到大的顺序存入数组b中 if(thou+ten=hun+data)&&ai%2=0) bcnt+=ai;89: 200个四位数,把一个四位数的千位数字上的值加上个位数字上的值恰好等于百位数字上的值加上十位数字上的值,并且原四位数是奇数,则统计出满足此条件的个数cnt并把这些四位数按从小到大的顺序存入数组b中 if(qw+gw)=(sw+bw)&&ai%2) bcnt+=ai;27: 300个四位数,求出千位数上的数减百位数上的数减十位数上的数减个位数上的数大于零的个数cnt,再把所有满足此条件的四位数依次存入数组b中,然后对数组b的四位数按从小到大的顺序进行排

18、序53: 300个四位数,求出千位数上的数减百位数上的数减十位数上的数减个位数上的数大于零的个数cnt,再把所有满足此条件的四位数依次存入数组b中,然后对数组b的四位数按从小到大的顺序进行排序48: 300个四位数,求出千位数上的数加个位数上的数等于百位数上的数加十位数上的数的个数cnt,再把所有满足此条件的四位数依次存入数组b中,然后对数组b的四位数按从小到大的顺序进行排序54: 300个四位数,求出千位数上的数加百位数上的数等于十位数上的数加个位数上的数的个数cnt,再把所有满足此条件的四位数依次存入数组b中,然后对数组b的四位数按从大到小的顺序进行排序49: 300个四位数,求出千位数上

19、的数减百位数减十位数上的数减个位数上的数大于零的个数cnt,再求出所有满足此条件的四位数平均值pjz1,以及不满足此条件的四位数平均值pjz280: 300个四位数,求出个位数上的数减千位数上的数减百位数上的数减十位数上的数大于零的个数cnt,再求出所有满足此条件的四位数平均值pjz1,以及不满足此条件的四位数平均值pjz281: 300个四位数,求出千位数上的数加百位数等于十位数上的数加个位数上的数的个数cnt,再求出所有满足此条件的四位数平均值pjz1,以及不满足此条件的四位数平均值pjz287: 300个四位数,求出千位数上的数加个位数等于百位数上的数加十位数上的数的个数cnt,再求出所

20、有满足此条件的四位数平均值pjz1,以及不满足此条件的四位数平均值pjz267: 5000以内,千位数字与百位数字之和等于十位数字与个位数字之和,且千位数字与百位数字之和等于个位数字与千位数字之差的10倍.计算并输出这些四位自然数的个数cnt以及这些数的和sum十八、整数各位打散组合运算: 28 29 51 52 72 76 59 8628: 200个四位数,把千位数字和十位数字重新组成一个新的十位数ab,以及把个位数字和百位数字组成另一个新的十位数cd,如果新组成的两个十位数ab- cd>=0且ab-cd<=10且两个数均是奇数,同时两个新数的十位数字均不为零,则将满足此条件的四

21、位数按从大到小的顺序存入数组b中, 并要计算满足上述条件的四位数的个数cnt if(ab-cd)>=0&&(ab-cd)<=10&&ab%2=1&&cd%2=1&&ab>=10&&cd>=10)29: 200个四位数,把千位数字和十位数字重新组成一个新的十位数ab,以及把个位数字和百位数字组成另一个新的十位数cd,如果新组成的两个十位数ab- cd>=10且ab-cd<=20且两个数均是偶数,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组b 中,并

22、要计算满足上述条件的四位数的个数cnt if(ab-cd>=10&&ab-cd<=20&&ab%2=0&&cd%2=0&&qw!=0&&gw!=0)51: 200个四位数,把千位数字和十位数字重新组成一个新的十位数,以及把个位数字和百位数字组成另一个新的十位数,如果新组成的两个十位数均是素数且新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组b中,并要计算满足上述条件的四位数的个数cnt52: 200个四位数,把千位数字和个位数字重新组成一个新的十位数,以及把百位数字和十位数字组成另

23、一个新的十位数,如果新组成的两个十位数均是奇数并且两个十位数中至少有一个数能被5整除,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组b中,并要计算满足上述条件的四位数的个数cnt if(ab%2&&cd%2&&(ab%5=0|cd%5=0)&&ab>=10&&cd>=10)72: 200个四位数,把个位数字和千位数字重新组成一个新的十位数,以及把百位数字和十位数字组成另一个新的十位数,如果新组成的两个十位数均是偶数并且两个十位数中至少有一个数能被9整除,同时两个新数的十位数字均不为零,则

24、将满足此条件的四位数按从大到小的顺序存入数组b中,并要计算满足上述条件的四位数的个数cnt if(ab%9=0|cd%9=0)&&ab%2=0&&cd%2=0&&hun!=0&&data!=0)76: 200个四位数,把个位数字和千位数字重新组成一个新的十位数,以及把百位数字和十位数字组成另一个新的十位数,如果新组成的两个十位数必须是一个奇数, 另一个为偶数并且两个十位数中至少有一个数能被17整除,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组b中,并要计算满足上述条件的四位数的cnt if(ab%

25、2!=cd%2)&&(ab%17=0|cd%17=0)&&ab>=10&&cd>=10)59: 200个四位数,把千位数字和十位数字重新组成一个新的十位数ab,以及把个位数字和百位数字组成另一个新的十位数cd,如果新组成的两个十位数 ab<cd,ab必须是奇数且不能被5整除,cd必须是偶数,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组b 中,并要计算满足上述条件的四位数的个数cnt if(ab-cd)<0&&ab%2=1&&ab%5!=0)&&

26、;cd%2!=1&&ab>=10&&cd>=10)86: 200个四位数,把千位数字和十位数字重新组成一个新的十位数ab,以及把个位数字和百位数字组成另一个新的十位数cd,如果新组成的两个十位数 ab>cd,ab必须是偶数且能被5整除,cd必须是奇数,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组b 中,并要计算满足上述条件的四位数的个数cnt if(ab-cd)>0&&(ab%2!=1&&ab%5=0)&&cd%2=1&&ab>=10&

27、amp;&cd>=10)十九、方差运算: 33 83 9333: 计算出xx中偶数的个数even,奇数的平均值ave1,偶数的平均值ave2以及方差totfc的值83: 计算出xx中奇数的个数odd,奇数的平均值ave1,偶数的平均值ave2以及所有奇数的方差totfc的值93: 分别计算出xx中奇数的个数odd,偶数的个数even,平均值aver以及方差totfc的值 for(i=0;i<MAX;i+) totfc+=(xxi-aver)*(xxi-aver); totfc/=MAX;二十、级数运算: 3535: Sn<M且Sn+1>=M,这里Sn=A1+A2

28、+.+An,并依次把n值存入数组单元b0,b1和b2中二十一、选票: 39 58 8439: 内容均为字符0和1,1表示此人被选中,0表示此人未被选中,全选或不选均为无效的选票58: 内容均为字符0和1,1表示此人被选中,0表示此人未被选中,若一张选票人数小于等于5个人时被认为无效的选票84: 内容均为字符0和1,1表示此人被选中,0表示此人未被选中,若一张选票人数大于5个人时被认为无效的选票二十二、SIX/NINE: 4141: 计算出自然数SIX和NINE,它们满足的条件是SIX+SIX+SIX=NINE+NINE的个数cnt以及满足此条件所有的SIX与NINE的和SUM二十三、出圈: 5

29、7习 题 解 答第1题答案void num(int m, int k, int xx)/* 定义整型变量data,并初始化为m+1(即大于整数m且紧靠m的第1个整数) */int data = m+1;int half, n = 0, i;while(1)/* 判断data是否为素数 */half = data/2;for (i=2; i<=half; i+)if (data%i = 0)break;if (i > half) /* 如果此时i>half说明data是一个素数 */xxn = data; /* 将data存入数组xx */n+; /* 让计数变量n增1 */*

30、 如果已经找足k个素数了,就通过break语句跳出循环 */if (n >= k)break;data+; /* 继续找下一个素数 */第2题答案void jsVal()int bb4;int i, j, k, flag;for (i=0; i<200; i+) /* 循环以遍历数组a中的每一个四位数 */bb0 = ai/1000; /* 将ai的千位数字存入bb0 */bb1 = ai%1000/100; /* 将ai的百位数字存入bb1 */bb2 = ai%100/10; /* 将ai的十位数字存入bb2 */bb3 = ai%10; /* 将ai的个位数字存入bb3 */

31、for (j=0; j<4; j+) /* 循环以遍历数组bb,即ai的每一位 */* 根据当前位是否能被2整除,来设置旗标变量flag为1还是0 */if (bbj%2 = 0)flag = 1;elseflag = 0;/* 如果有1位不能被2整除,后面的位就不必判断了,跳出该循环 */break;if (flag = 1) /* 如果此时flag的值为1说明所有位均能被2整除 */bcnt = ai; /* 将此数存入数组b */cnt+; /* 计数值cnt增1 */* 对数组b的前cnt个数进行选择排序 */for (i=0; i<cnt-1; i+)for (j=i+1

32、; j<cnt; j+)/* 如果bi因小于它后面的数bj而交换两者,说明此排序为降序 */if (bi < bj)k = bi;bi = bj;bj = k;2第3题答案void StrOR(void)int i, j, k;char buf80;for (i=0; i<maxline; i+) /* 循环以遍历英文文章的每一行 */j = strlen(xxi)-1; /* 求出当前行最后一个字符的位置 */* 从最后一个字符往前循环遍历当前行,直到碰到小写字母'o'或到行首 */while (xxij!='o' && j&

33、gt;=0)j-;if (j < 0) /* 如果j<0说明找到行首也没发现一个'o' */continue; /* 则当前行不用操作,去下一行 */* 找到字母'o',用字符串结束标志0(或写成'0')替换之,使该行一分为二 */xxij = 0;strcpy(buf, &xxij+1); /* 将后半截字符串复制到缓存行buf中 */* 从第1个字符开始循环遍历前半截字符串 */k = j = 0;while (xxij)/* 循环往后遍历,找出第1个小写字母'o'的位置或到达字符串末尾 */while (

34、xxij!='o' && xxij)j+;if (!xxij) /* 如果!xxij为真,说明已到达字符串末尾 */* 将找过的这段字符串连接到buf中已存字符串的末尾并跳出循环 */strcat(buf, &xxik);break;/* 如果找到了字母'o',用0替换之以分割出找过的这段字符串 */xxij = 0;/* 将找过的这段字符串连接到buf中已存字符串的末尾 */strcat(buf, &xxik);/* 从下一个位置开始继续循环遍历剩下的字符串 */j+;k = j;/* 执行到这里,当前行已遍历完毕,用操作结果覆

35、盖掉原来内容 */strcpy(xxi, buf);第4题答案void StrOL(void)int i, j, k, strl, l;/* 循环遍历英文文章的全部字符,将既不是字母也不是空格的字符替换成空格 */for (i=0; i<maxline; i+)for (j=0; j<(int)strlen(xxi); j+)if (!isalpha(xxij) && xxij!=' ')xxij = ' 'for (l=0; l<maxline; l+) /* 循环以遍历文章的每一行 */char ch80 = 0;char

36、pp80 = 0;strl = strlen(xxl);i = strl-1; /* 求出当前行最后一个字符的位置 */k = 0;while(1)/* 从最后一个字符往前循环遍历当前行,直到碰到非字母字符或到行首*/* (即以从后往前的顺序查找单词) */while (isalpha(xxli) && i>=0)/* 将字符数组pp中的前k+1个字符往后移动一位 */for (j=k; j>=0; j-)ppj+1 = ppj;pp0 = xxli; /* 将当前字符存入到pp的第1个位置 */3k+; /* pp中的有效字符数增1 */i-; /* 继续遍历前一

37、个字符 */strcat(ch, pp); /* 将pp中的单词连接到字符数组ch的末尾 */strcpy(pp, ""); /* 清空pp数组 */k = 0;if (i < 0)break; /* 若已遍历到行首则跳出该循环 */* 从后往前循环遍历当前行,直到碰到字母字符或到行首 */* (即以从后往前的顺序查找两个单词之间的字符) */while (!isalpha(xxli) && i>=0)/* 将字符数组pp中的前k+1个字符往后移动一位 */for (j=k; j>=0; j-)ppj+1 = ppj;pp0 = xxli;

38、 /* 将当前字符存入到pp的第1个位置 */k+; /* pp中的有效字符数增1 */i-; /* 继续遍历前一个字符 */strcat(ch, pp); /* 将pp中的字符串连接到ch的末尾 */strcpy(pp, ""); /* 清空pp数组 */k = 0;if (i < 0)break; /* 若已遍历到行首则跳出该循环 */* 执行到这里,当前行已遍历完毕,用操作结果覆盖掉原来内容 */strcpy(xxl, ch);第5题答案void jsSort()int i, j, data;/* 对数组aa的所有200个数进行选择排序 */for (i=0;

39、i<199; i+)for (j=i+1; j<200; j+)/* 按每个数后三位的大小进行升序排列 */if (aai%1000 > aaj%1000)data = aai;aai = aaj;aaj = data;else if (aai%1000 = aaj%1000) /* 若后三位相等则按实际大小进行降序排列 */if (aai < aaj)data = aai;aai = aaj;aaj = data;for (i=0; i<10; i+) /* 取出排序后数组aa中的前10个数存入数组bb */bbi = aai;第6题答案void jsSort(

40、)int i, j, data;/* 对数组aa的所有200个数进行选择排序 */for (i=0; i<199; i+)for (j=i+1; j<200; j+)/* 按每个数后三位的大小进行降序排列 */if (aai%1000 < aaj%1000)data = aai;4aai = aaj;aaj = data;else if (aai%1000 = aaj%1000) /* 若后三位相等则按实际大小进行升序排列 */if (aai > aaj)data = aai;aai = aaj;aaj = data;for (i=0; i<10; i+) /*

41、取出排序后数组aa中的前10个数存入数组bb */bbi = aai;第7题答案void SortDat()int i, j;PRO xy;/* 对数组sell的所有100条记录进行选择排序 */for (i=0; i<99; i+)for (j=i+1; j<100; j+)/* 按每条记录dm字段(产品代码)的大小进行降序排列 */* (注意:字符串比较必须通过strcmp函数) */if (strcmp(selli.dm, sellj.dm) < 0)xy = selli;selli = sellj;sellj = xy;else if (strcmp(selli.dm

42、, sellj.dm) = 0) /* 若dm字段相等则按je字段(金额)的大小进行降序排列 */if (selli.je < sellj.je)xy = selli;selli = sellj;sellj = xy;第8题答案void encryptChar()int i;char *pf;/* 循环以遍历英文文章的每一行 */for (i=0; i<maxline; i+)pf = xxi; /* 以字符指针指向当前行行首 */while (*pf != 0) /* 若所指字符不为0(即字符串结束标志)则循环 */ /* 若所指字符依题意计算后小于等于130且大于32,则用计算

43、结果替换之 */if (*pf*11%256<=130 && *pf*11%256>32)*pf = *pf*11%256;pf+; /* 让指针指向下一个字符 */第9题答案void SortCharD(void)int i, j, k, strl;char ch;/* 循环以遍历英文文章的每一行 */for (i=0; i<maxline; i+)5strl = strlen(xxi);/* 用选择排序法对当前行进行排序 */for (j=0; j<strl-1; j+)for (k=j+1; k<strl; k+)if (xxij <

44、xxik) /*前面的字符小于后面的字符则交换两者,所以此排序是降序排序 */ch = xxij;xxij = xxik;xxik = ch;第10题答案void ConvertCharA(void)int i, j, str;/* 循环以遍历英文文章的每一行 */for (i=0; i<maxline; i+)str = strlen(xxi);/* 循环以遍历当前行的每一个字符 */for (j=0; j<str; j+)if (xxij = 'z')xxij = 'a' /* 如果当前字符是小写字母'z',则改为'a&#

45、39; */else if (xxij>='a' && xxij<='y')xxij += 1; /* 否则如果是其他小写字母,则让其自增1 */第11题答案void chg(char *s)while (*s) /* 若s所指字符不为0(即字符串结束标志)则循环 */* 若s所指字符是字母'z'或'Z',则让它自减25(即改为'a'或'A') */if (*s='z' | *s='Z')*s -= 25;/* 否则如果s所指字符是其他字母

46、,则让它自增1(即改为其下一个字符) */else if (isalpha(*s)*s += 1;s+; /* 让指针指向下一个字符 */第12题答案void SortDat()int i, j;PRO xy;/* 对数组sell的所有100条记录进行选择排序 */for (i=0; i<99; i+)for (j=i+1; j<100; j+)/* 按每条记录mc字段(产品名称)的大小进行升序排列 */if (strcmp(selli.mc, sellj.mc) > 0)xy = selli;sell i = sellj;sellj = xy;else if (strcmp

47、(selli.mc, sellj.mc) = 0) /* 若mc字段相等则按je字段(金额)的大小进行升序排列 */if (selli.je > sellj.je)xy = selli;selli = sellj;sellj = xy;6第13题答案void SortDat()int i, j;PRO xy;/* 对数组sell的所有100条记录进行选择排序 */for (i=0; i<99; i+)for (j=i+1; j<100; j+)/* 按每条记录dm字段(产品代码)的大小进行升序排列 */if (strcmp(selli.dm, sellj.dm) > 0

48、)xy = selli;selli = sellj;sellj = xy;else if (strcmp(selli.dm, sellj.dm) = 0) /* 若dm字段相等则按je字段(金额)的大小进行降序排列 */if (selli.je < sellj.je)xy = selli;selli = sellj;sellj = xy;第14题答案void jsVal()int i, j, flag = 0;int k;/* 循环以遍历数组a的第1至倒数第6个数 */for (i=0; i<MAX-5; i+) /* 循环以遍历当前数的后5个数 */for (j=i+1; j&l

49、t;=i+5; j+)if (ai > aj) /* 若当前数大于后5个数则设标志flag为1 */flag = 1;else /* 否则设标志flag为0并跳出循环 */flag = 0;break;if (flag=1 && ai%2) /* 若flag为1说明当前数大于后5个数,且%2为真(即奇数)的话 */bcnt = ai; /* 把当前数存入数组b */cnt+; /* 计数值cnt增1 */* 对数组b的前cnt个数进行选择排序 */for (i=0; i<cnt-1; i+)for (j=i+1; j<cnt; j+)if (bi > b

50、j) /* 前面的数大于后面的数则交换,即升序排列 */k = bi;bi = bj;bj = k;第15题答案void jsVal()int i, j;int a1, a2, a3, a4, k;/* 循环遍历数组a中的每一个数 */for (i=0; i<MAX; i+)7a1 = ai/1000; /* 将ai的千位数字存入a1 */a2 = ai%1000/100; /* 将ai的百位数字存入a2 */a3 = ai%100/10; /* 将ai的十位数字存入a3 */a4 = ai%10; /* 将ai的个位数字存入a4 */if (a1 <= a2) &&

51、; (a2 <= a3) && (a3 <= a4) && (ai%2 = 0) /*若当前数的千位不小于百位、百位不小于十位、十位不小于个位且为偶数 */bcnt = ai; /* 将此数存入数组b */cnt+; /* 计数值cnt增1 */* 用选择排序法对数组b的前cnt个数进行排序 */for (i=0; i<cnt-1; i+)for (j=i+1; j<cnt; j+)if (bi > bj) /* 因为前者大于后者则交换,所以是升序排序 */k = bi;bi = bj;bj = k;第16题答案void StrCh

52、arJR(void)int i, j, strl;/* 循环以遍历文章的每一行 */for (i=0; i<maxline; i+)strl = strlen(xxi);for (j=0; j<strl; j+) /* 循环以遍历当前行的每一个字符 */xxij += xxij>>4; /* 将每个字符按题目的要求进行替换 */第17题答案void ChA(void)int i, j, k, str;char ch;/* 循环以遍历英文文章的每一行 */for (i=0; i<maxline; i+)str = strlen(xxi);ch = xxi0; /*

53、保存当前行第1个字符 */* 循环以遍历当前行除最后一个字符以外的所有字符 */for (j=0; j<str-1; j+)xxij += xxij+1; /* 将这些字符累加上紧挨其后的一个字符 */xxistr-1 += ch; /* 将最后一个字符累加上前面保存的第1个字符 */for (j=0, k=str-1; j<str/2; j+, k-) /*通过双循环变量从首尾开始同时遍历当前行,交换相对位置的值以实现逆转 */ch = xxij;xxij = xxik;xxik = ch;第18题答案void encryptChar()int i;char *pf;/* 循环以

54、遍历英文文章的每一行 */for (i=0; i<maxline; i+)pf = xxi; /* 以字符指针指向当前行行首 */while (*pf != 0) /* 若所指字符不为0(即字符串结束标志)则循环 */8 /* 若所指字符为奇数且依题意计算后大于32,则用计算结果替换之 */if (*pf%2 && *pf*11%256>32)*pf = *pf*11%256;pf+; /* 让指针指向下一个字符 */第19题答案int findStr(char *str, char *substr)int n;char *p, *r;n = 0;while (*str) /* 以指针str循环遍历其所指字符串 */p = str; /* 用指针p指向当前字符 */r = substr;while (*r) /* 以指针r循环遍历substr所指字符串 */if (*r = *p) /* 如果p和r所指字符相同则继续比较 */r+;p+;else /* 一旦碰到不同字符则跳出循环 */break;/* 如果上面循环是正常结束(即r指向字符串结束标志'0') */* 证明从str当前所指位置起与substr所指字符串中的所有字符一一匹配 */if (*r = '0')n+; /*

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论