函数40.docx
- 文档编号:7132220
- 上传时间:2023-01-21
- 格式:DOCX
- 页数:21
- 大小:19.45KB
函数40.docx
《函数40.docx》由会员分享,可在线阅读,更多相关《函数40.docx(21页珍藏版)》请在冰豆网上搜索。
函数40
题目部分,(卷面共有40题,234.0分,各大题标有题量和总分)
一、编程题(7小题,共78.0分)
(10分)[1]编制一个函数,由参数传入一个字符串,统计此字串中字母、数字、和其他字符的个数,在主函数中输入字符串并显示统计结果。
(9分)[2]编写一函数,使输入的一个字符串按反序存放,在主函数中输入输出字符串。
(10分)[3]写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。
两个整数由键盘输入。
(12分)[4]请编写一个函数jc,实现求k!
,所求阶乘值作为函数值返回,例如,若k=10,则返回值应为3628800。
(15分)[5]用选择排序法实现N元数组a[0]~a[N-1]由小到大排序。
(12分)[6]编写一个函数intfun(intw),w是一个大于10的整数,若w是n(n>=2)位的整数,函数求出w的后n-1位的猪作为函数值返回。
例如:
w值为5923,则函数返回923,w值为923则返回23。
(10分)[7]编写函数summary,该函数功能是:
计算并输出k以内最大的10个能被13或17整除的自然数之和.k的值由主函数传入,若k的值为500,则函数值为4622。
二、判断题(8小题,共16.0分)
(2分)[1]return语句中表达式的类型必须与函数定义的类型一致。
()
(2分)[2]外部类型的变量作用范围大,编程中应多用外部变量。
()
(2分)[3]外部类型的变量只能定义一次,但可在不同地方声明多次。
()
(2分)[4]函数的实参和形参可以是相同的名字。
()
(2分)[5]只有main函数才能调用其他函数。
()
(2分)[6]函数的函数体可以是空语句()。
(2分)[7]若定义的函数没有参数,则函数名后的圆括号可以省略。
()
(2分)[8]函数调用中,形参与实参的类型和个数必须保持一致。
()
三、写出程序的运行结果(25小题,共140.0分)
(5分)[1]以下程序的运行结果是_______。
main()
{
incx();
incy();
incx();
incy();
incx();
incy();
}
incx()
{
intx=0;
printf(“x=%d\t”,++x);
}
incy()
{
staticinty=0;
printf(“\ny=%d\n”,++y);
}
(5分)[2]以下程序的运行结果是_______。
intx;
main()
{
x=5;
cube();
printf(“%d\n”,x);
}
cube()
{
x=x*x*x;
}
(5分)[3]以下程序的运行结果是_______。
inta=3,b=5;
max(a,b)
{
intc;
c=a>b?
a:
b;
return(c);
}
main()
{
inta=8;
printf(“%d”,max(a,b));
}
(5分)[4]以下程序的运行结果是_______。
inta=5;intb=7;
main()
{
inta=4,b=5,c;
c=plus(a,b);
printf(“A+B=%d\n”,c);
}
plus(intx,inty)
{
intz;
z=x+y;
return(z);
}
(5分)[5]以下程序的运行结果是_______。
inti=0;
main()
{
inti=5;
reset(i/2);printf(“i=%d\n”,i);
reset(i=i/2);printf(“i=%d\n”,i);
reset(i/2);printf(“i=%d\n”,i);
workover(i);printf(“i=%d\n”,i);
}
workover(inti)
{
i=(i%i)*((i*i)/(2*i)+4);
printf(“i=%d\n”,i);
return(i);
}
reset(inti)
{
i=i<=2?
5:
0;
return(i);
}
(5分)[6]以下程序的运行结果是_______。
intx1=30,x2=40;
main()
{
intx3=10,x4=20;
sub(x3,x4);
sub(x2,x1);
printf(“%d,%d,%d,%d\n”,x3,x4,x1,x2);
}
sub(intx,inty)
{
x1=x;
x=y;
y=x1;
}
(5分)[7]以下程序的运行结果是_______。
#include
intk=1;
main()
{
inti=4;
fun(i);
printf(“
(1)%d,%d\n”,i,k);
}
fun(intm)
{
m+=k;k+=m;
{
chark=‘B’;
printf(“
(2)%d\n”,k-‘A’);
}
printf(“(3)%d,%d\n”,m,k);
}
(5分)[8]以下程序的运行结果是_______。
#include
func(intarray[][4],intm)
{
inti,j,k;
k=0;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
if(array[i][j] k=k+array[i][j]; return(k); } main() { staticinta[3][4]={{1,13,5,7},{2,4,26,8},{10,1,3,12}}; inti,j,m; for(i=0;i<3;i++) { for(j=0;j<4;j++)printf(“%4d”,a[i][j]); printf(“\n”); } m=10; printf(“\nthevalueis%d\n”,func(a,m)); } (5分)[9]以下程序运行结果是_______。 main() { inta=1,b=2,c=3; ++a; c+=++b; { intb=4,c; c=b*3; a+=c; printf(“first: %d,%d,%d\n”,a,b,c); a+=c; printf(“second: %d,%d,%d\n”,a,b,c); } printf(“third: %d,%d,%d\n”,a,b,c); } (5分)[10]以下程序的运行结果是_______。 main() { increment(); increment(); increment(); } increment() { staticintx=0; x+=1; printf(“%d”,x); } (5分)[11]以下程序的运行结果是_______。 intn=1; main() { staticintx=5;inty; y=n; printf(“MAIN: x=%2dy=%2dn=%2d\n”,x,y,n); func(); printf(“MAIN: x=%2dy=%2dn=%2d\n”,x,y,n); func(); } func() { staticintx=4;inty=10; x=x+2; n=n+10; y=y+n; printf(“FUNC: x=%2dy=%2dn=%2d\n”,x,y,n); } (10分)[12]以下程序的运行结果是_______。 main() { inta[3][3]={1,3,5,7,9,11,13,15,17};intsum; sum=func(a); printf(“\nsum=%d\n”,sum); } func(inta[][3]) { inti,j,sum=0; for(i=0;i<3;i++) for(j=0;j<3;j++) { a[i][j]=i+j; if(i==j)sum=sum+a[i][j]; } return(sum); } (5分)[13]以下程序的运行结果是_______。 #include main() { inta=1,b=2,c; c=max(a,b); printf(“maxis%d\n”,c); } max(intx,inty) { intz; z=(x>y)? x: y; return(z); } (5分)[14]以下程序的运行结果是_______。 main() { increment(); increment(); increment(); } increment() { intx=0; x+=1; printf(“%d”,x); } (5分)[15]以下程序的运行结果是_______。 main() { inti=2,x=5,j=7; fun(j,6); printf(“i=%d;j=%d;x=%d\n”,i,j,x); } fun(inti,intj) { intx=7; printf(“i=%d;j=%d;x=%d\n”,i,j,x); } (5分)[16]若输入的值是-125,以下程序的运行结果是_______。 #include main() { intn; scanf(“%d”,&n); printf(“%d=”,n); if(n<0)printf(“-”); n=fabs(n); fun(n); } fun(intn) { intk,r; for(k=2;k<=sqrt(n);k++) { r=n%k; while(r==0) { printf(“%d”,k); n=n/k; if(n>1)printf(“*”); r=n%k; } } if(n! =1)printf(“%d\n”,n); } (5分)[17]以下程序的运行结果是_______。 #include f(inta[]) { inti=0; while(a[i]<=10) { printf(“%d”,a[i]); i++; } } main() { inta[]={1,5,10,9,11,7}; f(a+1); } (5分)[18]以下程序的运行结果是_______。 main() { inti=5; printf(“%d\n”,sub(i)); } sub(intn) { inta; if(n==1)return1; a=n+sub(n-1); return(a); } (5分)[19]以下程序的运行结果是_______。 #include main() { printf(“FACT(5): %d\n”,fact(5)); printf(“FACT (1): %d\n”,fact (1)); fact(-5); } fact(intvalue) { if(value<0){printf(“FACT(-1): Error! \n”);return(-1);} elseif(value==||value==0)return (1); elsereturn(value*fact(value-1)); } (10分)[20]阅读下面程序,完成下列问题中的填空。 问题 (1)此程序在调用函数f后运行结果是【1】。 (2)若将函数f中的for(j=i+1;j<4;j++)改为for(j=0;j<3-i;j++),则 程序的运行结果是【2】。 f(ints[][4]) { inti,j,k; for(i=0;i<3;i++) for(j=i+1;j<4;j++) {k=s[i][j];s[i][j]=s[j][i];s[j][i]=k;} main() { ints[4][4],i,j; for(i=0;i<4;i++) for(j=0;j<4;j++) s[i][j]=i-j; f(s); for(i=0;i<4;i++) { printf(“\n”); for(j=0;j<4;j++) printf(“%4d”,s[i][j]); } } (10分)[21]以下程序的运行结果是_______。 main() { intx=2,y=3,z=0; printf(“ (1)x=%dy=%dz=%d\n”,x,y,z); add(x,y,z); printf(“(3)x=%dy=%dz=%d\n”,x,y,z); } add(intx,inty,intz) { z=x+y;x=x*x;y=y*y; printf(“ (2)x=%dy=%dz=%d\n”,x,y,z); } (5分)[22]若输入一个整数10,以下程序的运行结果是_______。 main() { inta,e[10],c,i=0; printf(“输入一整数\n”); scanf(“%d”,&a); while(a! =0) { c=sub(a); a=a/2; e[i]=c; i++; } for(;i>0;i--)printf(“%d”,e[i-1]); } sub(inta) { intc; c=a%2; returnc; } (5分)[23]函数f中的形参a为一个10×10的二维数组,n的值为5,以下程序段的运行结果是_______。 f(inta[10][10],intn) { inti,j,k; j=n/2+1;a[1][j]=1;i=1; for(k=2;k<=n*n;k++) { i=i-1;j=j+1; if((i<1)&&(j>n)){i=i+2;j=j-1;} else { if(i<1)i=n; if(j>n)j=1; } if(a[i][j]==0)a[i][j]=k; else{i=i+2;j=j-1;a[i][j]=k;} } } (5分)[24]下列程序的输出结果是_______________。 intt(intx,inty,intcp,intdp) {cp=x*x+y*y; dp=x*x-y*y; } main() {inta=4,b=3,c=5,d=6; t(a,b,c,D、; printf("%d%d\n",c,D、; } (5分)[25]以下程序的运行结果是_______________。 #include main() {intk=4,m=1,p; p=func(k,m);printf("%d,",p); p=func(k,m);printf("%d\n",p); } func(inta,intb) {staticintm=0,i=2; i+=m+1; m=i+a+b; returnm; } ====================答案==================== 答案部分,(卷面共有40题,234.0分,各大题标有题量和总分) 一、编程题(7小题,共78.0分) (10分)[1][答案] printf("Pleaseenterastring: "); gets(str); letter=space=num=other=0; for(i=0;str[i]! ='\0';i++) { c=str[i]; if((c>='A'&&c<='Z')||(c>='a'&&c<='z')) letter++; elseif(c>='0'&&c<='9') num++; elseif(c=='') space++; elseother++; } (9分)[2][答案] 提示: 一维字符数组用来存放字符串,并且将它传递到函数,在函数中通过元素值交换来完成反序存放。 (10分)[3][答案] 提示: 最大公约数可以采用“辗转相除法”,最小公倍数将两数乘积除于最大公约数。 “辗转相除法”: 设两个数分别用m,n表示且m>n,临时变量t,t=m%n;m=n;n=t;直到n等于0。 (12分)[4][答案] #include longfun(intk) {if(k>0) return(k*fun(k-1)); elseif(k==0) return1l; } main() {intk; scanf("%d",&k); clrscr(); printf("%d! =%ld",k,fun(k)); } (15分)[5][答案] #include“stdio.h” #defineN10 voidSelSort(inta[N])/*选择排序函数*/ {inti,j,minj,t; for(i=0;i {minj=i; for(j=i+1;j if(minj! =i){t=a[i];a[i]=a[minj];a[minj]=t;} } } voidmain() {inta[N],i; for(i=0;i SelSort(a); for(i=0;i } (12分)[6][答案] intfun(intw) {intn=0,i=1; while(w>10) {n=n+i*(w%10); w/=10; i*=10; } retrunn; } main() {intx; printf("Enterainteger: "); scanf("%d",&x); printf("Theoriginaldatais: %d\n",x); if(x<10)printf("Dataerror! "); elseprintf("Theresult: %d\n",fun(x)); } (10分)[7][答案] #include intsunmmary(intk) {intsum=0,count=0,j; while((k>=2)&&(conut<10)) {if((k%13==0)||k%17==0) {sum=sum+k,count++;} k--; } retrunsum; } main() {intx; scanf("%d",&x); clrscr(); printf("%d\n",summary(x)); } 二、判断题(8小题,共16.0分) (2分)[1][答案] 错 (2分)[2][答案] 错 (2分)[3][答案] 对 (2分)[4][答案] 对 (2分)[5][答案] 对 (2分)[6][答案] 对 (2分)[7][答案] 错 (2分)[8][答案] 对 三、写出程序的运行结果(25小题,共140.0分) (5分)[1][答案] x=1 y=1 x=1 y=2 x=1 y=3 (5分)[2][答案] 125 (5分)[3][答案] 8 (5分)[4][答案] A+B=9 (5分)[5][答案] i=5 i=2 i=2 i=0 i=2 (5分)[6][答案] 10,20,40,40 (5分)[7][答案] (2)1 (3)5,6 (1)4,6 (5分)[8][答案] 11357 24268 101312 thevalueis31 (5分)[9][答案] first: 14,4,12 second: 26,4,12 third: 26,3,6 (5分)[10][答案] 123 (5分)[11][答案] MAIN: x=5y=1n=1 FANC: x=6y=21n=11 MAIN: x=5y=1n=11 FANC: x=8y=31n=21 (10分)[12][答案] sum=6 (5分)[13][答案] maxis2 (5分)[14][答案] 111 (5分)[15][答案] i=7;j=6;x=7 i=2;j=7;x=5 (5分)[16][答案] -125=-5*5*5 (5分)[17][答案] 5109 (5分)[18][答案] 15 (5分)[19][答案] FACT(5): 120 FACT (1): 1 FACT(-1): Error! (10分)[20][答案] 【1】0123 -1012 -2-101 -3-2-10 【2】0-1-2-3 10-1-2 210-1 3210 (10分)[21][答案] (1)x=2y=3z=0 (2)x=4y=9z=5(3)x=2y=3z=0 (5分)[22][答案] 1010 (5分)[23][答案] 打印5阶幻方: 17241815 23571416 46132022 101219213 11182529 (5分)[24][答案] 56 (5分)[25][答案] 8,17
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 函数 40