chapter8习题.doc_第1页
chapter8习题.doc_第2页
chapter8习题.doc_第3页
chapter8习题.doc_第4页
chapter8习题.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第8章 函数一、选择题(在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的)8.1 若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是A)函数调用可以作为独立的语句存在B)函数调用可以作为一个函数的实参C)函数调用可以出现在表达式中D)函数调用可以作为一个函数的形参 正确答案: D8.2 在调用函数时,如果实参是简单的变量,它与对应形参之间的数据传递方式是A)地址传递B)单向值传递C)由实参传形参,再由形参传实参D)传递方式由用户指定 正确答案: B8.3 以下正确的说法是A)定义函数时,形参的类型说明可以放在函数体内B)return后边的值不能为表达式C)如果函数值的类型与返回值类型不一致,以函数值类型为准D)如果形参与实参类型不一致,以实参类型为准 正确答案: C8.4 以下正确的说法是A)用户若需调用标准库函数,调用前必须重新定义B)用户可以重新定义标准库函数,若如此,该函数将失去原有含义C)系统根本不允许用户重新定义标准库函数D)用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动调用正确答案: B8.5 以下叙述正确的是A)函数可以嵌套定义但不能嵌套调用B)函数既可以嵌套调用也可以嵌套定义C)函数既不可以嵌套定义也不可以嵌套调用D)函数可以嵌套调用但不可以嵌套定义正确答案: D8.6 下面对C语言的描述中,正确的是A)函数一定有返回值,否则无法使用函数B)C语言函数既可以嵌套定义又可以递归调用C)在C语言中,调用函数时,只能将实参的值传递给形参D)C语言程序中有调用关系的所有函数都必须放在同一源程序文件中 正确答案: C8.7 下列说法中错误的是A)静态局部变量的初值是在编译时赋予的,在程序执行期间不再赋予初值B)若全局变量和某一函数中的局部变量同名,则在该函数中,此全局变量被屏蔽C)静态全局变量可以被其他的编辑单位所引用D)所有自动类局部变量的存储单元都是在进入这些局部变量所在的函数体(或复合语句)时生成,退出其所在的函数体(或复合语句)时消失 正确答案: C8.8 以下程序有语法错误,有关错误原因的正确说法是main() int G=5,k;void prt_char( );.k=prt_char(G);.A)语句 void prt_char( );有错,它是函数调用语句,不能用void说明B)变量名不能使用大写字母C)函数说明和函数调用语句之间有矛盾D)函数名不能使用下划线正确答案: C8.9 以下正确的函数头定义形式是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);正确答案: A8.10 以下所列的各函数首部中,正确的是A)void play(var :Integer,var b:Integer)B)void play(int a,b)C)void play(int a,int b)D)Sub play(a as integer,b as integer)正确答案: C8.11 不合法的main函数命令行参数表示形式是A)main(int a,char *c)B)main(int arc,char *arv)C)main(int argc,char *argv)D)main(int argv,char *argc)正确答案: C8.12 下面函数调用语句含有实参的个数为func(exp1,exp2),(exp3,exp4,exp5);A)1B)2C)4D)5正确答案: B8.13 设有如下函数fun (float x) printf(n%d,x*x);则函数的类型是A)与参数x的类型相同 B)是voidC)是int型 D)无法确定正确答案: C8.14 有以下程序float fun(int x,int y) return(x+y);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正确答案: B8.15 下列程序执行后的输出结果是void func1(int i);void func2(int i);char st=hello,friend!;void func1(int i) printf(%c,sti);if(i3) i+=2;func2(i);void func2(int i) printf(%c,sti);if(i3) i+=2;func1(i);main() int i=0; func1(i); printf(n);A)helloB)helC)hloD)hlm正确答案: C8.16 有以下程序int f(int n) if(n=1) return 1;else return f(n-1)+1;main() int i,j=0;for(i=1;i2) return(fib(n-1)+fib(n-2);else return(2);main() printf(%dn,fib(3);该程序的输出结果是A)2B)4C)6D)8正确答案: B8.18 下列函数的运行结果是main( ) int i=2,p;int j,k;j=i;k=+i;p=f(j,k);printf(%d,p);int f(int a,int b) int c;if(ab) c=1;else if(a=b) c=0;else c=-1;return(c);A)-1B)1C)2D)编译出错,无法运行正确答案: A8.19 阅读下列程序,当运行函数时,输入asd af aa z67,则输出为int fun (char *str) int i,j=0;for(i=0;stri!=0;i+)if(stri!= ) strj+=stri;strj= 0;main() char str81;int n;printf(Input a string : );gets(str);fun(str);printf(%sn,str);A)asdafaaz67B)asd af aa z67C)asdD)z67正确答案: A8.20 以下程序的输出结果是long fun( int n) long s;if(n=1|n=2) s=2;else s=n-fun(n-1);return s;main( ) printf(%ldn, fun(3);A)1B)2C)3D)4正确答案: A8.21 已有变量定义和函数调用语句:int a=25;print_value(&a);下面函数的正确输出结果是void print_value(int *x) printf(%dn,+*x);A)23B)24C)25D)26正确答案: D8.22 下面程序应能对两个整型变量的值进行交换。以下正确的说法是main() int a=10,b=20;printf(1)a=%d,b=%dn,a,b);swap(&a,&b);printf(2)a=%d,b=%dn,a,b);swap(int p,int q) int t;t=p;p=q;q=t;A)该程序完全正确B)该程序有错,只要将语句swap(&a,&b);中的参数改为a,b即可C)该程序有错,只要将swap()函数中的形参p和q以及t均定义为指针(执行语句不变)即可D)以上说法都不对正确答案: D8.23 以下程序的输出结果是int f( ) static int i=0;int s=1;s+=i; i+;return s;main() int i,a=0;for(i=0;i0&a10) c=(a+b)/2;else c=a*b/2;return c;main( ) int a=8,b=20,c;c=f(a,b);printf(%dn,c);A)随机数 B)80 C)28 D)14正确答案: D8.31 阅读如下程序段,则程序段的执行后的输出结果为#include stdio.hmain( ) char c;int i;char count();int p(char);for(i=0;i30;i+) c=count();p(c);char count() char str=A;str+=1;return(str);p(char c) putchar(c);putchar(n);A)AB)BC)aD)b正确答案: B8.32 阅读程序,则执行后的结果为#include stdio.hmain() int i,m,n;for(i=0;i3;i+) m=test1();n=test2();printf(%d,%dn,m,n);test1() int x=0;x+;return x;test2( ) static int x=0;x+;return x;A)1,1B)1,3C)3,1D)3,3正确答案: B二、填空题8.33 当调用函数时,实参是一个数组名,则向函数传递的是 正确答案: 数组的首地址8.34 以下程序的输出结果是 void fun( ) static int a=0;a+=2; printf(%d,a);main( ) int cc;for(cc=1;cc4;cc+) fun( );printf(n);正确答案: 2468.35 以下程序运行结果是 long fib (int g) switch (g) case 0 return 0;case 1case2return 1;return (fib (g-1)+fib(g-2);main () long k;k=fib (5);printf (k=%dn),k);正确答案: k=58.36 以下程序的输出结果是 unsigned fun6(unsigned num) unsigned k=1;do k *=num ; num/=10; while (num);return k;main() unsigned n=26;printf(%dn, fun6(n);正确答案: 528.37 下面的函数fun的功能是将形参x的值转换成二进制数,所得二进制数的每一位放在一维数组中返回,二进制的最低位放在下标为0的元素中,其他依次类推,请填空。fun(int x,int b) int k=0,r;do r=x% ;b =r;x/= ; while(x);正确答案: 2 正确答

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论