二级C语言上机题库.docx
《二级C语言上机题库.docx》由会员分享,可在线阅读,更多相关《二级C语言上机题库.docx(33页珍藏版)》请在冰豆网上搜索。
![二级C语言上机题库.docx](https://file1.bdocx.com/fileroot1/2022-12/30/b856ce97-bbec-425b-9ad2-bd0bba3c04fb/b856ce97-bbec-425b-9ad2-bd0bba3c04fb1.gif)
二级C语言上机题库
题库一
一、填空题
请补充fun函数,fun函数的功能是求m的阶乘。
请勿改动主函数main与其他函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。
注意:
部分源程序给出如下。
1
#include
2
longfun(intm)
3
{
4
if(___1___)
5
return(m*fun(___2___));
6
return___3___;
7
}
8
main()
9
{
10
printf("8!
=%ld\n",fun(8));
11
}
二、改错题
下列给定程序的功能是:
读入一个整数n(2≤n≤5000),打印它的所有为素数的因子。
例如,若输入整数1234,则应输出:
2、617。
请修改程序中的错误,使程序能得出正确的结果。
注意:
不要改动main函数,不能增行或删行,也不能更改程序的结构。
1
#include
2
#include
3
/*******error*********/
4
Prime(intm);
5
{
6
intj,p;
7
p=1;
8
/*******error*********/
9
for(j=2;j10
if!
(m%j)
11
{
12
p=0;
13
break;
14
}
15
return(p);
16
}
17
main()
18
{
19
inti,n;
20
printf("\npleaseenteranintegernumberbetween2and5000:
");
21
scanf("%d",&n);
22
printf("\n\nTheprimefactor(s)of%dis(are):
",n);
23
for(i=2;i24
if((!
(n%i))&&(Prime(i)))
25
printf("%4d,",i);
26
printf("\n");
27
}
三、编程题
数组point中存放着m个人的成绩,请编写函数fun,它的功能是:
返回高于平均分的人数,并将高于平均分的分数放在high所指的数组中。
例如,当point数组中的数据为50、60、65、70、75、80、88、90、95时,函数返回的人数应该是5,high中的数据应为75、80、88、90、95。
请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
注意:
部分源程序给出如下。
1
#include
2
#include
3
#include
4
intfun(intpoint[],intn,inthigh[])
5
{
6
7
}
8
main()
9
{
10
intj,m,high[9];
11
intpoint[9]={50,60,65,70,75,80,88,90,95};
12
FILE*out;
13
m=fun(point,9,high);
14
printf("\nHightheaveragepointare:
");
15
out=fopen("outfile.dat","w");
16
for(j=0;j17
{
18
printf("%d",high[j]);
19
fprintf(out,"%d\n0",high[j]);
20
}
21
fclose(out);
22
}
题库二
一、填空题
请补充fun函数,该函数的功能是:
判断一个年份是否为闰年。
例如,2007年不是闰年,2008是闰年。
请勿改动主函数main与其他函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。
注意:
部分源程序给出如下。
1
#include
2
#include
3
intfun(intn)
4
{
5
intflag=0;
6
if(n%4==0)
7
if(___1___)
8
flag=1;
9
if(___2___)
10
flag=1;
11
return___3___;
12
}
13
main()
14
{
15
intyear;
16
printf("Inputtheyear:
");
17
scanf("%d",&year);
18
if(fun(year))
19
printf("%disaleapyear.\n",year);
20
else
21
printf("%disnotaleapyear.\n",year);
22
}
二、改错题
下列给定程序中,fun函数的功能是:
根据形参n,计算如下公式的值。
…
例如,若输入5,则应输出2.28333。
请修改程序中的错误或在横线处填上适当的内容并把横线删除,使它能计算出正确的结果。
注意:
不要改动main函数,不能增行或删行,也不能更改程序的结构。
1
#include
2
#include
3
doublefun(intn)
4
{
5
doubles=1.0;
6
inti;
7
/******error**********/
8
for(i=2;i<=n;i++)
9
s+=1.0/k;
10
/******error**********/
11
___填空___
12
}
13
main()
14
{
15
intn;
16
printf("\npleaseenter1integernumbers:
\n");
17
scanf("%d",&n);
18
printf("\n\ntheresultis%lf\n",fun(n));
19
}
三、编程题
请编写函数fun,它的功能是:
求出1到500之内能被7或11整除,但不能同时被7和11整除的所有整数,并将它们放在b所指的数组中,通过m返回这些数的个数。
请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
注意:
部分源程序给出如下。
1
#include
2
#include
3
voidfun(int*b,int*m)
4
{
5
6
}
7
main()
8
{
9
inta[500],m,i;
10
FILE*out;
11
fun(a,&m);
12
out=fopen("outfile.dat","w");
13
for(i=0;i14
if((i+1)%10==0)
15
{
16
printf("%5d\n",a[i]);
17
fprintf(out,"d\n",a[i]);
18
}
19
else
20
{
21
printf("%5d,",a[i]);
22
fprintf(out,"%d,",a[i]);
23
}
24
fclose(out);
25
}
题库三
函数fun的功能是:
从三个形参x、y、z中找出中间的那个数,作为函数值返回。
例如,当x=121,y=456,z=333时,中间的数为333。
请勿改动主函数main与其他函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。
注意:
部分源程序给出如下。
1
#include
2
intfun(inta,intb,intc)
3
{
4
inttemp;
5
temp=(a>b)?
(b>c?
b:
(a>c
?
c:
___1___)):
6
((a>c)?
___2___:
7
((b>c)?
c:
___3___));
8
returntemp;
9
}
10
main()
11
{
12
intx=121,y=456,z=333,mid;
13
mid=fun(x,y,z);
14
printf("\nThemiddlenumberis:
%d\n",mid);
15
}
二、改错题
下列给定程序中,函数fun和quest的功能是:
用二分法求方程2x3-4x2+3x-6=0的一个根,并要求绝对误差不超过0.001。
例如,若给m输入-50,给n输入30,则函数求得的一个根值为2.000。
请修改程序中的错误,得出正确的结果。
注意:
不要改动main函数,不能增行或删行,也不能更改程序的结构。
1
#include
2
#include
3
doublequest(doublex)
4
{
5
return(2*x*x*x-4*x*x+3*x-6);
6
}
7
doublefun(doublem,doublen)
8
{
9
/********error********/
10
intr;
11
r=(m+n)/2;
12
/********error********/
13
while(fabs(n-m)<0.001)
14
{
15
if(quest(r)*quest(n)<0)
16
m=r;
17
else
18
n=r;
19
r=(m+n)/2;
20
}
21
returnr;
22
}
23
main()
24
{
25
doublem,n,result;
26
printf("Pleaseinputmn:
\n");
27
scanf("%lf%lf",&m,&n);
28
result=fun(m,n);
29
printf("result=%6.3f\n",result);
30
}
三、编程题
请编写函数voidfun(inty,intb[],int*m),它的功能是:
求出能整除y且是奇数的各整数,并按从小到大的顺序放在b所指的数组中,这些除数的个数通过形参m返回。
例如,若y中的值为90,则有4个数符合要求,它们是1、3、5、9、15、45。
请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
注意:
部分源程序给出如下。
1
#include
2
#include
3
voidfun(inty,intb[],int*m)
4
{
5
6
}
7
main()
8
{
9
inty,a[500],m,j;
10
FILE*out;
11
printf("\nPleaseinputanintegernumber:
\n");
12
scanf("%d",&y);
13
fun(y,a,&m);
14
for(j=0;j15
printf("%d",a[j]);
16
printf("\n");
17
fun(730,a,&m);
18
out=fopen("outfile.dat","w");
19
for(j=0;j20
fprintf(out,"%d\n",a[j]);
21
fclose(out);
22
}
题库四
一、填空题
请补充函数fun(char*t),该函数的功能是把字符串中的内容逆置。
例如,字符串中原有的字符串为ABCDE,则调用该函数后,串中的内容为EDCBA。
请勿改动主函数main与其他函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。
注意:
部分源程序给出如下。
1
#include
2
#include
3
#include
4
#defineM60
5
voidfun(char*t)
6
{
7
intj,m=strlen(t)-1;
8
chars;
9
for(j=0;j10
{
11
s=t[j];
12
___2___;
13
___3___;
14
}
15
}
16
main()
17
{
18
charb[M];
19
printf("Inputastring:
");
20
gets(b);
21
printf("Theoriginalstring
is:
");
22
puts(b);
23
fun(b);
24
printf("\n");
25
printf("Thereversalstring:
");
26
puts(b);
27
}
二、改错题
下列给定程序中,函数fun的功能是:
判断字符ch是否与s所指串中的某个字符相同,若相同,则什么也不做;若不同,则将其插在串的最后。
请修改程序中的错误,使它能得出正确的操作。
注意:
不要改动main函数,不能增行或删行,也不能更改程序的结构。
1
#include
2
#include
3
#include
4
/*******error*********/
5
voidfun(chars,charc)
6
{
7
while(*s&&*s!
=c)
8
s++;
9
/*******error*********/
10
if(*s=='c')
11
{
12
s[0]=c;
13
/*******error*********/
14
s[1]='0';
15
}
16
}
17
main()
18
{
19
charstr[81],ch;
20
printf("\nPleaseenterastring:
\n");
21
gets(str);
22
printf("\nPleaseenterthe
charactertosearch:
");
23
ch=getchar();
24
fun(str,ch);
25
printf("\nTheresultis%s\n",str);
26
}
三、编程题
请编写函数fun,函数的功能是求出二维数组周边元素之和,作为函数值返回。
二维数组中的值在主函数中赋予。
例如,若二维数组中的值为:
3 5 7 9
9 9 9 4
9 9 9 8
则函数值为72。
请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
注意:
部分源程序给出如下。
1
#include
2
#include
3
#defineM3
4
#defineN4
5
intfun(intb[M][N])
6
{
7
8
}
9
main()
10
{
11
inta[M][N]={{3,5,7,9},{9,9,9,4},
{9,9,9,8}};
12
inti,j,sum;
13
FILE*out;
14
printf("Theoriginaldatais:
\n");
15
for(i=0;i16
{
17
for(j=0;j18
printf("%6d",a[i][j]);
19
printf("\n");
20
}
21
sum=fun(a);
22
printf("\nThesum:
%d\n",sum);
23
printf("\n");
24
out=fopen("outfile.dat","w");
25
fprintf(out,"%d",sum);
26
fclose(out);
28
}