《C语言-函数练习题及其答案.doc》由会员分享,可在线阅读,更多相关《C语言-函数练习题及其答案.doc(29页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1【单选题】在下列关于 C 函数定义的叙述中,正确的是?A、函数可以嵌套定义,但不可以嵌套调用;B、函数不可以嵌套定义,但可以嵌套调用;C、函数不可以嵌套定义,也不可以嵌套调用;D、函数可以嵌套定义,也可以嵌套调用; 我的答案:B 得分: 2.5 分2【单选题】下面函数调用语句含有实参的个数为?nc(exp1,exp2),(exp3,exp4,exp5);A、1B、2C、4D、5 我的答案:B 得分: 2.5 分3【单选题】C 语言中函数返回值的类型是由以下哪个选项决定的?A、函数定义时指定的类型;B、return 语句中的表达式类型;C、调用该函数时的实参的数据类型;D、形参的数据类型; 我
2、的答案:A 得分: 2.5 分4【单选题】以下关于函数叙述中,错误的是?A、函数未被调用时,系统将不为形参分配内存单元;B、实参与形参的个数必须相等,且实参与形参的类型必须对应一致;C、当形参是变量时,实参可以是常量、变量或表达式;D、如函数调用时,实参与形参都为变量,则这两个变量不可能共享同一内存空间; 我的答案:B 得分: 2.5 分5【单选题】若函数调用时参数为基本数据类型的变量,以下叙述正确的是?A、实参与其对应的形参共享内存存储单元;B、只有当实参与其对应的形参同名时才共享内存存储单元;C、实参与对应的形参分别占用不同的内存存储单元;D、实参将数据传递给形参后,立即释放原先占用的内存
3、存储单元; 我的答案:C 得分: 2.5 分6【单选题】函数调用时,实参和形参都是简单变量,它们之间数据传递的过程描述正确的是?A、实参将地址传递给形参,并释放原先占用的存储单元;B、实参将地址传递给形参,调用结束时形参再将此地址回传给实参;C、实参将值传递给形参,调用结束时形参再将其值回传给实参;D、实参将值传递给形参,调用结束时形参并不将其值回传给实参; 我的答案:D 得分: 2.5 分7【单选题】若用数组名作为函数调用的实参,则传递给形参的是?A、数组第一个元素的地址;B、数组的第一个元素的值;C、数组中所有元素的值;D、数组元素的个数; 我的答案:A 得分: 2.5 分8【单选题】C
4、语言规定了程序中各函数之间调用关系,以下说法正确的是?A、既允许直接递归调用也允许间接递归调用;B、不允许直接递归调用也不允许间接递归调用;C、允许直接递归调用不允许间接递归调用;D、不允许直接递归调用允许间接递归调用; 我的答案:A 得分: 2.5 分9【单选题】递归函数 f(n)=f(n-1)+n (n1)的递归体是?A、f(1)=0 B、f(0)=1C、f(n)=f(n-1)+nD、f(n)=n 我的答案:C 得分: 2.5 分10【单选题】若函数的形参为一维数组,则下列说法中正确的是()。A、使用函数时的对应实参必为数组名。B、形参数组可以不指定大小。C、形参数组的元素个数必须等于实参
5、数组的元素个数。D、形参数组的元素个数必须多于实参数组的元素个数。 我的答案:B 得分: 2.5 分11【单选题】在函数调用过程中,如果函数 fun A 调用了函数 fun B,函数 fun B 又调用了函数 fun A,则()。A、为函数的直接递归调用 B、称为函数的间接递归调用C、为函数的循环调用 D、C 语言中不允许这样的递归调用 我的答案:B 得分: 2.5 分12【单选题】有以下函数定义:void fun(int n,double x) 下选项中的变量都已正确定义并赋值,则对函数 fun 的正确调用语句是()。A、fun(int y,double m); B、k=fun(10,12.
6、5);C、fun(x,n); D、void fun(n,x); 我的答案:C 得分: 2.5 分13【单选题】已有以下数组定义和 f 函数调用语句,则在 f 函数的说明中,对形参数组 array 的正确定义方式为_。int a34;f(a);A、f(int array6) B、f(int array3)C、f(int array4) D、f(int array25) 我的答案:C 得分: 2.5 分14【单选题】若程序中定义函数float fadd(float a, float b)return a+b;并将其放在调用语句之后,则在调用之前应对该函数进行说明。以下说明中错误的是?A、float
7、 fadd(float a,b);B、float fadd(float b, float a) ;C、float fadd(float, float) ;D、float fadd(float a, float b) ; 我的答案:A 得分: 2.5 分15【单选题】下面程序段运行后的输出结果是?(假设程序运行时输入 5,3 回车)int a, b; void swap( ) int t; t=a;a=b;b=t; void main() int a,b;scanf(“%d,%d“,swap( ); printf (“a=%d,b=%dn“,a,b); A、a=5,b=3B、a=3,b=5C、5
8、,3D、3,5 我的答案:A 得分: 2.5 分16【单选题】以下程序运行后的输出结果是? int fun (int x, int y)if(xy) return x; else return y;void main() int x=3,y=8,z=6,r; r=fun(fun(x,y),2*z);printf(“%dn“,r);A、3B、6C、8D、12 我的答案:D 得分: 2.5 分17【单选题】下列程序的输出结果是()。#include “stdio.h“void fun(int a,int b,int c)c = a * b;int main( )int c;fun(2,3,c);p
9、rintf(“%dn“, c);return 0;A、0B、1C、6D、无法确定 我的答案:D 得分: 2.5 分18【单选题】有以下程序,运行后的输出结果是( )。#includefloat fun(int x, int y)return(x+y);void main()int a=2,b=5,c=8;printf(“%3.0fn”, fun(int)fun(a+c, b), a-c);A、编译出错B、9C、21D、9.0 我的答案:A 得分: 0.0 分19【单选题】以下描述正确的是?A、调用函数时的实参只能是有确定值的变量;B、return()语句的括号中,可以是变量、常量或有确定值的表
10、达式;C、C 语言中,函数调用时实参和形参间的参数传递方式不都是值传递;D、实参和形参若类型不匹配,编译时将报错; 我的答案:B 得分: 2.5 分20【单选题】已有以下代码#includeint a=6,b=3;int main()int a=8;printf(“%dn“,(ab?a:b);则程序的输出结果是()?A、3B、6C、8D、36 我的答案:C 得分: 2.5 分21【单选题】已有以下代码#includef()static int x = 1;x -= 1;printf(“%d,“, x);int main()int i;for (i = 0; i2)return(fib(n-1)
11、+fib(n-2);elsereturn 2;int main()printf(“%dn“,fib(3);该程序的输出结果是_。我的答案:得分: 2.5 分 第一空:第一空: 4 批语29【填空题】以下程序的输出结果是_。f(int b,int m,int n)int i,s=0;for(i=m;iint fac_sum(int n)static int f=1,t=1,s=0;int i;if(nt)for(i=t+1; iint n=1;void main()static int x=5;void func();int y; y=n;printf(“MAIN: x=%2d y=%2d n=
12、%2dn“,x,y,n);func();printf(“MAIN: x=%2d y=%2d n=%2dn“,x,y,n);func(); void func()static int x=4;int y=10;x=x+2;n=n+10;y=y+n;printf(“FUNC: x=%2d y=%2d n=%2dn“,x,y,n); 我的答案:得分: 2.5 分 第一空:第一空: MAIN: x= 5 y= 1 n= 1FUNC: x= 6 y=21 n=11MAIN: x= 5 y= 1 n=11FUNC: x= 8 y=31 n=21 批语32【填空题】输入一个整数 10,以下程序的运行结果是_
13、。#includevoid main()int sub(int);int a,e10,c,i=0;printf(“输入一个整数n“);scanf(“%d“,while(a!=0)c=sub(a);a=a/2;ei=c;i+;for(; i0; i-)printf(“%d“,ei-1);int sub(int a)int c;c=a%2;return c;我的答案:得分: 2.5 分 第一空:第一空: 1010 批语33【填空题】以下程序的运行结果是_。#include int main()int i;void fun();for (i=0;iint workover(int i);int re
14、set(int i);int i=0;int main()int i=5;reset(i/2);printf(“i=%dn“,i); reset(i=i/2);printf(“i=%dn“,i); reset(i/2);printf(“i=%dn“,i); workover(i);printf(“i=%dn“,i);return 0;int workover(int i)i=(i%i)*(i*i)/(2*i)+4);printf(“i=%dn“,i); return i;int reset(int i)i=i=2?5:0; return i;我的答案:得分: 2.5 分 第一空:第一空: i=
15、5i=2i=2i=0i=2 批语35【判断题】函数调用时值传递方式特点:形参与实参占用相同的内存单元,单向传递。我的答案:得分: 2.5 分36【判断题】函数定义与函数说明不是同一个概念。我的答案:得分: 2.5 分37【判断题】c 语言中,函数的定义不能嵌套,而调用是可以嵌套的。我的答案:得分: 2.5 分38【判断题】函数调用时值传递特点:无论是值传递还是地址传递,都是单向的。我的答案:得分: 2.5 分39【判断题】函数调用时,当数组名作函数参数时,实参数组值与形参数组值不同。我的答案:得分: 2.5 分40【判断题】一个 C 程序可以由一个或多个函数组成,其中必须有且只有一个 main 函数。我的答案:得分: 2.5 分