2015二级C(B卷)一、单项选择题(答案在最后)123456789二、填空题(答案在最后)程序功能:输入一个正整数,将其各位上为偶数的数字去除,剩余的数按原来从高位到低位的顺序组成一个新的数,并将其输出到文件out1.txt中。例如,输入:134456779,输出到文件:135779。代码:#includeintmain(void){longn;intk,i=1;int_____(1)_____;FILE*fp;fp=fopen("out1.txt","w");scanf("%ld",&n);while(_____(2)_____){k=_____(3)_____;n=n/10;if(k%2==1){z=z+k*i;10i=10*i;}}fprintf(fp,"%d\n",z);_____(4)_____;/*关闭文件*/return0;}程序功能:从键盘输入一个字符串和一个字符,统计字符串中该字符出现的次数,并输出结果。例如,输入字符串:aBEddfghDdd,输入字符:d,输出结果:4。代码:#includeintnum(charstr[]){charch;inti=0,count=0;printf("输入字符:");scanf("%c",&ch);while(_____(1)_____){11if(_____(2)_____)count++;i++;}returncount;}intmain(void){charstr[80];intn;printf("输入字符串:");gets(_____(3)_____);n=_____(4)_____;printf("输出结果:%d\n",n);return0;}三、操作题(一)程序调试题(3小题,第1、2小题各3处错,第3小题4处错,每错误点3分,共30分)1.程序调试题1调试要求:下列程序(C:\KS\B_2_1.c)包含3个错误,请按题中的功能要求,调试并修改该程序(在所修改语句后加/*******/字样的注释),使其运行能得到正确的结果。将程序结果(包括B_2_1.c文件和B_2_1.EXE文件)保存到目录C:\KS\中。功能说明:输入某人某一个月的月收入(在2500元到8000元之间),计算并输出该月份他应缴的个人所得税。个人所得税采用分段计算方法计算,具体为:月收入不超过3500元(含3500元,以下同)免税;月收入超过3500元但不超过5000元的,超过部分的税率为3%;月收入超过5000元但不超过8000元的,超过5000元部分的税率为10%。运行示例:输入:请输入月收入:7000输出:个人所得税为:245.00说明:月收入7000元中3500元免税,1500元的税利为3%,2000元的税利为10%。含错误源程序:#includeintmain(void){floatsalary,tax;printf("请输入月收入:");scanf("%d",&salary);12if(salary<=3500)tax=0elseif(salary<=5000)tax=(salary-3500)*0.03;elsetax=1500*0.03+(salary-3500)*0.1;printf("个人所得税为:%.2f\n",tax);return0;}参考答案:#includeintmain(void){floatsalary,tax;printf("请输入月收入:");scanf("%f",&salary);/*******/if(salary<=3500)tax=0;/*******/elseif(salary<=5000)tax=(salary-3500)*0.03;elsetax=1500*0.03+(salary-5000)*0.1;/*******/printf("个人所得税为:%.2f\n",tax);return0;}2.程序调试题2调试要求:下列程序(C:\KS\B_2_2.c)包含3个错误,请按题中的功能要求,调试并修改该程序(在所修改语句后加/*******/字样的注释),使其运行能得到正确的结果。将程序结果(包括B_2_2.c文件和B_2_2.EXE文件)保存到目录C:\KS\中。功能说明:自定义一个表示分数的结构体类型,在主函数中输入两个分数,通过调用函数计算两个分数的和,最后在主函数中输出计算的结果(不化简)。运行示例:13含错误源程序:#includestructFrac{intMol;intDen;};structadd(structFraca,structFracb){structFracc;c.Mol=a.Mol*b.Den+a.Den*b.Mol;c.Den=a.Den+b.Den;returnc;}intmain(void){structFracn,m,t;printf("请输入第一个分数:");scanf("%d/%d",&n.Mol,&n.Den);printf("请输入第二个分数:");scanf("%d/%d",&m.Mol,&m.Den);t=structadd(n,m);printf("%d/%d+%d/%d=%d/%d\n",n.Mol,n.Den,m.Mol,m.Den,t.Mol,t.Den);return0;}参考答案:#includestructFrac{intMol;intDen;};structFracadd(structFraca,structFracb)/*******/{structFracc;c.Mol=a.Mol*b.Den+a.Den*b.Mol;c.Den=a.Den*b.Den;/*******/returnc;14}intmain(void){structFracn,m,t;printf("请输入第一个分数:");scanf("%d/%d",&n.Mol,&n.Den);printf("请输入第二个分数:");scanf("%d/%d",&m.Mol,&m.Den);t=add(n,m);/*******/printf("%d/%d+%d/%d=%d/%d\n",...