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

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

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

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

上海计算机等级考试二级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)_____;  /* 关闭文件*/    

 return 0;

}

程序功能:

从键盘输入一个字符串与一个字符,统计字符串中该字符出现得次数,并输出结果、例如,输入字符串:

aBEddfghDdd,输入字符:

d,输出结果:

4。

代码:

#include<stdio。

h〉

intnum(char str[])

{

charch;

inti=0,count=0;

 printf("输入字符:

");

scanf("%c",&ch);

 while(_____(1)_____ )  

 {

 if(_____

(2)_____)     

  count++;

  i++;

    }

returncount;

intmain(void)

 char str[80];

intn;

 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>

intmain(void)

{

 floatsalary,tax;

 printf(”请输入月收入:

 ");

  scanf("%d",&salary);

 if(salary<=3500) tax=0

 else if (salary<=5000) tax=(salary—3500)*0、03;

   elsetax=1500*0。

03+(salary-3500)*0。

1;

 printf("个人所得税为:

 %.2f\n",tax);

return 0;

}

参考答案:

#include〈stdio.h>

intmain(void)

 floatsalary,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);

ﻩreturn0;

}

2. 程序调试题2

调试要求:

下列程序(C:

\KS\B_2_2。

c)包含3个错误,请按题中得功能要求,调试并修改该程序(在所修改语句后加/*******/字样得注释),使其运行能得到正确得结果。

将程序结果(包括B_2_2。

c文件与B_2_2、EXE文件)保存到目录C:

\KS\中。

功能说明:

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

运行示例:

含错误源程序:

#include〈stdio、h〉

structFrac

{intMol;

 intDen;

};

structadd(structFrac a,structFrac b)

{structFracc;

c、Mol=a。

Mol*b、Den+a、Den*b。

Mol;

 c.Den=a、Den+b、Den;

returnc;

intmain(void)

{struct Fracn,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);

return0;

参考答案:

#include〈stdio、h〉

struct Frac

{intMol;

 int Den;

};

struct Fracadd(structFrac a,structFracb)/*******/

{ structFracc;

c。

Mol=a。

Mol*b.Den+a。

Den*b。

Mol;

 c、Den=a、Den*b、Den;       /*******/

return c;

}

intmain(void)

{struct Fracn,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[],ints2[],ints3[]);

intmain(void)

{

inta[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");

 return0;

intinter(ints1[],ints2[],ints3[])

{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];

 }

 returnk;

}

参考答案:

#include〈stdio。

h〉

intinter(int s1[],ints2[],ints3[]);   /*******/

intmain(void )

{

int a[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<n;i++)          /*******/

ﻩprintf("%4d”,c[i]);

printf(”\n");

return0;

}

int inter(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] ;      /*******/

 }

return k;

(二)编程题(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得所有元素。

运行示例:

输入:

22 55669944 33 77 110 88 60

输出:

669977 88

参考答案:

#include

#defineN10

intmain(void)

inta[N],i,x;

 for (i=0;i

   scanf(”%d",&a[i]);

  scanf("%d”,&x);

 for (i=0;i<N;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〈stdio.h>

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。

Dﻩ2。

 D3.B4、 Bﻩ5。

B6、C7。

D8. Aﻩ9。

 Dﻩ10。

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