二级上级模拟题.docx
《二级上级模拟题.docx》由会员分享,可在线阅读,更多相关《二级上级模拟题.docx(20页珍藏版)》请在冰豆网上搜索。
二级上级模拟题
实例:
填空题
给定程序的功能是计算并输出下列级数的前N项之和,直到大于Q为止,Q的值通过形参传入。
S=2+3/2+4/3+……(n+1)/n
例如,若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___;
}
intmain()
{
printf("%f\n",fun(50));
return0;
}
第一套
填空题。
请补充FUN函数,FUN函数的功能是求10的阶乘。
注意:
部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。
试题程序:
#include
longfun(intn)
{
if(___1___)
return(n*fun(___2___));
return___3___;
}
intmain()
{
printf("10!
=%ld\n",fun(10));
return0;
}
改错题:
87.下列给定程序中,函数fun的功能是:
给一维数组a输入任意4个整数,并按如下的规律输出。
例如输入1、2、3、4,程序运行后将输出以下方阵:
4123
3412
2341
1234
请改正函数fun中的错误,使它能得出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include
#defineM4
/********found********/
intfun(inta)
{
inti,j,k,m;
printf("Enter4number:
");
for(i=0;iscanf("%d",&a[i]);
printf("\n\nTheresult:
\n\n");
for(i=M;i>0;i--)
{
k=a[M-1];
/********found********/
for(j=M-1;j>0;j--)
a[j]=a[j+1];
a[0]=k;
for(m=0;mprintf("%d",a[m]);
printf("\n");
}
}
main()
{
inta[M];
fun(a);
printf("\n\n");
}
编程题:
52.编写一个函数fun,它的功能是:
实现两个字符串的连接(不使用库函数strcat),即把p2所指的字符串连接到p1所指的字符串后。
例如,分别输入下面两个字符串:
FirStString--
SecondString
则程序输出:
FirstString--SecondString
注意:
部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
#include
#include
voidfun(charp1[],charp2[])
{
}
main()
{
chars1[80],s2[40];
printf("Enters1ands2:
\n");
scanf("%s%s",s1,s2);
printf("s1=%s\n",s1);
printf("s2=%s\n",s2);
printf("Invokefun(s1,s2):
\n");
fun(s1,s2);
printf("Afterinvoking:
\n");
printf("%s\n",s1);
}
第二套
填空题
请在函数FUN的横线上填写若干表达式,使从键盘上输入一个整数N,输出斐波纳契数列。
斐波纳契数列是一种整数数列,其中每数等于前面两数之和,如:
011235813…..
请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。
试题程序:
#include
intfun(intn);
intmain()
{
inti,n=0;
scanf("%d",&n);
for(i=0;iprintf("%d",fun(i));
return0;
}
intfun(intn)
{
if(___1___)
return0;
elseif(___2___)
return1;
else
return___3___;
}
改错题:
89.下列给定程序中,函数fun的功能是:
求整数x的y次方的低3位值。
例如,整数5的6次方为15625,此数的低3位值为625。
请改正函数fun中的错误,使它能得出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include
longfun(intx,inty,long*p)
{
inti;
longt=1;
/********found********/
for(i=1;it=t*x;
*p=t;
/********found********/
t=t/1000;
returnt;
}
main()
{
longt,r;
intx,y;
printf("\nInputxandy:
");
scanf("%ld%ld",&x,&y);
t=fun(x,y,&r);
printf("\n\nx=%d,y=%d,r=%ld,last=%ld\n\n",x,y,r,t);
}
编程题:
57.学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:
把指定分数范围内的学生数据放在b所指的数组中,分数范围内的学生人数由函数值返回。
例如,输入的分数是60和69,则应当把分数在60到69的学生数据进行输出,包含60分和69分的学生数据。
主函数中将把60放在low中,把69放在heigh中。
注意:
部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的
若干语句。
#include
#defineN16
typedefstruct
{
charnum[10];
ints;
}STREC;
intfun(STREC*a,STREC*b,intl,inth)
{
}
main()
{
STRECs[N]={{"GA005",85},{"GA003",76},{"GA002",69},{"GA004",85},
{"GA001",96},{"GA007",72},{"GA008",64},{"GA006",87},
{"GA015",85},{"GA013",94},{"GA012",64},{"GA014",91},
{"GA011",90},{"GA017",64},{"GA018",64},{"GA016",72}};
STRECh[N],tt;
FILE*out;
inti,j,n,low,heigh,t;
printf("Enter2integernumberlow&heigh:
");
scanf("%d%d",&low,&heigh);
if(heigh{
t=heigh;
heigh=low;
low=t;
}
n=fun(s,h,low,heigh);
printf("Thestudent'sdatabetween%d----%d:
\n",low,heigh);
for(i=0;iprintf("%s%4d\n",h[i].num,h[i].s);
printf("\n");
out=fopen("out18.dat","w");
fprintf(out,"%d\n",n);
n=fun(s,h,80,98);
for(i=0;ifor(j=i+1;jif(h[i].s>h[j].s)
{
tt=h[i];
h[i]=h[j];
h[j]=tt;
}
for(i=0;ifprintf(out,"%4d\n",h[i].s);
fprintf(out,"\n");
fclose(out);
}
第三套
填空题
请补充函数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___;
}
}
intmain()
{
chara[N];
printf("Enterastring:
");
gets(a);
printf("Theoriginalstringis:
");
puts(a);
fun(a);
printf("\n");
printf("Thestringaftermodified:
");
puts(a);
return0;
}
改错题:
96.下列给定程序中,函数fun的功能是:
求s的值。
设
224262(2k)2
s=——×——×——×…×—————
1x33x55x7(2k-1)x(2k+1)
例如,当k为10时,函数值应为1.533852。
请改正程序中的错误,使程序能输出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include
#include
#include
/********found********/
fun(intk)
{
intn;
floats,w,p,q;
n=1;
s=1.0;
while(n<=k)
{
w=2.0*n;
p=w-1.0;
q=w+1.0;
s=s*w*w/p/q;
n++;
}
/********found********/
returns
}
main()
{
clrscr();
printf("%lf\n",fun(10));
}
编程题:
65.请编写函数fun,其功能是:
将两个两位数的正整数a、b合并形成一个整数放在c中。
合并的方式是:
将a数的十位和个位数依次放在c数的百位和个位上,b数的十位和个位数依次放在c数的十位和千位上。
例如,当a=45,b=12,调用该函数后,c=2415。
注意:
部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
#include
#include
voidfun(inta,intb,long*c)
{
}
main()
{
inta,b;
longc;
clrscr();
printf("Inputa,b;");
scanf("%d%d",&a,&b);
fun(a,b,&c);
printf("Theresultis:
%ld\n",c);
}
第四套
填空题
请补充函数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;
}
intmain()
{
intn;
doubles;
printf("\nInputn:
");
scanf("%d",&n);
s=fun(n);
printf("\n\ns=%f\n",s);
return0;
}
改错题:
95.下列给定程序中,函数fun的功能是:
计算并输出下列级数的前N项之和SN。
,直到
SN+1大于q为止,q的值通过形参传入。
234N+1
SN=-+-+-+…+-
123N
例如,若q的值为50.0,则函数值为49.394948。
请改正程序中的错误,使程序能输出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include
#include
doublefun(doubleq)
{
intn;doubles,t;
n=2;
s=2.0;
while(s<=q)
{
t=s;
/********found********/
s=s+(n+1)/n;
n++;
}
printf("n=%d\n",n);
/********found********/
returns;
}
main()
{clrscr();
printf("%f\n",fun(50));
}
编程题:
60.请编写函数fun,该函数的功能是:
删去一维数组中所有相同的数,使之只剩一个。
数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。
例如,若一维数组中的数据是:
2223445666677899101010。
删除后,数组中的内容应该是:
2345678910。
注意:
部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
#include
#defineN80
intfun(inta[],intn)
{
}
main()
{
inta[N]={2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10,10},i,n=20;
printf("Theoriginaldata:
\n");
for(i=0;iprintf("%3d",a[i]);
n=fun(a,n);
printf("\n\nThedataafterdeleted:
\n");
for(i=0;iprintf("%3d",a[i]);
printf("\n\n");
}
第五套
填空题
给定程序的功能是求二分之一的圆面积,函数通过形参得到圆的半径,函数返回二分之一的圆面积(注:
圆面积公式为:
S=,在程序中定义的变量名要与公式的变量相同)。
例如,输入圆的半径值:
19.527,输出为:
S=598.950017。
请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。
试题程序:
#include
doublefun(doubler)
{
return3.14159*___1___/2.0;
}
intmain()
{
doublex;
printf("Enterx:
");
scanf("%lf",___2___);
printf("s=%lf\n",fun(___3___));
return0;
}
编程题:
63.请编写一个函数fun,它的功能是:
计算并输出给定整数n的所有因子(不包括1与自身)之和。
规定n的值不大于1000。
备注:
整数n的因子-n可以整除的数。
例如,若主函数从键盘给n输入的值为856,则输出为sum=763。
注意:
部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
#include
intfun(intn)
{
}
main()
{
intn,sum;
printf("Inputn:
");
scanf("%d",&n);
sum=fun(n);
printf("sum=%d\n",sum);
}
改错题:
94.在主函数中从键盘输入若干个数放入数组中,用0结束输入并放在最后一个元素中。
下列给定程序中,函数fun的功能是:
计算数组元素中值为正数的平均值(不包括0)。
例如:
数组中元素中的值依次为39,-47,21,2,-8,15,0,则程序的运行结果为l9.250000。
请改正程序中的错误,使它能得出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include
#include
doublefun(intx[])
{
/********found********/
intsum=0.0;
intc=0,i=0;
while(x[i]!
=0)
{
if(x[i]>0)
{
sum+=x[i];
c++;
}
i++;
}
/********found********/
sum\=c;
returnsum;
}
main()
{
intx[1000];
inti=0;
printf("\nPleaseentersomedata(endwith0):
");
do
{
scanf("%d",&x[i]);
}
while(x[i++]!
=0);
printf("%lf\n",fun(x));
}