C语言程序设计-第八章函数练习题【附答案】.pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《C语言程序设计-第八章函数练习题【附答案】.pdf》由会员分享,可在线阅读,更多相关《C语言程序设计-第八章函数练习题【附答案】.pdf(34页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第八章第八章函数习题函数习题第八章函数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
2、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)只有当实
3、参和与其对应的形参同名时才共占用存储单元D)形参是虚拟的,不占用存储单元【题 8.6】若调用一个函数,且此函数中没有 return 语句,则正确的说法是。该函数A)没有返回值B)返回若干个系统默认值C)能返回一个用户所希望的函数值D)返回一个不确定的值【题 8.7】以下不正确的说法是。C 语言规定A)实参可以是常量、变量或表达式B)形参可以是常量、变量或表达式C)实参可以为任意类型D)形参应与其对应的实参类型一致【题 8.8】以下正确的说法是。A)定义函数时,形参的类型说明可以放在函数体内B)return 后边的值不能为表达式C)如果函数值的类型与返回值类型不一致,以函数值类型为准D)如果形参
4、与实参的类型不一致,以实参类型为准【题 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 语言允许函数值类型缺省定义,此时该函数值隐含的类型
5、是。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)1B)2C)4D)5【题 8.14】以下错误的描述是。函数调用可以A)出现在执行语句中B)出现在一表达式中C)做为一个函数的实参D)做为一个函数的形参【题 8.15】以下程序的功能是计算函数 F(x,y,z)=
6、(x+y)/(x-y)+(z+y)/(z-y)的值,请选择填空。#include#include main()float x,y,z,sum;scanf(“%f%f%f”,&x,&y,&z);sum=f(【1】)+f(【2】);printf(“sum=%fn”,sum);float f(float a,float b)float value;value=a/b;return(value);【1】A)x-y,x+yB)x+y,x-yC)z+y,z-yD)z-y,z+y【2】A)x-y,x+yB)x+y,x-yC)z+y,z-yD)z-y,z+y【题 8.16】以下正确的描述是。在 C 语言程序中
7、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%cn”,getone,putone);vo
8、id hanoi(int n,char one,char two,char three)if(n=1)move(one,three);elsehanoi(n-1,one,three,two);move(one,three);hanoi(n-1,two,one,three);A)A-CB)A-CC)A-CD)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)数组第一个元
9、素的值C)数组中全部元素的值D)数组元素的个数【题 8.20】已有以下数组定义和 f 函数调用语句,则在 f 函数的说明中,对形参数组array 的错误定义方式为。int a34;f(a);A)f(int array6)B)f(int array3)C)f(int array4)D)f(int array25)【题 8.21】若使用一维数组名作函数实参,则以下正确的说法是。A)必须在主调函数中说明此数组的大小B)实参数组类型与形参数组类型可以不匹配C)在被调函数中,不需要考虑形参数组的大小D)实参数组名与形参数组名必须一致【题 8.22】折半查找法的思路是:先确定待查元素的范围,将其分成两半,
10、然后测试位于中间点元素的值。如果该待查元素的值大于中间点元素,就缩小待查范围,只测试中点之后的元素;反之,测试中点之前的元素,测试方法同前。函数binary 的作用是应用折半查找法从存有 10 个整数的 a 数组中对关键字 m 进行查找,若找到,返回其下标值;返回-1。请选择填空。binary(int a10,int m)int low=0,high=9,mid;while(low=high)mid=(low+high)/2;if(mamid)【2】;else return(mid);return(-1);【1】A)high=mid-1B)low=mid+1C)high=mid+1D)low=
11、mid-1【2】A)high=mid-1B)low=mid+1C)high=mid+1D)low=mid-1【题 8.23】以下正确的说法是。如果在一个函数中的复合语句中定义了一个变量,则该变量A)只在该复合语句中有效B)在该函数中有效C)在本程序范围内均有效D)为非法变量【题 8.24】以下不正确的说法为。A)在不同函数中可以使用相同名字的变量B)形式参数是局部变量C)在函数内定义的变量只在本函数范围内有效D)在函数内的复合语句中定义的变量在本函数范围内有效【题 8.25】以下程序的正确运行结果是。#define MAX 10int aMAX,i;main()printf(“n”);sub1
12、();sub3(a);sub2();sub3(a);sub2()int aMAX,i,max;max=5;for(i=0;imax;i+)ai=i;sub1()for(i=0;iMAX;i+)ai=i+i;sub3(int a)int i;for(i=0;iMAX;i+)printf(“%d”,ai);printf(“n”);A)0 2 4 6 8 10 12 14 16 180 1 2 3 4B)0 1 2 3 40 2 4 6 8 10 12 14 16 18 C)0 1 2 3 4 5 6 7 8 90 1 2 3 4D)0 2 4 6 8 10 12 14 16 180 2 4 6 8
13、 10 12 14 16 18【题 8.26】以下程序的正确运行结果是。#include 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,%dn”,x,y);A)12,2B)不确定C)5,25D)1,12【题 8.27】凡是函数中未指定存储类型的局部变量,其隐含的存储类别为。A)自动(auto)B)静态(static)C)外部(extern)D)寄存器(register)【题 8.28】在一个 C 源程序文件中,若要定义一个只允许本
14、源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是。A)externB)registerC)autoD)static【题 8.29】以下程序的正确运行结果是。main()int a=2,i;for(i=0;i3;i+)printf(“%4d”,f(a);f(int a)int b=0;static int c=3;b+;c+;return(a+b+c);A)7 7 7B)7 10 13C)7 9 11D)7 8 9【题 8.30】以下程序的正确运行结果是。#include main()int k=4,m=1,p;p=func(k,m);printf(“%d”,p);p=func(k,
15、m);printf(“%dn”,p);func(int a,int b)static int m=0,i=2;i+=m+1;m=i+a+b;return(m);A)8,17B)8,16C)8,20D)8,88.2填空题【题 8.31】C 语言规定,可执行程序的开始执行点是。【题 8.32】在 C 语言中,一个函数一般由两个部分组成,它们是【1】和【2】。【题 8.33】若输入的值是-125,以下程序的运行结果是。#include main()int n;scanf(“%d”,&n);printf(“%d=”,n);if(n0)printf(“-”);n=fabs(n);fun(n);fun(i
16、nt n)int k,r;for(k=2;k1)printf(“*”);r=n%k;if(n!=1)printf(“%dn”,n);【题 8.34】下面 add 函数的功能是求两个参数的和,并将和值返回调用函数。函数中错误的部分是【1】;改正后为【2】。void add(float a,float b)float c;c=a+b;return c;【题 8.35】以下程序的运行结果是。main()int i=2,x=5,j=7;fun(j,6);printf(“i=%d;j=%d;x=%dn”,i,j,x);fun(int i,int j)int x=7;printf(“i=%d;j=%d;x
17、=%dn”,i,j,x);【题 8.36】以下程序的运行结果是。main()increment();increment();increment();increment()int x=0;x+=1;printf(“%d”,x);【题 8.37】以下程序的运行结果是。#include main()int a=1,b=2,c;c=max(a,b);printf(“max is%dn”,c);max(int x,int y)int z;z=(xy)?x:y;return(z);【题 8.38】以下程序的功能是根据输入的“y”(“Y”)与“n”(“N”),在屏幕上分别显示出“This is YES.”与
18、“This is NO.”。请填空。#include void YesNo(char ch)switch(ch)case y:case Y:printf(“nThis is YES.n”);【1】;case n:case N:printf(“nThis is No.n”);【2】;main()char ch;printf(“nEnter a char y,Yorn,N:”);ch=【3】;printf(“ch:%c”,ch);YesNo(ch);【题 8.39】以下 Check 函数的功能是对 value 中的值进行四舍五入计算,若计算后的值与ponse 值相等,则显示“Well done!”
19、,否则显示计算后的值。已有函数调用语句 Check(ponse,value);请填空。void Check(int ponse,float value)int val;val=【1】;printf(“计算后的值:%d”,val);if(【2】)printf(“nWELL DONE!n”);else printf(“nSorry the correct answer is%dn”,val);【题 8.40】以下程序的功能是。#include f(int n)int i,j,k;i=n/100;j=n/10-i*10;k=n%10;if(i*100+j*10+k=i*i*i+j*j*j+k*k*k
20、)return n;else return 0;main()int n,k;printf(“output”);for(n=100;n1000;n+)k=f(n);if(k!=0)printf(“%d”,k);printf(“n”);【题 8.41】以下程序的功能是用二分法求方程的根,并要求绝对0634223xxx误差不超过 0.001。请填空。#include float f(float x)return(2*x*x*x-4*x*x+3*x-6);main()float m=-100,n=90,r;r=(m+n)/2;while(f(r)*f(n)!=0)if(【1】)m=r;else n=r
21、;if(【2】)break;r=(m+n)/2;printf(“The is fangcheng jie is%6.3fn”,r);【题 8.42】若输入一个整数 10,以下程序的运行结果是。main()int a,e10,c,i=0;printf(“输入一整数n”);scanf(“%d”,&a);while(a!=0)c=sub(a);a=a/2;ei=c;i+;for(;i0;i-)printf(“%d”,ei-1);sub(int a)int c;c=a%2;return c;【题 8.43】以下程序的功能是计算下面函数的值。请填空。)sin(*)sin()sin()sin(*)sin(
22、)sin()sin(*)sin()sin(),(yzxzzxyzyyzxyxxzyxF#include#include float f();main()float x,y,z,sum;printf(“ninput x,y,z:n”);scanf(“%f%f%f”,&x,&y,&z);sum=【1】;printf(“sum=%fn”,sum);float f(float a,float b,float c)float value;value=【2】;return(value);【题 8.44】已有函数 pow,现要求取消变量 i 后 pow 函数的功能不变。请填空。修改前的 pow 函数pow(
23、int x,int y)int i,j=1;for(i=1;i=y;+i)j=j*x;return(j);修改后的 pow 函数pow(int x,int y)int j;for(【1】;【2】;【3】)j=j*x;return(j);【题 8.45】以下程序的运行结果是输出如下图形。请填空。*#include void a(int i)int j,k;for(j=0;j=7-i;j+)printf(“”);for(k=0;k【1】;k+)printf(“*”);printf(“n”);main()int i;for(i=0;i=0;i-)【3】;【题 8.46】以下程序的功能是求三个数的最小
24、公倍数,请填空。#include max(int x,int y,int z)if(xy&xz)return(x);else if(【1】)return(y);else return(z);main()int x1,x2,x3,i=1,j,x0;printf(“Input 3 number:”);scanf(“%d%d%d”,&x1,&x2,&x3);x0=max(x1,x2,x3);while(1)j=x0*i;if(【2】)break;i=i+1;printf(“The is%d%d%d zuixiaogongbei is%dn”,x1,x2,x3,j);【题 8.47】函数 gongyu
25、 的作用是求整数 num1 和 num2 的最大公约数,并返回该值,请填空。gongyu(int num1,int num2)int temp,a,b;if(num1【1】num2)temp=num1;num1=num2;num2=temp;a=num1;b=num2;while(【2】)temp=a%b;a=b;b=temp;return(a);【题 8.48】以下程序的运行结果是。main()int x=2,y=3,z=0;printf(“(1)x=%d y=%d z=%dn”,x,y,z);add(x,y,z);printf(“(3)x=%d y=%d z=%dn”,x,y,z);add
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 附答案 语言程序设计 第八 函数 练习题 答案
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内