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

上传人:b****1 文档编号:29146283 上传时间:2023-07-20 格式:DOCX 页数:19 大小:686.19KB
下载 相关 举报
上海计算机等级考试二级CB卷.docx_第1页
第1页 / 共19页
上海计算机等级考试二级CB卷.docx_第2页
第2页 / 共19页
上海计算机等级考试二级CB卷.docx_第3页
第3页 / 共19页
上海计算机等级考试二级CB卷.docx_第4页
第4页 / 共19页
上海计算机等级考试二级CB卷.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

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

《上海计算机等级考试二级CB卷.docx》由会员分享,可在线阅读,更多相关《上海计算机等级考试二级CB卷.docx(19页珍藏版)》请在冰豆网上搜索。

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

上海计算机等级考试二级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)】

三、改错题

 

四、编程题

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教学研究 > 教学案例设计

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1