第八章 函数
8.1 选择题
【题8.1】以下正确的说法是 。 建立函数的目的之一是 A)提高程序的执行效率 B)提高程序的可读性 C)减少程序的篇幅 D)减少程序文件所占内存
【题8.2】以下正确的说法是 。
A) 用户若需调用标准库函数,调用前必须重新定义
B) 用户可以重新定义标准库函数,若如此,该函数将失去原有含义 C) 系统根本不允许用户重新定义标准库函数
D) 用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件
包括到用户源文件中,系统自动去调
【题8.3】以下正确的函数定义形式是 。
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);
【题8.4】以下正确的函数形式是 。
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; }
【题8.5】以下正确的说法是 。 在C语言中 A)实参和与其对应的形参各占用独立的存储单元 B)实参和与其对应的形参共占用一个存储单元 C)只有当实参和与其对应的形参同名时才共占用存储单元 D)形参是虚拟的,不占用存储单元
【题8.6】若调用一个函数,且此函数中没有return语句,则正确的说法是 。 该函数 A)没有返回值 B)返回若干个系统默认值
C)能返回一个用户所希望的函数值 D)返回一个不确定的值
【题8.7】以下不正确的说法是 。 C语言规定 A)实参可以是常量、变量或表达式 B)形参可以是常量、变量或表达式 C)实参可以为任意类型 D)形参应与其对应的实参类型一致 【题8.8】以下正确的说法是 。
A) 定义函数时,形参的类型说明可以放在函数体内 B) return后边的值不能为表达式
C) 如果函数值的类型与返回值类型不一致,以函数值类型为准 D) 如果形参与实参的类型不一致,以实参类型为准
【题8.9】C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是 。
A) 地址传递 B) 单向值传递
C) 由实参传给形参,再由形参传回给实参 D) 由用户指定传递方式
【题8.10】以下程序有语法性错误,有关错误原因的正确说法是 。 main() { int G=5,k; void prt_char(); ? ? k=prt_char(G); ? ? }
A) 语句void prt_char();有错,它是函数调用语句,不能用void说明 B) 变量名不能使用大写字母
C) 函数说明和函数调用语句之间有矛盾 D) 函数名不能使用下划线
【题8.11】C语言允许函数值类型缺省定义,此时该函数值隐含的类型是 。
A) float型 B) int型 C) long型 D) double型
【题8.12】C语言规定,函数返回值的类型是由 。
A) return语句中的表达式类型所决定 B) 调用该函数时的主调函数类型所决定 C) 调用该函数时系统临时决定
D) 在定义该函数时所指定的函数类型所决定
【题8.13】下面函数调用语句含有实参的个数为 。 func((exp1,exp2),(exp3,exp4,exp5));
A)1 B)2 C)4 D)5
【题8.14】以下错误的描述是 。 函数调用可以 A)出现在执行语句中 B)出现在一表达式中 C)做为一个函数的实参 D)做为一个函数的形参
【题8.15】以下程序的功能是计算函数F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值,请选择
填空。
#include
【题8.16】以下正确的描述是 。 在C语言程序中 A)函数的定义可以嵌套,但函数的调用不可以嵌套 B)函数的定义不可以嵌套,但函数的调用可以嵌套 C)函数的定义和函数的调用均不可以嵌套 D)函数的定义和函数的调用均可以嵌套
【题8.17】以下程序是选出能被3整除且至少有一位是5的两位数,打印出所有这样的数
及其个数。请选择填空。
sub(int k,int n) { int a1,a2;
a2=【1】; a1=k-【2】; if((k%3==0&&a2==5)||(k%3==0&&a1==5)) { printf(“%d”,k); n++; return n; } else return -1; } main() { int n=0,k,m; for(k=10;k<=99;k++) { m=sub(k,n); if(m!=-1) n=m; } printf(“\\nn=%d”,n); } 【1】 A)k*10 B)k C)k/10 D)k*10 【2】 A)a2*10 B)a2 C)a2/10 D)a2
【题8.18】以下是有关汉诺塔问题的程序段,若在main函数中有调用语句
hanoi(3,‘A’,‘B’,‘C’);则符合程序段运行结果的选项是 。
void move(char getone,char putone) { printf(“%c-->%c\\n”,getone,putone); } void hanoi(int n,char one,char two,char three) { if(n==1) move(one,three); else { hanoi(n-1,one,three,two); move(one,three); hanoi(n-1,two,one,three); } }
A)A-->C B)A-->C C)A-->C D)A-->C A-->B A-->B A-->B A-->B C-->B C-->A C-->B C-->B
B-->A A-->B A-->C A-->C C-->B B-->C B-->A A-->B A-->C A-->C B-->C B-->C A-->B A-->B A-->C A-->C
【题8.19】若用数组名作为函数调用的实参,传递给形参的是 。
A) 数组的首地址
B) 数组第一个元素的值 C) 数组中全部元素的值 D) 数组元素的个数
【题8.20】已有以下数组定义和f函数调用语句,则在f函数的说明中,对形参数组array
的错误定义方式为 。
int a[3][4]; f(a);
A) f(int array[][6]) B) f(int array[3][]) C) f(int array[][4]) D) f(int array[2][5])
【题8.21】若使用一维数组名作函数实参,则以下正确的说法是 。
A) 必须在主调函数中说明此数组的大小 B) 实参数组类型与形参数组类型可以不匹配 C) 在被调函数中,不需要考虑形参数组的大小 D) 实参数组名与形参数组名必须一致
【题8.22】折半查找法的思路是:先确定待查元素的范围,将其分成两半,然后测试位于
中间点元素的值。如果该待查元素的值大于中间点元素,就缩小待查范围,只测试中点之后的元素;反之,测试中点之前的元素,测试方法同前。函数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(ma[mid]) 【2】; else return(mid); } return(-1); } 【1】 A)high=mid-1 B)low=mid+1 C)high=mid+1 D)low=mid-1
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库C语言习题7在线全文阅读。
相关推荐: