当前位置:文档之家› C语言第八章函数部分复习题

C语言第八章函数部分复习题

函数复习题一.选择题1.以下正确的函数定义形式是:()a) double fun(int x,int y)b) double fun(int x;int y)c) double fun(int x,int y);d) double fun(int x,y);2.以下正确的函数形式是:()a) double fun(int x,int y){ z=x+y; return z; }b) fun(int x,y){ int z; return z; }c) fun(x,y){ int x,y; double z; z=x+y; return z; }d) double fun(int x,int y){ double z; z=x+y; return z; }3. 以下正确的说法是:()a) 实参和与其对应的形参各占用独立的存储单元b) 实参和与其对应的形参共占用一个存储单元c) 只有当实参和与其对应的形参同名时才共占用存储单元d) 形参是虚拟的,不占用存储单元4. 以下程序有语法性错误,有关错误原因的正确说法是:()main(){ int G=5,k;void prt_char();……k=prt_char(G);……}a) 语句void prt_char();有错,它是函数调用语句,不能用void 说明b) 变量名不能使用大写字母c) 函数说明和函数调用语句之间有矛盾d) 函数名不能使用下划线5. 已有以下数组定义和f函数调用语句,则在f函数的说明中,对形参数组array的错误定义方式是:()a) f(int array[][6])b) f(int array[3][])c) f(int array[][4])d) f(int array[2][5])6. 在一个C源程序文件中,若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是:()a) extern b) register c) auto d) static7. 若使用一维数组名作函数实参,则以下正确的说法是:()a) 必须在主调函数中说明此数组的大小b) 实参数组类型与形参数组类型可以不匹配c) 在被调函数中,不需要考虑形参数组的大小d) 实参数组名与形参数组名必须一致8. 以下不正确的说法是:()a) 在不同函数中可以使用相同名字的变量b) 形式参数是局部变量c) 在函数内定义的变量只在本函数范围内有效d) 在函数内的复合语句中定义的变量在本函数范围内有效9. 若有以下程序:#include <stdio.h>void num(){ extern int x,y;int a=15,b=10;x=a-b;y=a+b;}int x,y;main(){ int a=7,b=5;x=a+b;y=a-b;num();printf(“%d,%d\n”,x,y);}程序的正确运行结果是:()a) 12,2 b) 不确定c) 5,25 d) 1,1210. 若有以下程序:main(){ int a=2,i;for(i=0;i<3;i++) pri ntf(“%4d”,f(a));}f(int a){ int b=0;static int c=3;b++; c++;return(a+b+c);}程序的正确运行结果是:()a) 7 7 7 b) 7 10 13c) 7 9 11 d) 7 8 911. 若有以下程序:#include <stdio.h>main(){ int k=4,m=1,p;p=func(k,m); printf(“%d”,p);p=func(k,m); printf(“%d\n”,p);}func(int a,int b){ static int m=0,i=2;i+=m+1;m=i+a+b;return(m);}程序的正确运行结果是:()a) 8,17 b) 8,16c) 8,20 d) 8,812. C语言规定,函数返回值的类型是:()a) return语句中的表达式类型所决定b) 调用该函数时的主调函数类型所决定c) 调用该函数时系统临时决定d) 在定义该函数时所指定的函数类型所决13. 以下正确的描述是:()a) 函数的定义可以嵌套,但函数的调用不可以嵌套b) 函数的定义不可以嵌套,但函数的调用可以嵌套c) 函数的定义和函数的调用均不可以嵌套d) 函数的定义和函数的调用均可以嵌套14. 折半查找法的思路是:先确定待查元素的范围,将其分成两半,然后测试位于中间点元素的值。

如果该待查元素的值大于中间点元素,就缩小待查范围,只测试中点之后的元素;反之,测试中点之前的元素,测试方法同前。

函数binary的作用是应用折半查找法从存有10个整数的a数组中对关键字m进行查找,若找到,返回其下标值;返回-1。

请选择填空。

binary(int a[10],int m){ int low=0,high=9,mid;while(low<=high){ mid=(low+high)/2;if(m<a[mid]) 【1】;else if(m>a[mid]) 【2】;else return(mid);}return(-1);}【1】是:()a) high=mid-1b) low=mid+1c) high=mid+1 d) low=mid-1【2】是:()a) high=mid-1 b) low=mid+1c) high=mid+1 d) low=mid-115. 关于函数调用的说法,以下错误的描述是:()a) 可出现在执行语句中b) 可出现在一表达式中c) 可做为一个函数的实参d) 可做为一个函数的形参二.填空题1.以下程序的输出结果是i=7;j=6;x=7i=2;j=7;x=5___。

main(){ int i=2,x=5,j=7;fun(j,6);printf(“i=%d;j=%d;x=%d\n”,i,j,x);}fun(int i,int j){ int x=7;printf(“i=%d;j=%d;x=%d\n”,i,j,x);}2. 以下程序的输出结果是___111____。

main(){ increment();increment();increment();}increment(){ int x=0;x+=1;printf(“%d”,x);}3. 以下程序的运行结果是(1)x=2 y=3 z=0(2)x=4 y=9 z=5(3)x=2 y=3 z=0_____。

main(){ int x=2,y=3,z=0;printf(“(1) x=%d y=%d z=%d\n”,x,y,z);add(x,y,z);printf(“(3) x=%d y=%d z=%d\n”,x,y,z);}add(int x,int y,int z){ z=x+y; x=x*x; y=y*y;printf(“(2) x=%d y=%d z=%d\n”,x,y,z);}4. 若输入一个整数10,以下程序的输出结果是___1010____。

main(){ int a,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(int a){ int c;c=a%2;return c; } 5. 以下程序的功能是计算下面函数的值。

请填空。

)sin(*)sin()sin()sin(*)sin()sin()sin(*)sin()sin(),,(y z x z z x y z y y z x y x x z y x F --+--+--=#include <stdio.h>#include <math.h>float f();main(){ float x,y,z,sum;printf(“\ninput x,y,z:\n”);scanf(“%f %f %f”,&x,&y,&z);sum=【1】f(x,x-y,x-z)+f(y,y-z,y-x)+f(z,z-x,z-y);printf(“sum=%f\n”,sum);}float f(float a,float b,float c){ float value;value=【2】sin(a)/((sin(b)*sin(c));return(value);}6. 函数f中的形参a为一个10×10的二维数组,n的值为5,以下程序段的运行结果是__________。

f(int a[10][10],int n){ int i,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; }}}7. 以下程序的运行结果是FACT(5):120FACT(1):1FACT(-1):Error! 。

#include <stdio.h>main(){ printf(“FACT(5):%d\n”,fact(5));printf(“FACT(1):%d\n”,fact(1));fact(-5);}fact(int value){ if(value<0){ printf(“FACT(-1):Error!\n”); return(-1); }else if(value==1||value==0) return(1);else return(value*fact(value-1));} 8. 以下程序的功能是用递归方法计算五位学生的年龄,请填空。

递归公式如下:⎩⎨⎧>+-==)1(2)1()1(10)(n n age n n age#include <stdio.h>age(int n){ int c;if(n==1) c=10;else c=【1】age(n-1)+2;return(c);}main(){ int n=5;printf(“age:%d \n”,【2】age(5));}9. 下面程序的功能是【1】计算斐波拉契级数第7项的值,运行结果是【2】。

k=13long fib(int g){ switch(g){ case 0: return 0;case 1:case 2: return 1;}return(fib(g-1)+fib(g-2));}main(){ long k;k=fib(7);printf(“k=%d\n”,k);}10. 以下程序的运行结果是____15______。

相关主题