ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:19.66KB ,
资源ID:7568518      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7568518.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C语言程序设计第3版何钦铭 颜 晖 第5章函数.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C语言程序设计第3版何钦铭 颜 晖 第5章函数.docx

1、C语言程序设计第3版何钦铭 颜 晖 第5章 函数第5章 函数【练习5-1】使用函数求1到n之和:输入一个正整数 n,输出1n之和。要求自定义和调用函数sum(n)求 1n 之和。若要计算 mn(mn)之和,又该如何定义函数?试编写相应程序。解答:#include int sum(int n);int main(void) int n; int sum; printf(Enter n:) scanf(%d, &n); printf(sum = %dn, sum(n);return 0;int sum(int n)int result, i;result = 0; for(i = 1; i = n

2、; i+) result = result + i; return result;若要计算 mn(mn)之和,则需要在 main()中定义 2 个变量 m 和 n: scanf(%d%d, &m, &n); printf(sum = %dn, sum(m, n);同时在函数定义时需设置 2 个形参:int sum(int m, int n)int result, i;result = 0; for(i = m; i = n; i+) result = result + i; return result;【练习5-2】使用函数找最大值: 输入2个数,输出其中较大的数。要求定义和调用函数 max(

3、a, b)找出并返回 a、b 中较大的数。试编写相应程序。解答:#include double max(double a, double b);int main(void) int a, b; printf(“Input a and b:”); scanf(%lf%lf,&a, &b); printf(max= %lfn, max(a, b);return 0;double max(double a, double b) if(a b) return a; else return b;【练习5-3】数字金字塔:输入一个正整数 n,输出n行数字金字塔。试编写相应程序。解答:#include in

4、t main(void) int n,i,j; printf(“Enter n:”); 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(n); return 0;【练习5-4】 思考:若把例 5-9 中静态变量 f 定义成普通局部变量,还能实现计算 n!吗?请上机检验。若把 f 换成全局变量又会如何?解答:若把例 5-9 中静态变量 f 定义成普通局部变量,无法实现计算 n!,因为函数返回后 f 单元被系

5、统回收,不再保存原有数据。若把 f 换成全局变量,则能实现计算 n!,因为 f 的作用范围和生命周期一直存在。习题5一、选择题1在 C 语言程序中,若对函数类型未加显式说明,则函数的隐含类型为 D 。Avoid Bdouble Cchar Dint 2下列程序的输出结果是 D 。fun(int a, int b, int c) c = a * b; int main(void) int c; fun(2, 3, c); printf(”%dn”, c);return 0;A0 B1 C6 D无法确定3建立自定义函数的目的之一是 B(优先)、C 。A提高程序的执行效率 B提高程序的可读性C减少程

6、序的篇幅 D减少程序文件所占内存4以下正确的函数定义形式是 A 。Adouble fun(int x, int y) Bdouble fun(int x; int y)Cdouble fun(int x, int y); Ddouble fun(int x, y)5以下不正确的说法是 C 。A实参可以是常量、变量或表达式C形参可以是常量、变量或表达式B实参可以是任何类型D形参应与对应的实参类型一致6以下正确的说法是 D 。A实参与其对应的形参共同占用一个存储单元B实参与其对应的形参各占用独立的存储单元C只有当实参与其对应的形参同名时才占用一个共同的存储单元D形参是虚拟的,不占用内存单元二、填空

7、题1下列程序的输出结果为 2357 。#include int fun3(int m);int main(void) int n; for (n = 1; n 10; n+) if (fun3(n) = 1) printf(%d , n); return 0;int fun3(int m) int i; if (m = 2 | m = 3) return 1; if (m 2 | |m % 2 = 0) return 0; for (i = 3; i m; i = i + 2) if (m % i = 0) return 0; return 1; 2输入若干个正整数,判断每个数从高位到低位各位

8、数字是否按值从小到大排列,请根据题意,将程序补充完整。#include int fun1( int m );int main(void) int n; scanf(%d, &n); while (n 0) if(fun1(n) printf(%d 中各位数字按从小到大排列n, n); scanf(%d, &n); int fun1( int m ) int k; k = m % 10; while(m) if( m / 10 % 10 k) return 0; else m = m/10 ; k = m % 10; return 1;3下列函数输出一行字符:先输出 kb 个空格,再输出 n 个

9、指定字符(由实参指定)。请根据题意,将程序补充完整。#include void print( int kb, int n, char zf ) int i; for(i = 1; i = kb; i+) printf(“ ”); for (i = 1; i = n; i+ ) printf(“%c”, zf);三、程序设计题1使用函数计算分段函数的值:输入 x,计算并输出下列分段函数 f(x) 的值。要求定义和调用函数 sign(x) 实现该分段函数。试编写相应程序。 1 x 0f(x)= 0 x 0-1 x 0解答:#include int main(void) int sign(int x

10、); int x, y;scanf(%d,&x); y = sign(x);printf(sign(%d) = %dn, x, y);return 0;int sign(int x) int y;if(x0) y=1;else if (x=0) y=0;else y=-1;return y;2使用函数求奇数和:输入一批正整数(以零或负数为结束标志),求其中的奇数和。要求定义和调用函数 even(n)判断数的奇偶性,当 n 为偶数时返回 1,否则返回 0。试编写相应程序。解答:#include int even(int n);int main(void) int n, sum; scanf(%d

