欢迎来到天天文库
浏览记录
ID:46391533
大小:55.01 KB
页数:10页
时间:2019-11-23
《C语言程序设计(第3版)何钦铭 颜 晖 第5章 函数》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第5章函数【练习5-1】使用函数求1到n之和:输入一个正整数n,输出1~n之和。要求自定义和调用函数sum(n)求1~n之和。若要计算m~n(mintsum(intn);intmain(void){intn;intsum;printf("Entern:")scanf("%d",&n);printf("sum=%d",sum(n));return0;}intsum(intn){intresult,i;result=0;for(i=1;i<=n;i++)r
2、esult=result+i;returnresult;}若要计算m~n(m3、大的数。试编写相应程序。解答:#includedoublemax(doublea,doubleb);intmain(void){inta,b;printf(“Inputaandb:”);scanf("%lf%lf",&a,&b);printf("max=%lf",max(a,b));return0;}doublemax(doublea,doubleb){if(a>b)returna;elsereturnb;}【练习5-3】数字金字塔:输入一个正整数n,输出n行数字金字塔。试编写相应程序。解答:#include4、o.h>intmain(void){intn,i,j;printf(“Entern:”);scanf("%d",&n);for(i=1;i<=n;i++){for(j=1;j<=n-i;j++)printf("");for(j=1;j<=i;j++)printf("%d",i);putchar('');}return0;}【练习5-4】思考:若把例5-9中静态变量f定义成普通局部变量,还能实现计算n!吗?请上机检验。若把f换成全局变量又会如何?解答:若把例5-9中静态变量f定义成普通局部变量,无法实现计算n!,因为函数返回后f单元被系统5、回收,不再保存原有数据。若把f换成全局变量,则能实现计算n!,因为f的作用范围和生命周期一直存在。习题5一、选择题1.在C语言程序中,若对函数类型未加显式说明,则函数的隐含类型为D。A.voidB.doubleC.charD.int2.下列程序的输出结果是D。fun(inta,intb,intc){c=a*b;}intmain(void){intc;fun(2,3,c);printf(”%d”,c);return0;}A.0B.1C.6D.无法确定3.建立自定义函数的目的之一是B(优先)、C。A.提高程序的执行效率B.提高程序的可读性C6、.减少程序的篇幅D.减少程序文件所占内存4.以下正确的函数定义形式是A。A.doublefun(intx,inty)B.doublefun(intx;inty)C.doublefun(intx,inty);D.doublefun(intx,y)5.以下不正确的说法是C。A.实参可以是常量、变量或表达式C.形参可以是常量、变量或表达式B.实参可以是任何类型D.形参应与对应的实参类型一致6.以下正确的说法是D。A.实参与其对应的形参共同占用一个存储单元B.实参与其对应的形参各占用独立的存储单元C.只有当实参与其对应的形参同名时才占用一个共同的存7、储单元D.形参是虚拟的,不占用内存单元二、填空题1.下列程序的输出结果为2357。#includeintfun3(intm);intmain(void){intn;for(n=1;n<10;n++)if(fun3(n)==1)printf("%d",n);return0;}intfun3(intm){inti;if(m==28、9、m==3)return1;if(m<210、11、m%2==0)return0;for(i=3;i12、位到低位各位数字是否按值从小到大排列,请根据题意,将程序补充完整。#includeintfun1(intm);intmain(void){intn;scanf(
3、大的数。试编写相应程序。解答:#includedoublemax(doublea,doubleb);intmain(void){inta,b;printf(“Inputaandb:”);scanf("%lf%lf",&a,&b);printf("max=%lf",max(a,b));return0;}doublemax(doublea,doubleb){if(a>b)returna;elsereturnb;}【练习5-3】数字金字塔:输入一个正整数n,输出n行数字金字塔。试编写相应程序。解答:#include4、o.h>intmain(void){intn,i,j;printf(“Entern:”);scanf("%d",&n);for(i=1;i<=n;i++){for(j=1;j<=n-i;j++)printf("");for(j=1;j<=i;j++)printf("%d",i);putchar('');}return0;}【练习5-4】思考:若把例5-9中静态变量f定义成普通局部变量,还能实现计算n!吗?请上机检验。若把f换成全局变量又会如何?解答:若把例5-9中静态变量f定义成普通局部变量,无法实现计算n!,因为函数返回后f单元被系统5、回收,不再保存原有数据。若把f换成全局变量,则能实现计算n!,因为f的作用范围和生命周期一直存在。习题5一、选择题1.在C语言程序中,若对函数类型未加显式说明,则函数的隐含类型为D。A.voidB.doubleC.charD.int2.下列程序的输出结果是D。fun(inta,intb,intc){c=a*b;}intmain(void){intc;fun(2,3,c);printf(”%d”,c);return0;}A.0B.1C.6D.无法确定3.建立自定义函数的目的之一是B(优先)、C。A.提高程序的执行效率B.提高程序的可读性C6、.减少程序的篇幅D.减少程序文件所占内存4.以下正确的函数定义形式是A。A.doublefun(intx,inty)B.doublefun(intx;inty)C.doublefun(intx,inty);D.doublefun(intx,y)5.以下不正确的说法是C。A.实参可以是常量、变量或表达式C.形参可以是常量、变量或表达式B.实参可以是任何类型D.形参应与对应的实参类型一致6.以下正确的说法是D。A.实参与其对应的形参共同占用一个存储单元B.实参与其对应的形参各占用独立的存储单元C.只有当实参与其对应的形参同名时才占用一个共同的存7、储单元D.形参是虚拟的,不占用内存单元二、填空题1.下列程序的输出结果为2357。#includeintfun3(intm);intmain(void){intn;for(n=1;n<10;n++)if(fun3(n)==1)printf("%d",n);return0;}intfun3(intm){inti;if(m==28、9、m==3)return1;if(m<210、11、m%2==0)return0;for(i=3;i12、位到低位各位数字是否按值从小到大排列,请根据题意,将程序补充完整。#includeintfun1(intm);intmain(void){intn;scanf(
4、o.h>intmain(void){intn,i,j;printf(“Entern:”);scanf("%d",&n);for(i=1;i<=n;i++){for(j=1;j<=n-i;j++)printf("");for(j=1;j<=i;j++)printf("%d",i);putchar('');}return0;}【练习5-4】思考:若把例5-9中静态变量f定义成普通局部变量,还能实现计算n!吗?请上机检验。若把f换成全局变量又会如何?解答:若把例5-9中静态变量f定义成普通局部变量,无法实现计算n!,因为函数返回后f单元被系统
5、回收,不再保存原有数据。若把f换成全局变量,则能实现计算n!,因为f的作用范围和生命周期一直存在。习题5一、选择题1.在C语言程序中,若对函数类型未加显式说明,则函数的隐含类型为D。A.voidB.doubleC.charD.int2.下列程序的输出结果是D。fun(inta,intb,intc){c=a*b;}intmain(void){intc;fun(2,3,c);printf(”%d”,c);return0;}A.0B.1C.6D.无法确定3.建立自定义函数的目的之一是B(优先)、C。A.提高程序的执行效率B.提高程序的可读性C
6、.减少程序的篇幅D.减少程序文件所占内存4.以下正确的函数定义形式是A。A.doublefun(intx,inty)B.doublefun(intx;inty)C.doublefun(intx,inty);D.doublefun(intx,y)5.以下不正确的说法是C。A.实参可以是常量、变量或表达式C.形参可以是常量、变量或表达式B.实参可以是任何类型D.形参应与对应的实参类型一致6.以下正确的说法是D。A.实参与其对应的形参共同占用一个存储单元B.实参与其对应的形参各占用独立的存储单元C.只有当实参与其对应的形参同名时才占用一个共同的存
7、储单元D.形参是虚拟的,不占用内存单元二、填空题1.下列程序的输出结果为2357。#includeintfun3(intm);intmain(void){intn;for(n=1;n<10;n++)if(fun3(n)==1)printf("%d",n);return0;}intfun3(intm){inti;if(m==2
8、
9、m==3)return1;if(m<2
10、
11、m%2==0)return0;for(i=3;i12、位到低位各位数字是否按值从小到大排列,请根据题意,将程序补充完整。#includeintfun1(intm);intmain(void){intn;scanf(
12、位到低位各位数字是否按值从小到大排列,请根据题意,将程序补充完整。#includeintfun1(intm);intmain(void){intn;scanf(
此文档下载收益归作者所有