C语言第4章 习题解答.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C语言第4章 习题解答

第4章 习题解答 一、选择题 1.在C语言中,函数返回值的类型最终取决于 A)函数定义时的函数首部所说明的函数类型 B)return语句中表达式值的类型 C)调用函数时主调函数所传递的实参类型 D)函数定义时形参的类型 解析:函数返回值类型最终取决于定义函数时所定义的函数类型。 答案:A 2.设函数Fun()的定义形式为: void Fun(char ch, float x){} 则以下对函数Fun()的调用语句中,正确的是 。 A)Fun(abc, 3.0); B)t = Fun(D, 16.5); C)Fun(65, 2.8); D)Fun(32, 32); 解析:选项A中abc是字符串,与形参不匹配:由于Fun函数的返回值类型为void,所以选项B中进行了赋值操作是不正确的;在选项C中,65是不合法的字符形式,单引号中应该是单个字符。只有选项D才是合法的函数调用形式。 答案:D 3.有以下程序: /* 文件路径名:ex4_1_3\main.c */ #include stdio.h /* 标准输入/输出头文件 */ int f1(int x, int y) { return x y ? x : y; } int f2(int x, int y) { return x y ? y : x; } int main(void) /* 主函数main() */ { int a = 4, b = 3, c = 5, d = 2, e, f, g; /* 定义变量 */ e = f2(f1(a, b), f1(c, d)); f = f1(f2(a, b), f2(c, d));/* 调用函数 */ g = a + b + c + d - e - f; /* 算术运算 */ printf(%d,%d,%d\n, e, f, g); /* 输出e,f,g */ return 0; /* 返回值0, 返回操作系统 */ } 程序运行后的输出结果是 。 A)4,3,7 B)3,4,7 C)5,2,7 D)2,5,7 解析:函数f1用于求两个数中的最大数,而函数f2用于求两个数中的最小数。因此有: e=f2(f1(a,b),f1(c,d))=f2(f1(4,3),f1(5,2))= f2(4,5)=4; f=f1(f2(a,b),f2(c,d)) =f1(f2(4,3),f2(5,2)) =f1(3,2)=3; g=a+b+c+d-e-f=4+3+5+2-4-3=7。 答案:A 4.若函数调用时的实参为变量,以下关于函数形参和实参的叙述中正确的是 。 A)函数的实参和其对应的形参共占同一存储单元 B)形参只是形式上的存在,不会占用具体存储单元 C)同名的实参和形参占同一存储单元 D)函数的形参和实参分别占用不同的存储单元 解析:在C语言中,函数的形参和实参是分别占用不同的存储单元的,因此,选项D是正确的。 答案:D 5.有以下程序: /* 文件路径名:e4_1_5\main.c */ #include stdio.h /* 标准输入/输出头文件 */ int a = 1; /* 全局变量 */ int f(int c) /* 定义函数 */ { static int a = 2; /* 静态变量 */ c++; /* c自加1 */ return (a++) + c; /* 返回函数值 */ } int main(void) /* 主函数main() */ { int i, k = 0; /* 定义变量 */ for (i = 0; i 2; i++) { int a = 3; k += f(a); } /* 循环调用f()函数 */ k += a; /* 将全局变量a的值加到k */ printf(%d\n, k); /* 输出k */ return 0; /* 返回值0, 返回操作系统 */ } 程序的运行结果是 。 A)14 B)15 C)16 D)17 解析:题中“static int a=2”定义了一个static局部变量,编译程序为其生成永久存储单元,在调用函数f()时,值一直都保存着,在主函数中,for循环进行两次,第一次循环得f(3)=2+3+1=6,从而k+=f(3)=6,第二次循环由于static局部变量a变成了3,从而f(3)=3+3+1= 7,故k+=f(3)=13,最后执行k+=a时,此时a

文档评论(0)

almm118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档