11、,&n); sum = 0; while(n 0) if(even(n) = 0) sum = sum + n; scanf(%d, &n); printf(The sum of the odd numbers is %d.n, sum);return 0;int even(int n) int y; if (n % 2 = 0) y = 1; else y = 0; return y;3.使用函数计算两点间的距离:给定平面任意两点坐标(x1,y1)和(x2,y2),求这两点之间的距离(保留2位小数)。要求定义和调用函数dist(x1,y1,x2,y2)计算两点之间的距离。试编写相应程序。解答

12、:#include#includedouble dist(double x1,double y1,double x2,double y2);int main(void) double x1,y1,x2,y2; printf(Enter x1 and y1:); scanf(%lf%lf,&x1,&y1); printf(Enter x2 and y2:); scanf(%lf%lf,&x2,&y2); printf(Distance=%.2lf,dist(x1,y1,x2,y2); return 0;double dist(double x1,double y1,double x2,doubl

13、e y2) double distance; distance=sqrt(pow(fabs(x2-x1),2)+pow(fabs(y2-y1),2); return distance;4利用函数计算素数个数并求和:输入两个正整数 m 和 n(1=m, n=500),统计并输出 m 和 n 之间的素数的个数以及这些素数的和。要求定义并调用函数 prime(m)判断 m 是否为素数。试编写相应程序。解答:#include#includeint prime(int m);int main(void) int m,n,sum,count; printf(Input m:); scanf(%d,&m);

14、 printf(Input n:); scanf(%d,&n); sum=0; count=0; for(;m=n;m+) if(prime(m)=1) sum=sum+m; count+; printf(%d和%d之间素数的个数:%dn,m,n,count); printf(%d和%d之间素数的和:%dn,m,n,sum); return 0;int prime(int m) int i; for(i=2;ih&m!=1)return 1;5.使用函数统计指定数字的个数:读 入 一 个 整 数 , 统 计 并 输 出 该 数 中“2” 的 个 数 。 要 求 定 义 并 调 用 函 数cou

15、ntdigit(number,digit),它的功能是统计整数 number 中数字 digit 的个数。例如,countdigit(12292,2)的返回值是 3。试编写相应程序。解答:#includeint countdigit(int number,int digit);int main(void) int number,digit; printf(Enter an integer:); scanf(%d,&number); printf(Number of digit ); scanf(%d,&digit); printf(:%d,countdigit(number,digit); r

16、eturn 0;int countdigit(int number,int digit) int a,count; if(number0) a=number; if(number%10=digit) count+; number=number/10; return count;6使用函数输出水仙花树:输入两个正整数 m 和 n(1=m,n=1000),输出 mn 之间所有满足各位数字的立方和等于它本身的数。要求定义并调用函数 is(number),判断number的各位数字之立方和是否等于它本身。试编写相应程序。解答:#includeint is(int number);int main(vo

17、id) int i, m, n; printf(Input m and n:); scanf(%d%d, &m, &n); printf(result:n); for(i = m; i = n; i+) if(is(i) != 0) printf(%dn, i);return 0;int is(int number) int digit, sum, temp; temp = number; sum = 0; while(temp != 0) digit = temp % 10; temp = temp / 10; sum = sum + digit * digit * digit; retur

18、n sum = number;7使用函数求余弦函数的近似值:输入精度e,用下列公式求cos(x)的近似值,精确到最后一项的绝对值小于e。要求定义和调用函数 funcos(e, x)求余弦函数的近似值。试编写相应程序。cosx=x0/0!-x/2!+x4/4!-x6/6!+解答:#include#includedouble funcos(double e, double x);int main(void) double e, sum, x; printf(Input e and x:); scanf(%lf%lf,&e,&x); sum=funcos(e,x); printf(cos%lf=%lfn,x,sum); return 0;double funcos(double e,double x) int flag, i; double item, sum, tmp, power; flag=1; power=1; tmp=1; i=0; item=1; sum=0; while(fabs(item)=e) item=flag*power/tmp; sum=sum+item; power=power*x*x; tmp=tmp*(i+1)*(i+2); flag=-flag; i=i+2; return sum;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1