二级c语言真题100道.docx
《二级c语言真题100道.docx》由会员分享,可在线阅读,更多相关《二级c语言真题100道.docx(281页珍藏版)》请在冰豆网上搜索。
![二级c语言真题100道.docx](https://file1.bdocx.com/fileroot1/2023-2/3/c7b4705b-3856-4040-828e-ad3dec1b15fc/c7b4705b-3856-4040-828e-ad3dec1b15fc1.gif)
二级c语言真题100道
第1套
填空题
请补充FUN函数,FUN函数的功能是求10的阶乘。
注意:
部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,
仅在fun函数的横线上填入所编写的若干表达式或语句。
试题程序:
#include
longfun(intn)
{
if(___1___)
return(n*fun(___2___));
return___3___;
}
main()
{
printf("10!
=%ld\n",fun(10));
}
第1处填空:
n>1或1第2处填空:
n-1
第3处填空:
1或11或1L
改错题
下列给定程序的功能是:
读入一个整数K(2〈=K〈=10000),打印它的所有因子(即所有为素数的因子)。
例如,若输入整数2310,则应输出:
2、3、5、7、11。
请改正程序中的错误,使程序能得出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include
#include
/********found********/
IsPrime(intn);
{
inti,m;
m=1;
/********found********/
for(i=2;iif!
(n%i)
{
m=0;
break;
}
return(m);
}
main()
{
intj,k;
printf("\npleaseenteranintegernumberbetween2and10000:
");
scanf("%d",&k);
printf("\n\nTheprimefactor(s)of%dis(are):
",k);
for(j=2;jif((!
(k%j))&&(IsPrime(j)))
printf("%4d,",j);
printf("\n");
}
第1处:
Isprime(intn);应改为Isprime(intn)
第2处:
if!
(n%i)应该为if(!
(n%i))
第2套
填空题
请在函数FUN的横线上填写若干表达式,使从键盘上输入一个整数N,输出斐波纳契数列。
斐波纳契数列是一种整数数列,其中每数等于前面两数之和,如:
011235813…..
请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。
试题程序:
#include
intfun(intn);
main()
{
inti,n=0;
scanf("%d",&n);
for(i=0;iprintf("%d",fun(i));
}
intfun(intn)
{
if(___1___)
return0;
elseif(___2___)
return1;
else
return___3___;
}
第1处填空:
n==0或0==n或!
n
第2处填空:
n==1或1==n
第3处填空:
fun(n-1)+fun(n-2)或fun(n-2)+fun(n-1)
改错题
下列给定程序中,函数FUN的功能是:
逐个比较a、b两个字符串对应位置中的字符,把ASCII值大或相等的字符依次存放到c数组中,形成一个新的字符串。
例如,若a中的字符串为aBCDeFgH,b中的字符串为:
ABcd,则c中的字符串应为:
aBcdeFgH。
请改正程序中的错误,使程序能得出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include
#include
voidfun(char*p,char*q,char*c)
{
/********found********/
intk=1;
/********found********/
while(*p!
=*q)
{
if(*p<*q)
c[k]=*q;
else
c[k]=*p;
if(*p)
p++;
if(*q)
q++;
k++;
}
}
main()
{
chara[10]="aBCDeFgH",b[10]="ABcd",c[80]={'\0'};
fun(a,b,c);
printf("Thestringa:
");
puts(a);
printf("Thestringb:
");
puts(b);
printf("Theresult:
");
puts(c);
}
第1处:
intk=1应改为intk=0;
第2处:
while(*p!
=*q)应改为while(*p||*q)
第3套
填空题
请补充函数FUN(CHAR*S),该函数的功能是把字符串中的内容逆置.
例如:
字符串中原有的字符串为abcde,则调用该函数后,串中的内容为edcba.
请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。
试题程序:
#include
#include
#include
#defineN81
voidfun(char*s)
{
inti,n=strlen(s)-1;
chart;
for(i=0;i{
t=s[i];
___2___;
___3___;
}
}
main()
{
chara[N];
printf("Enterastring:
");
gets(a);
printf("Theoriginalstringis:
");
puts(a);
fun(a);
printf("\n");
printf("Thestringaftermodified:
");
puts(a);
}
第1处填空:
n--或--n或n-=1或n=n-1
第2处填空:
s[i]=s[n]或*(s+i)=*(s+n)
第3处填空:
s[n]=t或*(s+n)=t
改错题
下列给定的程序中,函数fun的功能是:
依次取出字符串中所以数字字符,形成新的字符串,并取代
原字符串。
请改正函数fun中的错误,使程序能得出正确的结果。
#include
#include
voidfun(char*s)
{
inti,j;
/********found********/
for(i=0,j=0;s[i]!
='\0';i++)
if(s[j]>='0'&&s[i]<='9')
s[j]=s[i];
/********found********/
s[j]="\0";
}
main()
{
charitem[80];
printf("\nEnterastring:
");
gets(item);
printf("\n\nThestringis:
%s\n",item);
fun(item);
printf("\n\nThestringofchangingis:
%s\n",item);
}
第1处:
s[j]=s[i];应改为s[j++]=s[i]
第2处:
s[j]=”/0”;应改为s[j]=’\0’;
编程题
请编写函数voidfun(intx,intpp[],int*n),它的功能是:
求出能整除x且不是偶数的各整数,并按从小到大
的顺序放在pp所指的数组中,这些除数的个数通过形参n返回.
例如,若x中的值为30,则有4个数符合要求,它们是1,3,5,15.
答案是:
voidfun(intx,intpp[],int*n)
{
inti=1,j=0,k=0,*t=pp;
for(i=0;i<=x;i++)
if(i%2!
=0)
{
t[j]=i;
j++;
}
for(i=0;iif(x%t[i]==0)
{
pp[k]=t[i];
k++;
}
*n=k;
}
第4套
填空题
请补充函数FUN,它的功能是:
计算并输出N(包括N)以内能被3或7整除的所有自然数的倒数之
和。
例如,在主函数中从键盘给N输入30后,输出为:
S=1.226323。
请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语
句。
试题程序:
#include
doublefun(intn)
{
inti;
doublesum=0.0;
for(i=1;___1___;i++)
if(i%3==0___2___i%7==0)
sum+=___3___/i;
returnsum;
}
main()
{
intn;
doubles;
printf("\nInputn:
");
scanf("%d",&n);
s=fun(n);
printf("\n\ns=%f\n",s);
}
第1处填空:
i<=n或n>=i
第2处填空:
||
第3处填空:
1.0或(double)1
改错题
下列给定程序中,fun函数的功能是:
分别统计字符串中大写字母和小写字母的个数。
例如,给字符串s
输入:
AaaaBBb123CCccccd,则应输出结果:
upper=6,lower=8
请改正程序中的错误,使程序能得出正确的结果。
注意:
不要改动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)++;
第5套
填空题
给定程序的功能是求二分之一的圆面积,函数通过形参得到圆的半径,函数返回二分之一的圆面积
(注:
圆面积公式为:
S=πR,在程序中定义的变量名要与公式的变量相同)。
例如,输入圆的半径值:
19.527,输出为:
S=598.950017。
请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语
句。
试题程序:
#include
doublefun(doubler)
{
return3.14159*___1___/2.0;
}
main()
{
doublex;
printf("Enterx:
");
scanf("%lf",___2___);
printf("s=%lf\n",fun(___3___));
}
第1处填空:
r*r
第2处填空:
&x
第3处填空:
x
改错题
假定整数数列中的数不重复,并存放在数组中。
下列给顶程序中,函数fun的功能是删除数列中值为
x的元素,同时将其他元素前移。
N中存放的是数列中元素的个数。
请改正程序中的错误,使它能得出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include
#defineN20
fun(int*a,intn,intx)
{
intp=0,i;
a[n]=x;
while(x!
=a[p])
p=p+1;
if(p==n)
{
return-1;
}
else
{
/********found********/
for(i=p;ia[i+1]=a[i];
returnn-1;
}
}
main()
{
intw[N]={-3,0,1,5,7,99,10,15,30,90},x,n,i;
n=10;
printf("Theoriginaldata:
\n");
for(i=0;iprintf("%5d",w[i]);
printf("\nInputx(todelete):
");
scanf("%d",&x);
printf("Delete:
%d\n",x);
n=fun(w,n,x);
if(n==-1)
{
printf("***Notbefound!
***\n\n");
}
else
{
printf("Thedataafterdelete:
\n");
for(i=0;iprintf("%5d",w[i]);
printf("\n\n");
}
}
第1处:
a[i+1]=a[i];应改为a[i]=a[i+1]
第6套
填空题
给定程序的功能是计算并输出下列级数的前N项之和s,直到s大于Q为止,Q的值通过形参传
NN
入。
=2+3+4+....+N+1
sN
123N
例如,若Q的值为50.0,则函数值为50.416687。
请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语
句。
试题程序:
#include
doublefun(doubleq)
{
intn;
doubles;
n=2;
s=2.0;
while(s___1___q)
{
s=s+(double)(n+1)/n;
___2___;
}
printf("n=%d\n",n);
___3___;
}
main()
{
printf("%f\n",fun(50));
}
第1处填空:
<=
第2处填空:
n++或n+=1或n=n+1
第3处填空:
returns或return(s)
改错题
下列给定程序中,函数fun的功能是:
根据整型参m的值,计算如下公式的值。
T=1-111
2*2−3*3−....−m*m
例如,若m中的值为5,则应输出:
0.536389
请改正程序中的错误,使程序能得出正确的结果。
#include
#include
doublefun(intm)
{
doubley=1.0;
inti;
/********found********/
for(i=2;i/********found********/
y-=1/(i*i);
return(y);
}
main()
{
intn=5;
printf("\nTheresultis%1f\n",fun(n));
}
第1处:
for(i=2;i第2处:
y-=1/(i*i);应改为y-=1.0/(i*i)
第7套
填空题
函数fun的功能是:
统计长整数n的各个位上出现数字1,2,3的次数,并通过外部(全局)变量c1,c2,c3
返回主函数。
例如,当=123114350时,结果应该为:
c1=3,c2=1,c3=2.
注意:
部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语
句。
试题程序如下:
#include
intc1,c2,c3;
voidfun(longn)
{
c1=c2=c3=0;
while(n)
{
switch(___1___)
{
case1:
c1++;
___2___;
case2:
c2++;
___3___;
case3:
c3++;
}
n/=10;
}
}
main()
{
longn=123114350L;
fun(n);
printf("\nTheresult:
\n");
printf("n=%ldc1=%dc2=%dc3=%d\n",n,c1,c2,c3);
}
第1处填空:
n%10
第2处填空:
break
第3处填空:
break
改错题
下列给定程序中函数fun的功能是:
用选择法对数组中的n个元素按从小到大的顺序进行排序。
请改正程序中的错误,使程序能得出正确的结果。
#include
#defineN20
voidfun(inta[],intn)
{
inti,j,t,p;
for(j=0;j{
/********found********/
p=j
for(i=j;iif(a[i]{
/********found********/
p=i;
t=a[p];
a[p]=a[i];
a[i]=t;
}
}
}
main()
{
inta[N]={9,6,8,3,-1},i,m=5;
printf("ÅÅÐòÇ°£º");
for(i=0;iprintf("%d,",a[i]);
printf("\n");
fun(a,m);
printf("ÅÅÐòºó£º");
for(i=0;iprintf("%d,",a[i]);
printf("\n");
}
第1处:
p=j应改为p=j;
第2处:
p=i应改为p=j;
第8套
填空题
请补充main函数,该函数的功能是:
从键盘输入一组整数,使用条件表达式找出最大的整数。
当输入的
整数为0时结束。
例如,输入123540时,最大的数为5。
#include
#include
#defineN100
main()
{
intnum[N];
inti=-1;
intmax=0;
printf("\nInputintegernumber:
\n");
do
{
i++;
printf("num[%d]=",i);
scanf("%d",___1___);
max=___2___num[i]:
max;
}while(___3___);
printf("max=%d\n",max);
}
第1处填空:
&num[i]或num+i
第2处填空:
max或num[i]>max?
第3处填空:
num[i]!
=0或0!
=num[i]
改错题
下列给定程序中,函数fun的功能是:
在字符串str中找出ASCII码值最大的字符,将其放在第一个位置
上;并将该字符前的原字符向后顺序移动。
例如,调用fun函数之前给字符串输入:
ABCDeFGH,调用后
字符串中的内容为eABCDFGH
请改正程序中的错误,使程序能得出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include
/********found********/
voidfun(char*p);
{
charmax,*q;
inti=0;
max=p[i];
while(p[i]!
=0)
{
if(max
{
/********found********/
max=p[i];
p=q+i;
}
i++;
}
while(q>p)
{
*q=*(q-1);
q--;
}
p[0]=max;
}
main()
{
charstr[80];
printf("Enterastring:
");
gets(str);
printf("\nTheoriginalstring:
");
puts(str);
fun(str);
printf("\nThestringaftermoving:
");
puts(str);
printf("\n\n");
}
第1处:
voidfun(char*p);应改为voidfun(char*p)
第2处:
p=q+I;应改为q=p+i;
编程题
编写函数fun,函数功能是:
根据以下公式计算s,计算结果作为函数值返回;n通过型参传入。
S=1+1+1+.....+1
1+21+2+31+2+3+....n
例如:
若n的值为11时,函数的值为1.833333。
#include
#include
#include