上海计算机等级考试二级CB卷.docx
- 文档编号:6930403
- 上传时间:2023-01-12
- 格式:DOCX
- 页数:17
- 大小:686.53KB
上海计算机等级考试二级CB卷.docx
《上海计算机等级考试二级CB卷.docx》由会员分享,可在线阅读,更多相关《上海计算机等级考试二级CB卷.docx(17页珍藏版)》请在冰豆网上搜索。
上海计算机等级考试二级CB卷
2015二级C(B卷)
一、单项选择题(答案在最后)
二、填空题(答案在最后)
程序功能:
输入一个正整数,将其各位上为偶数的数字去除,剩余的数按原来从高位到低位的顺序组成一个新的数,并将其输出到文件out1.txt中。
例如,输入:
134456779,输出到文件:
135779。
代码:
#include
intmain(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;
i=10*i;
}
}
fprintf(fp,"%d\n",z);
_____(4)_____;/*关闭文件*/
return0;
}
程序功能:
从键盘输入一个字符串和一个字符,统计字符串中该字符出现的次数,并输出结果。
例如,输入字符串:
aBEddfghDdd,输入字符:
d,输出结果:
4。
代码:
#include
intnum(charstr[])
{
charch;
inti=0,count=0;
printf("输入字符:
");
scanf("%c",&ch);
while(_____
(1)_____)
{
if(_____
(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%。
含错误源程序:
#include
intmain(void)
{
floatsalary,tax;
printf("请输入月收入:
");
scanf("%d",&salary);
if(salary<=3500)tax=0
elseif(salary<=5000)tax=(salary-3500)*0.03;
elsetax=1500*0.03+(salary-3500)*0.1;
printf("个人所得税为:
%.2f\n",tax);
return0;
}
参考答案:
#include
intmain(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\中。
功能说明:
自定义一个表示分数的结构体类型,在主函数中输入两个分数,通过调用函数计算两个分数的和,最后在主函数中输出计算的结果(不化简)。
运行示例:
含错误源程序:
#include
structFrac
{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;
}
参考答案:
#include
structFrac
{intMol;
intDen;
};
structFracadd(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=add(n,m);/*******/
printf("%d/%d+%d/%d=%d/%d\n",n.Mol,n.Den,m.Mol,m.Den,t.Mol,t.Den);
return0;
}
3.程序调试题3
调试要求:
下列程序(C:
\KS\B_2_3.c)包含4个错误,请按题中的功能要求,调试并修改该程序(在所修改语句后加/*******/字样的注释),使其运行能得到正确的结果。
将程序结果(包括B_2_3.c文件和B_2_3.EXE文件)保存到目录C:
\KS\中。
功能说明:
输入两个由整型数构成的集合(元素个数均为5)分别放到数组A和B中,求这两个集合的交集(交集的元素由两个集合中的相同元素构成),最后输出交集中的元素。
运行示例:
含错误源程序:
#include
voidinter(ints1[],ints2[],ints3[]);
intmain(void)
{
inta[5],b[5],c[5];
inti,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");
return0;
}
intinter(ints1[],ints2[],ints3[])
{intj,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];
}
returnk;
}
参考答案:
#include
intinter(ints1[],ints2[],ints3[]);/*******/
intmain(void)
{
inta[5],b[5],c[5];
inti,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 printf("%4d",c[i]); printf("\n"); return0; } intinter(ints1[],ints2[],ints3[]) {intj,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];/*******/ } returnk; } (二)编程题(2小题,共35分,其中第1小题15分,第2小题20分) 1.编程题1 编程要求: 请按题中的功能要求,编写程序并能得到正确的结果。 将程序结果(包括B_4_1.c文件和B_4_1.EXE文件)保存到目录C: \KS\中。 程序功能: 按示例格式完成以下要求。 (1)输入10个整数(存入数组a),再输入整数x。 (2)输出数组a中大于等于x的所有元素。 运行示例: 输入: 225566994433771108860 输出: 66997788 参考答案: #include #defineN10 intmain(void) { inta[N],i,x; for(i=0;i scanf("%d",&a[i]); scanf("%d",&x); for(i=0;i if(a[i]>=x) printf("%d",a[i]); printf("\n"); } 2.编程题2 编程要求: 请按题中的功能要求,编写程序并能得到正确的结果。 将程序结果(包括B_4_2.c文件和B_4_2.EXE文件)保存到目录C: \KS\中。 程序功能: 按示例格式完成以下要求(验证数学上考拉兹猜想: 任意一个大于1正整数,连续进行特定运算,经有限步骤后,计算结果得到1)。 (1)输入整数n,如果n小于2,输出"Error"并结束运行。 (2)如果整数n为偶数,计算n/2,否则计算3*n+1,生成新的整数(仍存为n)。 (3)如果生成的整数结果等于1,则结束运行,否则重复步骤 (2)与(3)。 运行示例1: 输入: 12 输出: [12]{1}6{2}3{3}10{4}5{5}16{6}8{7}4{8}2{9}1 说明: 输入12,第1次计算生成6,第2次计算生成3,……,第9次计算生成1。 示例中{1}、{2}至{9}为生成的次数标记,[]、{}与间隔空格都必须保留。 运行示例2: 输入: 0 输出: Error 说明: 输入为0、1或负数,输出"Error"。 参考答案: #include intmain(void) { longn; inti,j; scanf("%ld",&n); if(n<=0) { printf("Error\n"); return-1; } printf("[%ld]",n); for(i=1;1;i++) { if(n%2==0) n=n/2; else n=3*n+1; printf("{%d}%ld",i,n); if(n==1) break; } printf("\n"); return0; } 二级C程序设计B场参考答案 一、单选题 1.D2.D3.B4.B5.B6.C7.D8.A9.D10.C 二、程序填空题参考答案 1.1): 【z=0】 2): 【n! =0】【n】【n>0】【n>=1】 3): 【n%10】【k=n%10】【n-n/10*10】 4): 【fclose(fp)】 2.1): 【str[i]! ='\0'】【str[i]】【str[i]! =0】【i 2): 【str[i]==ch】【ch==str[i]】 3): 【str】 4): 【num(str)】 三、改错题 四、编程题
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 上海 计算机等级考试 二级 CB