当前位置:文档之家› 上海计算机等级考试二级CB卷

上海计算机等级考试二级CB卷

2015二级C( B卷)一、单项选择题(答案在最后)二、填空题(答案在最后)程序功能:输入一个正整数,将其各位上为偶数的数字去除,剩余的数按原来从高位到低位的顺序组成一个新的数,并将其输出到文件out1.txt中。

例如,输入:,输出到文件:135779。

代码:#include <stdio.h>int main(void){long n;int k,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;i = 10*i;}}fprintf(fp,"%d\n",z);_____(4)_____; /* 关闭文件 */return 0;}程序功能:从键盘输入一个字符串和一个字符,统计字符串中该字符出现的次数,并输出结果。

例如,输入字符串:aBEddfghDdd,输入字符:d,输出结果:4。

代码:#include <stdio.h>int num(char str[]){char ch;int i=0,count=0;printf("输入字符:");scanf("%c",&ch);while( _____(1)_____ ){if( _____(2)_____ )count++;i++;}return count;}int main(void){char str[80];int n;printf("输入字符串:");gets( _____(3)_____ );n = _____(4)_____;printf("输出结果: %d\n",n);return 0;}三、操作题(一)程序调试题(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%。

含错误源程序:#include <stdio.h>int main(void){float salary,tax;printf("请输入月收入: ");scanf("%d", &salary);if (salary<=3500) tax=0else if (salary<=5000) tax=(salary-3500)*0.03;else tax=1500*0.03+(salary-3500)*0.1;printf("个人所得税为: %.2f\n", tax);return 0;}参考答案:#include <stdio.h>int main(void){float salary,tax;printf("请输入月收入: ");scanf("%f", &salary); /*******/if (salary<=3500) tax=0; /*******/else if (salary<=5000) tax=(salary-3500)*0.03;else tax=1500*0.03+(salary-5000)*0.1; /*******/printf("个人所得税为: %.2f\n", tax);return 0;}2. 程序调试题2调试要求:下列程序(C:\KS\B_2_2.c)包含3个错误,请按题中的功能要求,调试并修改该程序(在所修改语句后加/*******/字样的注释),使其运行能得到正确的结果。

将程序结果(包括B_2_2.c文件和B_2_2.EXE文件)保存到目录C:\KS\中。

功能说明:自定义一个表示分数的结构体类型,在主函数中输入两个分数,通过调用函数计算两个分数的和,最后在主函数中输出计算的结果(不化简)。

运行示例:含错误源程序:#include<stdio.h>struct Frac{ int Mol;int Den;};struct add(struct Frac a,struct Frac b){ struct Frac c;c.Mol=a.Mol*b.Den+a.Den*b.Mol;c.Den=a.Den+b.Den;return c;}int main(void){ struct Frac n,m,t ;printf("请输入第一个分数:");scanf("%d/%d",&n.Mol,&n.Den);printf("请输入第二个分数:");scanf("%d/%d",&m.Mol,&m.Den);t= struct add(n,m);printf("%d/%d+%d/%d=%d/%d\n",n.Mol,n.Den,m.Mol,m.Den,t.Mol,t.Den); return 0;}参考答案:#include<stdio.h>struct Frac{ int Mol;int Den;};struct Frac add(struct Frac a,struct Frac b) /*******/{ struct Frac c;c.Mol=a.Mol*b.Den+a.Den*b.Mol;c.Den=a.Den*b.Den; /*******/return c;}int main(void){ struct Frac n,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",n.Mol,n.Den,m.Mol,m.Den,t.Mol,t.Den); return 0;}3. 程序调试题3调试要求:下列程序(C:\KS\B_2_3.c)包含4个错误,请按题中的功能要求,调试并修改该程序(在所修改语句后加/*******/字样的注释),使其运行能得到正确的结果。

将程序结果(包括B_2_3.c文件和B_2_3.EXE文件)保存到目录C:\KS\中。

功能说明:输入两个由整型数构成的集合(元素个数均为5)分别放到数组A和B中,求这两个集合的交集(交集的元素由两个集合中的相同元素构成),最后输出交集中的元素。

运行示例:含错误源程序:#include <stdio.h>void inter(int s1[],int s2[],int s3[]);int main(void ){int a[5],b[5],c[5];int i,n;printf ("请输入第一个集合内容,5个整型数\n"); for(i=0;i<5;i++)scanf("%d",&a[i]);printf ("请输入第二个集合内容,5个整型数\n"); for(i=0;i<5;i++)scanf("%d",&b[i]);n=inter(a,b,c);printf ("A,B交集元素为:\n");for(i=0;i<5;i++)printf("%4d", c[i]);printf("\n");return 0;}int inter(int s1[],int s2[],int s3[]){ int j,i=k=0;for(i=0;i<5;i++){for(j=0;j<5;j++)if (s1[i]==s2[j]) break;if(j<5) s3[k]=s1[i] ;}return k;}参考答案:#include <stdio.h>int inter(int s1[],int s2[],int s3[]); /*******/int main(void ){int a[5],b[5],c[5];int i,n;printf ("请输入第一个集合内容,5个整型数\n");for(i=0;i<5;i++)scanf("%d",&a[i]);printf ("请输入第二个集合内容,5个整型数\n");for(i=0;i<5;i++)scanf("%d",&b[i]);n=inter(a,b,c);printf ("A,B交集元素为:\n");for(i=0;i<n;i++) /*******/ printf("%4d", c[i]);printf("\n");return 0;}int inter(int s1[],int s2[],int s3[]){ int j,i,k=0; /*******/for(i=0;i<5;i++){for(j=0;j<5;j++)if (s1[i]==s2[j]) break;if(j<5) s3[k++]=s1[i] ; /*******/}return k;}(二)编程题(2小题,共35分,其中第1小题15分,第2小题20分)1.编程题1编程要求:请按题中的功能要求,编写程序并能得到正确的结果。

相关主题