C语言程序设计(第3版)何钦铭-颜-晖-第10章--函数与程序结构.doc

C语言程序设计(第3版)何钦铭-颜-晖-第10章--函数与程序结构.doc

ID:58819839

大小:41.00 KB

页数:11页

时间:2020-10-25

C语言程序设计(第3版)何钦铭-颜-晖-第10章--函数与程序结构.doc_第1页
C语言程序设计(第3版)何钦铭-颜-晖-第10章--函数与程序结构.doc_第2页
C语言程序设计(第3版)何钦铭-颜-晖-第10章--函数与程序结构.doc_第3页
C语言程序设计(第3版)何钦铭-颜-晖-第10章--函数与程序结构.doc_第4页
C语言程序设计(第3版)何钦铭-颜-晖-第10章--函数与程序结构.doc_第5页
资源描述:

《C语言程序设计(第3版)何钦铭-颜-晖-第10章--函数与程序结构.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第10章函数与程序结构【练习10-1】使用递归函数计算1到n之和:若要用递归函数计算sum=1+2+3+…+n(n为正整数),请写出该递归函数的递归式子及递归出口。试编写相应程序。解答:递归式子:sum(i)=sum(i-1)+i;递归出口:sum(i)=0;【练习10-2】请完成下列宏定义:①MIN(a,b)求a,b的最小值②ISLOWER(c)判断c是否为小写字母③ISLEAP(y)判断y是否为闰年④CIRFER(r)计算半径为r的圆周长解答:①MIN(a,b):求a,b的最小值。#defineMIN(a,b)(a

2、efineISLOWER(c)(c>='a'&&c<='z')③ISLEAP(y):判断y是否为闰年。#defineISLEAP(y)(y%4==0&&y%100!=0)

3、

4、y%400==0)④CIRFER(r):计算半径为r的圆周长。#definePI3.14159#defineCIRFER(r)2*PI*(r)【练习10-3】分别用函数和带参宏实现从3个数中找出最大数,请比较两者在形式上和使用上的区别。解答:(1)函数实现intmax(intx,inty,intz){intt;if(x>=y)if(x>=z)t=x;elset=z;elseif(y>=z)t=y;elset=z

5、;returnt;}(2)宏实现#defineMAX(x,y,z)x>=y?(x>=z?x:z):(y>=z?y:z)两者在定义形式上完全不同。使用上函数是在执行时,从主调函数转到函数max(),然后再返回到主调函数,函数体始终存在;而宏是在编译预处理时,用条件表达式去替换MAX(intx,inty,intz),等程序执行时,执行的是条件表达式,而不再存在MAX(intx,inty,intz)的式子。习题10一、选择题1.要调用数学函数时,在#include命令行中应包含C。A.”stdio.h”B.”string.h”C.”math.h”D.”ctype.h”2.对于以下递归函数

6、f,调用f(4),其返回值为A。intf(intn){if(n)returnf(n-1)+n;elsereturnn;}A.10B.4C.0D.以上均不是3.执行下列程序:#defineMA(x,y)(x*y)i=5;i=MA(i,i+1)–7;后变量i的值应为B。A.30B.19C.23D.14.宏定义“#defineDIV(a,b)a/b”,经DIV(x+5,y-5)引用,替换展开后是A。A.x+5/y-5B.(x+5/y–5)C.(x+5)/(y-5)D.(x+5)/(y-5);5.定义带参数的宏“#defineJH(a,b,t)t=a;a=b;b=t”,对两个参数a、b的值

7、进行交换,下列表述中哪个是正确的C。A.不定义参数a和b将导致编译错误B.不定义参数a、b、t将导致编译错误C.不定义参数t将导致运行错误D.不需要定义参数a、b、t类型6.执行下面程序,正确的输出是A。intx=5,y=7;voidswap(){intz;z=x;x=y;y=z;}intmain(void){intx=3,y=8;swap();printf("%d,%d",x,y);return0;}A.3,8B.8,3C.5,7D.7,57.下面说法中正确的是A。A.若全局变量仅在单个C文件中访问,则可以将这个变量修改为静态全局变量,以降低模块间的耦合度B.若全局变量仅由单

8、个函数访问,则可以将这个变量改为该函数的静态局部变量,以降低模块间的耦合度C.设计和使用访问动态全局变量、静态全局变量、静态局部变量的函数时,需要考虑变量生命周期问题D.静态全局变量使用过多,可那会导致动态存储区(堆栈)溢出二、填空题1.C语言的编译预处理功能主要包括_条件编译_、_宏定义_和_文件包含_。2.执行完下列语句段后,i的值为5。inti;intf(intx){return((x>0)?f(x-1)+f(x-2):1);}i=f(3);3.下列程序段A与B功能等价,请填写程序段B中相应语句。程序段A:intf(intn){if(n<=1)returnn;elseretu

9、rnf(n-1)+f(n-2);}程序B:intf(intn){_intt,t0,t1;_t0=0;t1=1;t=n;while(_n>1_){t=_t0+t1_;t0=t1;t1=t;n--;}return_t;_}5.下面程序用于计算f(k,n)=1k+2k+…+nk,其中power(m,n)求mn。请填写程序中相应语句。#includeintpower(intm,intn){inti;intp=1;for(i=1;i<=n;i++)p=p*m;

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。