C语言函数练习题及答案Company Document number:WTUT-WT88Y-W8BBGB-BWYTT-199981【单选题】在下列关于C函数定义的叙述中,正确的是•A、函数可以嵌套定义,但不可以嵌套调用;•B、函数不可以嵌套定义,但可以嵌套调用;•C、函数不可以嵌套定义,也不可以嵌套调用;•D、函数可以嵌套定义,也可以嵌套调用;我的答案:B得分:分2【单选题】下面函数调用语句含有实参的个数为nc((exp1,exp2),(exp3,exp4,exp5));•A、1•B、2•C、4•D、5我的答案:B得分:分3【单选题】C语言中函数返回值的类型是由以下哪个选项决定的•A、函数定义时指定的类型;•B、return语句中的表达式类型;•C、调用该函数时的实参的数据类型;•D、形参的数据类型;我的答案:A得分:分4【单选题】以下关于函数叙述中,错误的是•A、函数未被调用时,系统将不为形参分配内存单元;•B、实参与形参的个数必须相等,且实参与形参的类型必须对应一致;•C、当形参是变量时,实参可以是常量、变量或表达式;•D、如函数调用时,实参与形参都为变量,则这两个变量不可能共享同一内存空间;我的答案:B得分:分5【单选题】若函数调用时参数为基本数据类型的变量,以下叙述正确的是•A、实参与其对应的形参共享内存存储单元;•B、只有当实参与其对应的形参同名时才共享内存存储单元;•C、实参与对应的形参分别占用不同的内存存储单元;•D、实参将数据传递给形参后,立即释放原先占用的内存存储单元;我的答案:C得分:分6【单选题】函数调用时,实参和形参都是简单变量,它们之间数据传递的过程描述正确的是•A、实参将地址传递给形参,并释放原先占用的存储单元;•B、实参将地址传递给形参,调用结束时形参再将此地址回传给实参;•C、实参将值传递给形参,调用结束时形参再将其值回传给实参;•D、实参将值传递给形参,调用结束时形参并不将其值回传给实参;我的答案:D得分:分7【单选题】若用数组名作为函数调用的实参,则传递给形参的是•A、数组第一个元素的地址;•B、数组的第一个元素的值;•C、数组中所有元素的值;•D、数组元素的个数;我的答案:A得分:分8【单选题】C语言规定了程序中各函数之间调用关系,以下说法正确的是•A、•B、•C、•D、我的答案:A得分:分9【单选题】递归函数f(n)=f(n-1)+n(n>1)的递归体是•A、f(1)=0•B、f(0)=1•C、f(n)=f(n-1)+n•D、f(n)=n我的答案:C得分:分10【单选题】若函数的形参为一维数组,则下列说法中正确的是()。
•A、使用函数时的对应实参必为数组名。
•B、形参数组可以不指定大小。
•C、形参数组的元素个数必须等于实参数组的元素个数。
•D、形参数组的元素个数必须多于实参数组的元素个数。
我的答案:B得分:分11【单选题】在函数调用过程中,如果函数funA调用了函数funB,函数funB又调用了函数funA,则()。
•A、为函数的直接递归调用•B、称为函数的间接递归调用•C、为函数的循环调用•D、C语言中不允许这样的递归调用我的答案:B得分:分12【单选题】有以下函数定义:voidfun(intn,doublex){……}下选项中的变量都已正确定义并赋值,则对函数fun的正确调用语句是()。
•A、fun(inty,doublem);•B、k=fun(10,;•C、fun(x,n);•D、voidfun(n,x);我的答案:C得分:分13【单选题】已有以下数组定义和f函数调用语句,则在f函数的说明中,对形参数组array的正确定义方式为______。
int a[3][4];f(a);•A、f(intarray[][6])•B、f(intarray[3][])•C、f(intarray[][4])•D、f(intarray[2][5])我的答案:C得分:分14【单选题】若程序中定义函数floatfadd(floata,floatb){returna+b;}并将其放在调用语句之后,则在调用之前应对该函数进行说明。
以下说明中错误的是•A、floatfadd(floata,b);•B、floatfadd(floatb,floata);•C、floatfadd(float,float);•D、floatfadd(floata,floatb);我的答案:A得分:分15【单选题】下面程序段运行后的输出结果是(假设程序运行时输入5,3回车)inta,b;voidswap(){intt;t=a;a=b;b=t;}voidmain(){inta,b;scanf("%d,%d",&a,&b);swap();printf("a=%d,b=%d\n",a,b);}•A、a=5,b=3•B、a=3,b=5•C、5,3•D、3,5我的答案:A得分:分16【单选题】以下程序运行后的输出结果是intfun(intx,inty){if(x>y)returnx;elsereturny;}voidmain(){intx=3,y=8,z=6,r;r=fun(fun(x,y),2*z);printf("%d\n",r);}•A、3•B、6•C、8•D、12我的答案:D得分:分17【单选题】下列程序的输出结果是()。
#include ""void fun(int a,int b,int c){c = a * b;}int main( ){int c;fun(2,3,c);printf("%d\n", c);return 0;}•A、•B、1•C、6•D、无法确定我的答案:D得分:分18【单选题】有以下程序,运行后的输出结果是()。
#include<>float fun(int x, int y){return(x+y);}void main(){int a=2,b=5,c=8;printf(“%\n”, fun((int)fun(a+c, b), a-c));}•A、编译出错•B、9•C、21•D、我的答案:A得分:分19【单选题】以下描述正确的是•A、调用函数时的实参只能是有确定值的变量;•B、return()语句的括号中,可以是变量、常量或有确定值的表达式;•C、C语言中,函数调用时实参和形参间的参数传递方式不都是值传递;•D、实参和形参若类型不匹配,编译时将报错;我的答案:B得分:分20【单选题】已有以下代码#include<>int a=6,b=3;int main(){int a=8;printf("%d\n",(a>ba:b));}则程序的输出结果是()•A、3•B、6•C、8•D、36我的答案:C得分:分21【单选题】已有以下代码#include<>f(){static int x = 1;x -= 1;printf("%d,", x);}int main(){int i;for (i = 0; i<4; i++)f();return 0;}则程序的输出是:()•A、1, 2,3,4•B、0,1,2,3,•C、0,-1,-2,-3,•D、-1,-2,-3,-4,我的答案:C得分:分22【单选题】C语言程序的基本单位是•A、函数•B、过程•C、子程序•D、源程序文件我的答案:A得分:分23【单选题】以下说法中正确的是•A、•B、•C、•D、我的答案:C得分:分24【单选题】在函数调用时,以下说法正确的是•A、函数调用后必须带回返回值;•B、实际参数和形式参数可以同名;•C、函数间的数据传递不可以使用全局变量;•D、主调函数和被调函数总是在同一个文件里;我的答案:B得分:分25【填空题】下面程序段运行后的输出结果是:_______(假设程序运行时输入5,3回车)void swap( int a,int b){int t;t=a;a=b;b=t;}void main(){int a,b;scanf("%d,%d",&a, &b);swap(a,b );printf ("a=%d,b=%d\n",a,b);}我的答案:得分:分第一空:a=3,b=5批语26【填空题】以下程序的功能是用递归方法计算工资,已知第一位员工工资最少,为3100元,其余员工工资一个比一个多500元,求第5位员工的工资。
请填空。
salary(intn){ints;if(n==1)s=3100;elses=salary(n-1)+500;returns;}voidmain(){intn=5;printf(“sarary:%d\n”,______);}我的答案:得分:分第一空:salary(5)批语27【填空题】分析以下程序的运行结果是_______#include “”func(int a ,int b){int c;c=a+b;return c;}int main(){int x=6,y,r;y=x+2;r=func(x++,y);printf("%d %d %d\n",x,y,r);return 0;}我的答案:得分:分第一空:7 8 14批语28【填空题】有如下程序long fib(int n){if(n>2)return(fib(n-1)+fib(n-2));elsereturn 2;}int main(){printf("%d\n",fib(3));}该程序的输出结果是_______。
我的答案:得分:分第一空:4批语29【填空题】以下程序的输出结果是________。
f(intb[],intm,intn){inti,s=0;for(i=m;i<n;i=i+2)s=s+b[i];returns;}intmain(){intx,a[]={1,2,3,4,5,6,7,8,9};x=f(a,3,7);printf("%d\n",x);}我的答案:得分:分第一空:10批语30【填空题】以下程序的输出结果是_____。
#include<>intfac_sum(intn){staticintf=1,t=1,s=0;inti;if(n>t)for(i=t+1;i<=n;i++)f=f*i;else{f=1;for(i=1;i<=n;i++)f=f*i;}t=n;s=s+f;return(s);}voidmain(){inta[]={3,5,2},i,sum;for(i=0;i<3;i++)sum=fac_sum(a[i]);printf(“sum=%d\n”,sum);}我的答案:得分:分第一空:sum=128批语31【填空题】以下程序的运行结果是________。