计算机二级C语言试题 改错部分.docx
《计算机二级C语言试题 改错部分.docx》由会员分享,可在线阅读,更多相关《计算机二级C语言试题 改错部分.docx(132页珍藏版)》请在冰豆网上搜索。
计算机二级C语言试题改错部分
国家二级计算机-C语言上机100套题-电子版(改错上)
==========================================
001
==========================================
------------------------------------------
下列给定程序中,函数fun的功能是:
分别统计字符串中大写字母和小写字母的个数。
例如,给字符串s输入:
AaaaBBb123CCccccd,则应输出结果:
upper=5,1ower=9。
请改正程序中的错误,使它能计算出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
------------------------------------------
#include
#include
/*********found***********/
voidfun(char*s,inta,intb)
{
while(*s)
{
/*********found***********/
if(*s>='A'&&*s<='Z')
a++;
/*********found***********/
if(*s>='a'&&*s<='z')
b++;
s++;
}
}
main()
{
chars[100];
intupper=0,lower=0;
printf("\npleaseastring:
");
gets(s);
fun(s,&upper,&lower);
printf("\nupper=%dlower=%d\n",upper,lower);
}
------------------------------------------
(1)错误:
voidfun(char*s,inta,intb) 正确:
voidfun(char*s,int*a,int*b)
(2)错误:
a++; 正确:
(*a)++;
(3)错误:
b++; 正确:
(*b)++;
==========================================
002
==========================================
下列给定程序中,函数fun()的功能是:
根据整型形参m的值,计算如下公式的值。
t=1-1/(2×2)-1/(3×3)-…-1/(m×m)
请改正函数fun()中的错误,使它能得出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include
#include
#include
doublefun(intm)
{doubley=1.0;
intI;
/*************found**************/
for(I=2;I/*************found**************/
y-=1/(I*I);
return(y);
}
voidmain()
{intn=5;
system("CLS");
printf("\nTheresultis%1f\n",fun(n));
}
-----------------------------------------------
(1)错误:
for(I=2;Ifor(I=2;I<=m;I++)
(2)错误:
y-=1/(I*I); 正确:
y-=1.0/(I*I);
==================================================
003
==================================================
下列给定程序中,fun函数的功能是:
根据形参m,计算下列公式的值。
t=1+1/2+1/3+1/4+…+1/m
例如,若输入5,则应输出2.283333。
请改正程序中的错误,使它能计算出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include
#include
#include
doublefun(intm)
{
doublet=1.0;
intI;
for(I=2;I<=m;I++)
/*************found**************/
t+=1.0/k;
/*************found**************/
returnI;
}
voidmain()
{intm;
system("CLS");
printf("\nPleaseenter1integernumber:
");
scanf("%d",&m);
printf("\nTheresultis%1f\n",fun(m));
}
-------------------------------------------------------
(1)错误:
t+=1.0/k; 正确:
t+=1.0/I;
(2)错误:
returnI; 正确:
returnt;
======================================================
004
======================================================
下列给定的程序中,函数fun的功能是:
计算并输出k以内最大的10个能被13或17整除的自然数之和。
K的值由主函数传入,若k的值为500,则函数的值为4622。
请改正程序中的错误,使它能得出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include
#include
#include
intfun(intk)
{intm=0,mc=0,j;
while((k>=2)&&(mc<10))
{
/*************found**************/
if((k%13=0)||(k%17=0))
{m=m+k;mc++;}
k--;
/*************found**************/
returnm;
}
voidmain()
{system("CLS");
printf("%d\n",fun(500));
}
------------------------------------------------
(1)错误:
if((k%13=0)||(k%17=0)) 正确:
if((k%13==0)||(k%17==0))
(2)错误:
缺少大括号 正确:
加}
005
====================================================
下列给定程序中,函数fun的功能是:
根据整型形参m,计算如下公式的值。
例如,若m中的值为5,则应输出:
1.463611。
请改正程序中的错误,使它能得出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include
#include
doublefun(int m)
{
double y=1.0;
int i;
/********found********/
for (i=2; i/********found********/
y+=1/(i*i);
return(y);
}
main()
{
int n=5;
printf("\nTheresultis%1f\n",fun(n));
}
------------------------------------------------------
(1)错误:
for(i=2;ifor(i=2;i<=m;i++)
(2)错误:
y+=1/(i*i) 正确:
y+=1.0/(i*i)
==========================================================
006
==========================================================
下列给定程序中,函数fun的功能是:
按如下递归公式求函数值。
例如,当给n输入5时,函数值为18;当给n输入3时,函数值为14。
请改正程序中的错误,使它能得出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include
/********found********/
intfun(n)
{
int c;
/********found********/
if(n=1)
c=10;
else
c=fun(n-1)+2;
return (c);
}
main()
{
int n;
printf("Entern:
");
scanf("%d",&n);
printf("Theresult:
%d\n\n",fun(n));
}
------------------------------------------------------
(1)错误:
intfun(n) 正确:
intfun(intn)
(2)错误:
if(n=1) 正确:
if(n==1)
=======================================================
007
=======================================================
下列给定程序中函数fun的功能是:
计算n!
。
例如,给n输入5,则输出120.000000。
请改正程序中的错误,使程序能输出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include
#include
doublefun(int n)
{
double result=1.0;
/********found*******/
ifn==0
return1.0;
while (n>1&&n<170)
/********found********/
result=n--;
returnresult;
}
main()
{
intn;
printf("InputN:
");
scanf("%d",&n);
printf("\n\n%d!
=%lf\n\n",n,fun(n));
}
---------------------------------------------------
(1)错误:
ifn==0 正确:
if(n=0)
(2)错误:
result=n--; 正确:
result*=n--;
======================================================
008
======================================================
下列给定程序中函数fun的功能是:
计算正整数num各位上的数字之积。
例如,若输入252,则输出应该是20。
若输入202,则输出应该是0。
请改正程序中的错误,使它能得出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include
#include
longfun(long num)
{
/********found********/
longk;
do
{
k*=num%10;
/********found********/
num\=10;
}while(num);
return(k);
}
main()
{
longn;
printf("\pleaseenteranumber:
");
scanf("%ld",&n);
printf("\n%ld\n",fun(n));
}
-----------------------------------------------------
(1)错误:
longk; 正确:
longk=1;
(2)错误:
num\=10; 正确:
num/=10;
009
=======================================================
下列给定程序中函数fun的功能是:
将长整型数中每一位上为奇数的数依次取出,构成一个新数放在t中。
高位仍在高位,低位仍在低位。
例如当s中的数为87653142时,t中的数为7531。
请改正函数fun中的错误,使它能得出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include
#include
#include
voidfun(longs,long*t)
{intd;
longs1=1;
/*************found**************/
t=0;
while(s>0)
{d=s%10;
/*************found**************/
if(d%2==0)
{*t=d*s1+*t;
s1*=10;
}
s/=10;
}
}
voidmain()
{longs,t;
system("CLS");
printf("\nPleaseenters:
");scanf
("%ld",&s);
fun(s,&t);
printf("Theresultis:
%ld\n",t);
}
---------------------------------------------
(1)错误:
t=0; 正确:
*t=0;
(2)错误:
if(d%2==0) 正确:
if(d%2!
=0)
================================================
010
================================================
下列给定程序中,函数fun的功能是:
计算s所指字符串中含有t所指字符串的数目,并作为函数值返回。
请改正函数fun中的错误或在横线处填上适当的内容并把横线删除,使它能得出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include
#include
#include
#defineN80
intfun(char*s,char*t)
{
intn;
char*p,*r;
n=0;
/********found********/
p=&s[0];
*r=t;
while(*p)
{
if(*r==*p)
{
r++;
if(*r=='\0')
{
n++;
/*******found*******/
____填空____
}
}
p++;
}
returnn;
}
main()
{
chara[N],b[N];
intm;
printf("\nPleaseenterstringa:
");
gets(a);
printf("\nPleaseentersUbstringb:
");
gets(b);
m=fun(a,b);
m=printf("\nTheresultis:
m=%d\n",m);
}
------------------------------------------
(1)错误:
*r=t; 正确:
r=t;
(2)应填:
r=t;或r=&t[0];
================================================
011
================================================
数列中,第一项为3,后一项都比前一项的值增5。
下列给定程序中,函数fun的功能是:
计算前n(4≤n≤50)项的累计和。
在累加过程中把那些被4除后余2的当前累加值放入数组中,符合此条件的累加值的个数作为函数值返回主函数里。
如,当n的值为20时,该数列为3,8,13,18,23,28,…,93,98。
符合此条件的累加值应为42,126,366,570,1010。
请改正程序中的错误,使它能得出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include
#defineN20
intfun(intn,int*a)
/*************found**************/
{inti,j,k,sum;
sum=0;
for(k=3,i=0;i {sum=sum+k;
/*************found**************/
if(sum%4=2)
a[j++]=sum;
}
/*************found**************/
returnj;
}
voidmain()
{inta[N],d,n,i;
printf("\nEntern(4<=n<=50):
");
scanf("%d",&n);
d=fun(n,a);
printf("\n\nTheresult:
\n");
for(i=0;iprintf("%6d",a[i]);
printf("\n\n");
}
-----------------------------------------------
(1)错误:
inti,j,k,sum; 正确:
inti,j=0,k,sum;
(2)错误:
if(sum%4=2) 正确:
if(sum%4==2)
(3)错误:
returnj; 正确:
returnj++;
==================================================
012
==================================================
在主函数中从键盘输入若干个数放入数组中,用0结束输入并放在最后一个元素中。
下列给定程序中,函数fun的功能是:
计算数组元素中值为正数的平均值(不包括0)。
例如:
数组中元素的值依次为39,-47,21,2,-8,15,0,则程序的运行结果为19.250000。
请改正程序中的错误,使它能得出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include
#include
double fun(int x[])
{
/********found********/
int sum=0.0;
int c=0,i=0;
while(x[i] !
=0)
{
if(x[i] > 0)
{
sum+=x[i];
c++;
}
i++;
}
/********found********/
sum\=c;
returnsum;
}
main()
{
int x[1000];
int i=0;
printf("\nPleaseentersomedata(endwith0):
");
do
{
scanf("%d",&x[i]);
}while(x[i++]!
=0);
printf("%lf\n",fun(x));
}
--------------------------------------------------
(1)错误:
intsum=0.0; 正确:
doublesum=0.0;
(2)错误:
sum\=c; 正确:
sum/=c;
==================================================
013
==================================================
下列给定程序中,函数fun的功能是:
求k!
(k<13),所求阶乘的值作为函数值返回。
例如:
若k=10,则应输出3628800。
请改正程序中的错误,使它能得出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include
#include
longfun(int k)
{
/********found********/
ifk>1
return(k*fun(k-1));
return1;
}
main()
{
int k=10;
printf("%d!
=%ld\n",k,fun(k));
}
--------------------------------------------------
(1)错误:
ifk>1 正确:
if(k>1)
==================================================
014
==================================================
下列给定程序中,函数fun的功能是:
求出数组中最大数和次最大数,并把最大数和a[0]中的数对调、次最大数和a[1]中的数对调。
请改正程序中的错误,使它能得出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include
#include