c上机题目10套.docx
《c上机题目10套.docx》由会员分享,可在线阅读,更多相关《c上机题目10套.docx(35页珍藏版)》请在冰豆网上搜索。
c上机题目10套
一、程序填空题
考试做题要求:
1、在__1__处填写正确的答案,并将下划线和数字删除。
2、将题目做完之后一定要保存。
3、不能删除/**********found**********/,也不能多行或少行。
1、请补充fun函数,fun函数的功能是求m的阶乘。
请勿改动主函数main与其他函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。
注意:
部分源程序给出如下。
#include<>
longfun(intm)
{
if(___1___)
return(m*fun(___2___));
return___3___;
}
main()
{
printf("8!
=%ld\n",fun(8));
}
2、请补充fun函数,该函数的功能是:
判断一个年份是否为闰年。
例如,2007年不是闰年,2008是闰年。
请勿改动主函数main与其他函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。
注意:
部分源程序给出如下。
#include<>
#include<>
intfun(intn)
{
intflag=0;
if(n%4==0)
if(____1_____)
flag=1;
if(____2____)
flag=1;
return___3____;
}
main()
{
intyear;
printf("Inputtheyear:
");
scanf("%d",&year);
if(fun(year))
printf("%disaleapyear.\n",year);
else
printf("%disnotaleapyear.\n",year);
}
3、函数fun的功能是:
从三个形参x、y、z中找出中间的那个数,作为函数值返回。
例如,当x=121,y=456,z=333时,中间的数为333。
请勿改动主函数main与其他函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。
注意:
部分源程序给出如下。
#include<>
intfun(inta,intb,intc)
{
inttemp;
temp=(a>b)(b>cb:
(a>cc:
___1___)):
((a>c)___2___:
((b>c)c:
___3___));
returntemp;
}
main()
{
intx=121,y=456,z=333,mid;
mid=fun(x,y,z);
printf("\nThemiddlenumberis:
%d\n",mid);
}
4、请补充函数fun(char*t),该函数的功能是把字符串中的内容逆置。
例如,字符串中原有的字符串为ABCDE,则调用该函数后,串中的内容为EDCBA。
请勿改动主函数main与其他函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。
注意:
部分源程序给出如下。
#include<>
#include<>
#include<>
#defineM60
voidfun(char*t)
{
intj,m=strlen(t)-1;
chars;
for(j=0;j{
s=t[j];
___2___;
___3___;
}
}
main()
{
charb[M];
printf("Inputastring:
");
gets(b);
printf("Theoriginalstringis:
");
puts(b);
fun(b);
printf("\n");
printf("Thereversalstring:
");
puts(b);
}
5、请补充main函数,该函数的功能是:
从键盘输入一个长整数,如果这个数是负数,则取它的绝对值,并显示出来。
例如,输入:
-666,结果为:
666。
仅在横线上填写所需的若干表达式或语句,请勿改动函数中的其他任何内容。
注意:
部分源程序给出如下。
#include<>
#include<>
main()
{
longinta;
printf("Enterthedata:
\n");
scanf(___1___);
printf("Theorigialdatais%ld\n",a);
if(a<0)
___2___;
printf("\n");
printf(___3___);
}
6、请补充函数fun,它的功能是:
计算并输出m(包括m)以内能被2或5整除的所有自然数的倒数之和。
例如,在主函数中从键盘给m输入21后,输出为:
s=。
请勿改动主函数main与其他函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。
注意:
部分源程序给出如下。
#include<>
doublefun(intm)
{
intj;
doubletoal=;
for(j=1;___1___;j++)
if(j%2==0___2___j%5==0)
toal+=___3___/j;
returntoal;
}
main()
{
intm;
doublef;
printf("\nInputm:
");
scanf("%d",&m);
f=fun(m);
printf("\n\ns=%f\n",f);
}
7、请补充fun函数,该函数的功能是把从键盘输入的3个整数按从大到小输出。
例如,输入116513,结果输出651311。
仅在横线上填写所需的若干表达式或语句,请勿改动函数中的其他任何内容。
注意:
部分源程序给出如下。
#include<>
#include<>
main()
{
inta,b,c,t;
printf("Inputa,b,c\n");
scanf("%d%d%d",&a,&b,&c);
if(___1___)
{
t=a;
a=b;
b=t;
}
if(___2___)
{
t=c;
c=a;
a=t;
}
if(___3___)
{
t=b;
b=c;
c=t;
}
printf("Theresult\n");
printf("frombigtosmall:
%d%d%d\n",a,b,c);
}
8、给定程序的功能是分别统计字符串中大写字母和小写字母的个数。
例如,给字符串str输入:
sfd34ddfoFFDEsd23sdf,则输出结果应为:
cap=4,min=13
请勿改动函数中的其他内容,仅在横线上填写所需的若干表达式或语句。
注意:
部分源程序给出如下。
#include<>
voidfun(char*str,int*x,int*y)
{
while(*str)
{
if(*str>='A'&&*str<='Z')
___1___;
if(*str>='a'&&*str<='z')
___2___;
str++;
}
}
main()
{
charstr[100];
intcap=0,min=0;
printf("\nPleaseastringtocount:
");
gets(str);
fun(str,&cap,&min);
printf("\ncap=%dmin=%d\n",___3___);
}
9、给定程序的功能是求1/4的圆周长,函数通过形参得到圆的直径,函数返回1/4的圆周长(圆周长公式为:
L=πd,在程序中定义的变量名要与公式的变量相同)。
例如,输入圆的直径值:
,输出为:
。
请勿改动主函数main与其他函数中的任何内容,仅在横线上填写所需的若干表达式或语句。
注意:
部分源程序给出如下。
#include<>
doublefun(doubled)
{
return*___1___/;
}
main()
{
doublez;
printf("Inputthedoftheround:
");
scanf("%lf",&___2___);
printf("L=%lf\n",fun(___3___));
}
10、函数fun的功能是:
统计长整数test的各位上出现数字5、6、7的次数,并通过外部(全局)变量sum5、sum6、sum7返回主函数。
例如,当test=时,结果应该为:
sum5=0 sum6=2 sum7=1。
请勿改动主函数main与其他函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。
注意:
部分源程序给出如下。
#include<>
intsum5,sum6,sum7;
voidfun(longtest)
{
sum5=sum6=sum7=0;
while(test)
{
switch(___1___)
{
case5:
sum5++;
___2___;
case6:
sum6++;
___3___;
case7:
sum7++;
}
test/=10;
}
}
main()
{
longtest=89431676L;
fun(test);
printf("\nThecountresult:
\n");
printf("test=%ldsum5=%dsum6=%dsum7=%d\n",test,sum5,sum6,sum7);
}
二、程序改错题
考试做题要求:
1、在/**********found**********/的下一行改正错误。
2、将题目做完之后一定要保存。
3、不能删除/**********found**********/,也不能多行或少行。
1、下列给定程序的功能是:
读入一个整数n(2≤n≤5000),打印它的所有为素数的因子。
例如,若输入整数1234,则应输出:
2、617。
请修改程序中的错误,使程序能得出正确的结果。
注意:
不要改动main函数,不能增行或删行,也不能更改程序的结构。
#include<>
#include<>
/*******error*********/
Prime(intm);
{
intj,p;
p=1;
/*******error*********/
for(j=2;jif!
(m%j)
{
p=0;
break;
}
return(p);
}
main()
{
inti,n;
printf("\npleaseenteranintegernumberbetween2and5000:
");
scanf("%d",&n);
printf("\n\nTheprimefactor(s)of%dis(are):
",n);
for(i=2;iif((!
(n%i))&&(Prime(i)))
printf("%4d,",i);
printf("\n");
}
2、下列给定程序中,fun函数的功能是:
根据形参n,计算如下公式的值。
例如,若输入5,则应输出。
请修改程序中的错误或在横线处填上适当的内容并把横线删除,使它能计算出正确的结果。
注意:
不要改动main函数,不能增行或删行,也不能更改程序的结构。
#include<>
#include<>
doublefun(intn)
{
doubles=;
inti;
/******error**********/
for(i=2;i<=n;i++)
s+=k;
/******error**********/
___填空___
}
main()
{
intn;
printf("\npleaseenter1integernumbers:
\n");
scanf("%d",&n);
printf("\n\ntheresultis%lf\n",fun(n));
}
3、下列给定程序中,函数fun和quest的功能是:
用二分法求方程2x3-4x2+3x-6=0的一个根,并要求绝对误差不超过。
例如,若给m输入-50,给n输入30,则函数求得的一个根值为。
请修改程序中的错误,得出正确的结果。
注意:
不要改动main函数,不能增行或删行,也不能更改程序的结构。
#include<>
#include<>
doublequest(doublex)
{
return(2*x*x*x-4*x*x+3*x-6);
}
doublefun(doublem,doublen)
{
/********error********/
intr;
r=(m+n)/2;
/********error********/
while(fabs(n-m)<
{
if(quest(r)*quest(n)<0)
m=r;
else
n=r;
r=(m+n)/2;
}
returnr;
}
main()
{
doublem,n,result;
printf("Pleaseinputmn:
\n");
scanf("%lf%lf",&m,&n);
result=fun(m,n);
printf("result=%6.3f\n",result);
}
4、下列给定程序中,函数fun的功能是:
判断字符ch是否与s所指串中的某个字符相同,若相同,则什么也不做;若不同,则将其插在串的最后。
请修改程序中的错误,使它能得出正确的操作。
注意:
不要改动main函数,不能增行或删行,也不能更改程序的结构。
#include<>
#include<>
#include<>
/*******error*********/
voidfun(chars,charc)
{
while(*s&&*s!
=c)
s++;
/*******error*********/
if(*s=='c')
{
s[0]=c;
/*******error*********/
s[1]='0';
}
}
main()
{
charstr[81],ch;
printf("\nPleaseenterastring:
\n");
gets(str);
printf("\nPleaseenterthecharacter
tosearch:
");
ch=getchar();
fun(str,ch);
printf("\nTheresultis%s\n",str);
}
5、下列给定程序中函数fun的功能是:
求出在字符串中最后一次出现的子字符串的地址,通过函数值返回,在主函数中输出从此地址开始的字符串;若未找到,则函数值为NULL。
例如,当字符串中的内容为abcdabfabcdx,t中的内容为ab时,输出结果应是:
abcdx。
当字符串中的内容为abcdabfabcdx,t中的内容为abd时,则程序输出未找到信息"notfound!
"。
请修改程序中的错误,使程序能得出正确的结果。
注意:
不要改动main函数,不能增行或删行,也不能更改程序的结构。
#include<>
#include<>
#include<>
char*fun(char*str,char*t)
{
char*p,*r,*s;
/********error********/
s=NuLL;
while(*str)
{
p=str;
r=t;
while(*r)
/*******error*********/
if(r==p)
{
r++;
p++;
}
else
{
break;
}
if(*r=='\0')
s=str;
str++;
}
returns;
}
main()
{
charstr[100],t[100],*p;
printf("\npleaseenterstrings:
");
scanf("%s",str);
printf("\npleaseentersubstringt:
");
scanf("%s",t);
p=fun(str,t);
if(p)
printf("\ntheresultis:
%s\n",p);
else
printf("\nnotfound!
\n");
}
6、下列给定程序中,函数fun的功能是:
按以下递归公式求函数值。
10 (n=1)
fun(n)=
fun(n-1)+2 (n>1)
例如,当给n输入6时,函数值为20。
请修改程序中的错误,得出正确的结果。
注意:
不要改动main函数,不能增行或删行,也不能更改程序的结构。
#include<>
/********error********/
intfun(n)
{
intm;
/********error********/
if(n=1)
m=10;
else
m=fun(n-1)+2;
return(m);
}
main()
{
intn;
printf("Entern:
");
scanf("%d",&n);
printf("Theresult:
%d\n\n",fun(n));
}
7、下列给定程序中,计算如下公式的值:
函数fun的功能是:
根据整型形参m的值,计算上面公式。
例如,若m的值为10,则应输出:
。
请修改程序中的错误,得出正确的结果。
注意:
不要改动main函数,不能增行或删行,也不能更改程序的结构。
#include<>
#include<>
doublefun(intm)
{
doublec=;
intk;
/*******error*********/
for(k=2;k/*******error*********/
c-=1/(k*k);
return(c);
}
main()
{
intpara=10;
printf("\nTheresultis%1f\n",fun(para));
}
8、下列给定程序中,函数fun的功能是:
根据以下公式求π值,并作为函数值返回。
例如,给指定精度的变量eps输入时,应当输出Pi=。
请修改程序中的错误,使程序能得出正确的结果。
注意:
不要改动main函数,不能增行或删行,也不能更改程序的结构。
#include<>
#include<>
#include<>
doublefun(doubleeps)
{
doubler,temp;
intm=1;
r=;
/*******error*********/
temp=0;
/********error********/
while(temp<=eps)
{
r+=temp;
temp=(temp*m)/(2*m+1);
m++;
}
return(r*2);
}
main()
{
doublex;
printf("\nPleaseenteraprecision:
");
scanf("%lf",&x);
printf("\neps=%lf,Pi=%lf\n\n",x,fun(x));
}
9、下列给定程序中函数fun的功能是:
计算正整数m的各位上的数字之积。
例如,若输入202,则输出应该是0。
请修改程序中的错误,得出正确的结果。
注意:
不要改动main函数,不能增行或删行,也不能更改程序的结构。
#include<>
#include<>
longfun(longn)
{
/****error******/
longr;
do
{
r*=n%10;
/****error******/
n\=10;
}while(n);
return(r);
}
main()
{
longm;
printf("\npleaseenteranumber:
");
scanf("%ld",&m);
printf("\n%ld\n",fun(m));
}
10、下列给定程序中,函数fun的功能是:
将字符串str中的小写字母都改为对应的大写字母,其他字符不变。
例如,若输入"asAS",则输出"ASAS"。
请修改程序中的错误,使它能统计出正确的结果。
注意:
不要改动main函数,不能增行或删行,也不能更改程序的结构。
#include<>
#include<>
#include<>
char*fun(charstr[])
{
inti;
/********error********/
for(i=0;str[i];i++)
if((str[i]>='a')||(str[i]<='z'))
/*******error*********/
str[i]+=32;
return(str);
}
main()
{
charstr[81];
printf("\nPleaseenterastring:
");
gets(str);
printf("\nTheresultstringis:
\n%s",fun(str));
}
三、程序设计题
考试做题要求:
1、按题目要求编写部分代码,不要改动已经有的代码。
2、在运行时如果遇到死循环,按Ctrl+Break键结束运行。
3、题目做完后必须要有运行结果,没有运行结果没有分。
1、数组point中存放着m个人的成绩,请编写函数fun,它的功能是:
返回高于平均分的人数,并将高于平均分的分数放在high所指的数组中。
例如,当point数组中的数据为50、60、65、70、75、80、88、90、95时,函数返回的人数应该是5,high中的数据应为75、80、88、90、95。
请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
注意:
部分源程序给出如下。
#include<>
#include<>
#include<>
intfun(intpoint[],intn,inthigh[])
{
}
main()
{
intj,m,high