函数调用.docx
- 文档编号:4893256
- 上传时间:2022-12-11
- 格式:DOCX
- 页数:18
- 大小:21.24KB
函数调用.docx
《函数调用.docx》由会员分享,可在线阅读,更多相关《函数调用.docx(18页珍藏版)》请在冰豆网上搜索。
函数调用
第七章习题
一、选择题
1)若各选项中所用变量已正确定义,函数fun中通过return语句返回一个函数值,以下选项中错误的程序是
A)main()
B)floatfun(inta,intb){……}
{……x=fun(2,10);……}
main()
floatfun(inta,intb){……}
{……x=fun(i,j);……}
C)floatfun(int,int);
D)main()
main()
{floatfun(inti,intj);
{……x=fun(2,10);……}
……x=fun(i,j);……}
floatfun(inta,intb){……}
floatfun(inta,intb){……}
2)已定义以下函数
intfun(int*p)
{return*p;}
fun函数返回值是
A)不确定的值B)一个整数C)形参p中存放的值D)形参p的地址值
3)若有以下函数首部。
intfun(doublex[10],int*n)
则下面针对此函数的函数声明语句中正确的是(B)。
A)intfun(doublex,int*n);B)intfun(double,int);
C)intfun(double*x,intn);D)intfun(double*,int*);
4)若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是B
A)函数的实参和其对应的形参共占同一存储单元
B)形参只是形式上的存在,不占用具体存储单元
C)同名的实参和形参占同一存储单元
D)函数的形参和实参分别占用不同的存储单元
5)下面的函数调用语句中func函数的是实参个数是 ()
func(f2(v1,v2)),(v3,v4,v5),(v6,max(v7,v8)));
A)3 B)4 C)5 D)8
6)以下叙述中错误的是()
A)用户定义的函数中可以没有return语句
B)用户定义的函数中可以有多个return语句,以便可以调用一次返回多个函数值
C)用户定义的函数中若没有return语句,则应当定义函数为void类型
D)函数的return语句中可以没有表达式
7)以下关于return语句的叙述中正确的是
A)一个自定义函数中必须有一条return语句
B)一个自定义函数中可以根据不同情况设置多条return语句
C)定义成viod类型的函数中可以有带返回值的return语句
D)没有return语句的自定义函数在执行结束时不能返回到调用处
8)有以下程序
intfun1(doublea){returna*=a;}
intfun2(doublex,doubley)
{
doublea=0,b=0;
a=fun1(x);b=fun1(y);return(int)(a+b);
}
main()
{doublew;w=fun2(1.1,2.0);……}
程序执行后变量w中的值是
A)5.21 B)5 C)5.0 D)0.0
9)有以下程序:
fun(intx,inty){return(x+y);}
main()
{inta=1,b=2,c=3,sum;
sum=fun((a++,b++,a+b),c++);
printf("%d\n",sum);
}
执行后的输出结果是()。
A)6B)7C)8D)9
10)有以下程序:
voidfun2(chara,charb){printf("%c,%c",a,b);}
chara='A',b='B';
voidfun1(){a='C';b='D';}
main()
{fun1();
printf("%c%c",a,b);
fun2('E','F');
}
程序的运行结果是()。
A)CDEFB)ABEFC)ABCDD)CDAB
11)有以下程序
main(intargc,char*argv[])
{intn=0,i;
for(i=1;i printf(“%d\n”,n); } 编译连接后生成可执行文件tt.exe,若运行时输入以下命令行 tt12345678 程序运行后的输出结果是 A)12B)12345 C)12345678 D)136 13)有如下程序: #include voidfun(inta,intb) { intt; t=a;a=b;b=t; } main() {intc[10]={1,2,3,4,5,6,7,8,9,0},i; for(i=0;k<10;i+=2)fun(c[i],c[i+1]);for(i=0;k<10;i++)printf("%d",c[i]);printf("\n"); } 程序的运行结果是 A)1,2,3,4,5,6,7,8,9,0, B)2,1,4,3,6,5,8,7,0,9, C)0,9,8,7,6,5,4,3,2,1, D)0,1,2,3,4,5,6,7,8,9, 14)有以下程序 #include int f(int x,int y) { return ((y-x)*x);} main() { int a=3,b=4,c=5,d; d=f(f(a,b),f(a,c)); printf("%d\n",d); } 程序运行后的输出结果是 A)10 B)9 C)8 D)7 15)有以下程序 #include int fun(int x,int y) { if(x==y) return (x); else return((x+y)/2); } main() { int a=4,b=5,c=6; printf("%d\n",fun(2*a,fun(b,c))); } 程序运行后的输出结果是 A)3 B)6 C)8 D)12 16)有以下程序 #include void fun(int p) { int d=2; p=d++; printf("%d",p); } main() { int a=1; fun(a); printf("%d\n",a); } 程序运行后的输出结果是 A)32 B)12 C)21 D)22 17)有以下程序 #include<stdio.h> int f(int x); main() {int n=1,m; m=f(f(f(n)));printf(”%d\n”,m); } int f(int x) {return x*2;} 程序运行后的输出结果是 A)1 B)2 C)4 D)8 18)有以下程序 intfun(intn) { if(n==1)return1; else return(n+fun(n-1)); } main() {intx; scanf(“%d”,&x);x=fun(x);printf(“%d\n”,x); } 程序执行时,给变量x输入10,程序的输出结果是 A)55 B)54 C)65 D)45 19)有以下程序: fun(intx) {intp; if(x==0||x==1)return(3); p=x-fun(x-2); returnp; } main() {printf("%d\n",fun(7));} 执行后的输出结果是()。 A)7B)3C)2D)0 20)有以下程序 #include intf(intx) {inty; if(x==0||x==1)return(3); y=x*x-f(x-2); returny; } main() {intz; z=f(3);printf(“%d\n”,z); } 程序的运行结果是 A)0B)9C)6D)8 21)有以下程序 #include int fun(inta,intb) {if(b==0)return a; else return(fun(--a,--b)); } main() { printf(“%d\n”,fun(4,2); } 程序的运行结果是 A)1 B)2 C)3 D)4 22)有以下程序 #include intf(intt[],intn); main() {inta[4]={1,2,3,4},s; s=f{a,4};printf("%d\n",s); } intf(intt[],intn) {if(n>0)returnt[n-1]+f(t,n-1); elsereturn0; } 程序运行后的输出结果是 A)4B)10C)14D)6 23)有以下程序 #include<stdio.h> void fun(intx) {if(x/2>1)fun(x/2); printf(”%d”,x); } main() {fun(7);printf(”\n”);} 程序运行后的输出结果是 A)137 B)731 C)73 D)37 24)有以下程序 intfun(intx[],intn) {staticintsum=0,i; for(i=0;isum+=x[i]; returnsum; } main() {inta[]={1,2,3,4,5},b[]={6,7,8,9},s=0; s=fun(a,5)+fun(b,4);printf(“%d\n”,s); } 程序执行后的输出结果是 A)45 B)50 C)60 D)55 25)有以下程序: fun(intx,inty) {staticintm=0,i=2; i+=m+1;m=i+x+y;returnm; } main() {intj=1,m=1,k; k=fun(j,m);printf("%d",k); k=fun(j,m);printf("%d\n",k); } 执行后的输出结果是()。 A)5,5B)5,11C)11,11D)11,5 26)有以下程序 inta=4; intf(intn) {intt=0;staticinta=5; if(n%2){inta=6;t+=a++;} else{inta=7;t+=a++;} returnt+a++; } main() {ints=a,i=0; for(;i<2;i++)s+=f(i); printf(“%d\n”,s); } 程序运行后的输出结果是 A)24 B)28 C)32 D)36 27)设函数中有整型变量n,为保证其在未赋初值的情况下初值为0,应该选择的存储类别是 A)auto B)register C)static D)auto或register 28)有以下程序 #include int f(int n); main() { int a=3,s; s=f(a);s=s+f(a);printf("%d\n",s); } int f(int n) { static int a=1; n+=a++; return n; } 程序运行后的输出结果是 A)7 B)8 C)9 D)10 29)有以下程序 #include intfun() {staticintx=1; x*=2;returnx; } main() {intI,s=1; for(i=1;i<=2;i++)s=fun(); printf("%d\n",s); } 程序运行后的输出结果是 A)0B)1C)4D)8 30)有以下程序 #include<stdio.h> intfun() {staticintx=1; x+=1;returnx; } main() {inti;s=1; for(i=1;i<=5;i++)s+=fun(); printf(”%d\n”,s); } 程序运行后的输出结果是 A)11 B)21 C)6 D)120 31)有以下程序: #include #defineN5 #defineMN+1 #definef(x)(x*M) main() {inti1,i2; i1=f (2); i2=f(1+1); printf("%d%d\n",i1,i2); } 程序的运行结果是()。 A)1212B)117C)1111D)127 32)若程序中有宏定义行: #define N 100 则以下叙述中正确的是 A)宏定义行中定义了标识符N的值为整数100 B)在编译程序对C源程序进行预处理时用100替换标识符N C)对C源程序进行编译时用100替换标识符N D)在运行时用100替换标识符N 33)以下叙述中错误的是 A)在程序中凡是以“#”开始的语句行都是预处理命令行 B)预处理命令行的最后不能以分号表示结束 C)#defineMAX是合法的宏定义命令行 D)C程序对预处理命令行的处理是在程序执行的过程中进行的 34)以下关于宏的叙述中正确的是() A)宏名必须用大写字母表示 B)宏定义必须位于源程序中所有语句之前 C)宏替换没有数据类型限制 D)宏调用比函数调用耗费时间 35)有以下程序 #include #define PT 3.5 ; #define S(x) PT*x*x ; main() { int a=1,b=2 ; printf("%4.1f\n",S(a+b));} 程序运行后的输出结果是 A)14.0 B)31.5 C)7.5 D)程序有错无输出结果 36)有以下程序 #include #define f(x) x*x*x main() { int a=3,s,t; s=f(a+1);t=f((a+1)); printf("%d,%d\n",s,t); } 程序运行后的输出结果是 A)10,64 B)10,10 C)64,10 D)64,64 37)以下程序 #include #defineSUB(a)(a)-(a) main() {inta=2,b=3,c=5,d; d=SUB(a+b)*c; printf("%d\n",d); } 程序运行后的结果是 A)0B)-12C)-20D)10 二填空题 (1)以下isprime函数的功能是判断形参a是否为素数,是素数,函数返回1,否则返回0,请填空 intisprime(inta) {inti; for(i=2;i<=a/2;i++) if(a%i==0)__[15]___; __[16]___; } (2)以下程序中,函数fun的功能是计算x2-2x+6,主函数中将调用fun函数计算: y1=(x+8)2-2(x+8)+6 y2=sin2(x)-2sin(x)+6 请填空。 #include"math.h" doublefun(doublex){return(x*x-2*x+6);} main() { doublex,y1,y2; printf("Enterx: ");scanf("%lf",&x); y1=fun(【11】); y2=fun(【12】); printf("y1=%lf,y2=%lf\n",y1,y2); } (3)以下程序中函数f的功能是在数组x的n个数(假定n个数互不相同)中找出最大最小数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换.请填空. #include viod f(int x[],int n) { int p0,p1,i,j,t,m; i=j=x[0]; p0=p1=0; for(m=0;m { if(x[m]>i) {i=x[m]; p0=m;} else if(x[m] } t=x[p0]; x[p0]=x[n-1]; x[n-1]=t; t=x[p1];x[p1]=_[14]_______;_[15]_______=t; } main() { int a[10],u; for(u=0;u<10;u++) scanf("%d",&a[u]); f(a,10); for(u=0;u<10;u++) printf("%d",a[u]); printf("\n"); } (4)请将以下程序中的函数声明语句补充完整。 #include int 【12】; main() { int x,y,(*p)(); scanf("%d%d",&x,&y); p=max; printf("%d\n",(*p)(x,y)); } int max(int a,int b) { return (a>b? a: b);} (5)以下fun函数的功能是: 找出具有N个元素的一维数组中的最小值,并作为函数值返回。 请填空。 (设N已定义) intfun(intx[N]) {inti,k=0; for(i=0;i if(x[i] returnx[k]; } (6)以下fun函数的功能是在N行M列的整形二维数组中,选出一个最大值作为函数值返回,请填空。 (设M,.N已定义) intfun(inta[N][M]) {inti,j,row=0,col=0; for(i=0;i for(j=0;j if(a[i][j]>a[row][col]){row=i;col=j;} return(【12】): } (7)以下程序的运行结果是: __[10]____ fun(intt[],intn) {inti,m; if(n==1)returnt[0]; else if(n>=2){m=fun(t,n-1);returnm;} } main() { inta[]={11,4,6,3,8,2,3,5,9,2}; printf(“%d\n”,fun(a,10)); } (8)下面程序的运行结果是【17】。 #include intf(inta[],intn) {if(n>1) returna[0]+f(a+1,n-1); else returna[0]; } main() {intaa[10]={1,2,3,4,5,6,7,8,9,10},s; s=f(aa+2,4);printf("%d\n",s); } (9)以下程序的输出结果是【13】。 #include voidfun(intx) {if(x/2>0)fun(x/2); printf(“%d”,x); } main() {fun(3);printf(“\n”);} (10)以下程序的功能是: 通过函数func输入 字符并统计输入字符的个数。 输入时用字符@作为输入标志。 请填空。 #include long【14】; main() { longn; n=func(); printf("n=%ld\n",n); } longfunc() { longm; for(m=0;getchar()! ='@';【15】); returnm; } (11)有以下程序 #include fun(int x) { if(x/2>0) fun(x/2); printf("%d ",x); } main() { fun(6);printf("\n");} 程序运行后的输出结果是【15】 (12)以下程序的运行结果是。 intk=0; voidfun(intm) {m+=k;k+=m;printf(“m=%d\nk=%d”,m,k++);} main() {inti=4; fun(i++);printf(“i=%dk=%d\n”,i,k); } (13)以下程序的输出结果是【11】。 #include #defineN5 intfun(intx) { staticintt=0; return(t+=x); } main() { ints,i;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 函数 调用