2015二级C( B卷)
一、单项选择题(答案在最后)
二、填空题(答案在最后)
程序功能:输入一个正整数,将其各位上为偶数的数字去除,剩余的数按原来从高位到低位的顺序组成一个新的数,并将其输出到文件out1.txt中。例如,输入:134456779,输出到文件:135779。
代码:
#include
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
",z);
_____(4)_____; /* 关闭文件 */
return 0;
}
程序功能:从键盘输入一个字符串和一个字符,统计字符串中该字符出现的次数,并输出结果。例如,输入字符串:aBEddfghDdd,输入字符:d,输出结果:4。
代码:
#include
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);
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
int main(void)
{
float salary,tax;
printf("请输入月收入: ");
scanf("%d", &salary);
if (salary<=3500) tax=0
else if (salary<=5000) tax=(salary-3500)*0.03;
else tax=1500*0.03+(salary-3500)*0.1;
printf("个人所得税为: %.2f
", tax);
return 0;
}
参考答案:
#include
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
", tax);
return 0;
}
2. 程序调试题2
调试要求:下列程序(C:\KS\B_2_2.c)包含3个错误,请按题中的功能要求,调试并修改该程序(在所修改语句后加/*******/字样的注释),使其运行能得到正确的结果。将程序结果(包括B_2_2.c文件和B_2_2.EXE文件)保存到目录C:\KS\中。
功能说明:自定义一个表示分数的结构体类型,在主函数中输入两个分数,通过调用函数计算两个分数的和,最后在主函数中输出计算的结果(不化简)。
运行示例:
含错误源程序:
#include
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.Mol,n.Den,m.Mol,m.Den,t.Mol,t.Den);
return 0;
}
参考答案:
#include
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.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
void inter(int s1[],int s2[],int s3[]);
int main(void )
{
int a[5],b[5],c[5];
int i,n;
printf ("请输入第一个集合内容,5个整型数
");
for(i=0;i<5;i++)
scanf("%d",&a[i]);
printf ("请输入第二个集合内容,5个整型数
");
for(i=0;i<5;i++)
scanf("%d",&b[i]);
n=inter(a,b,c);
printf ("A,B交集元素为:
");
for(i=0;i<5;i++)
printf("%4d", c[i]);
printf("
");
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
int inter(int s1[],int s2[],int s3[]); /*******/
int main(void )
{
int a[5],b[5],c[5];
int i,n;
printf ("请