欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    最新C语言程序设计(第3版)何钦铭 颜 晖 第5章函数.doc

    • 资源ID:33830858       资源大小:427.50KB        全文页数:20页
    • 资源格式: DOC        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    最新C语言程序设计(第3版)何钦铭 颜 晖 第5章函数.doc

    精品资料C语言程序设计(第3版)何钦铭 颜 晖 第5章 函数.第5章 函数【练习5-1】使用函数求1到n之和:输入一个正整数 n,输出1n之和。要求自定义和调用函数sum(n)求 1n 之和。若要计算 mn(m<n)之和,又该如何定义函数?试编写相应程序。解答:#include <stdio.h>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; i+) result = result + i; return result;若要计算 mn(m<n)之和,则需要在 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(a, b)找出并返回 a、b 中较大的数。试编写相应程序。解答:#include <stdio.h>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 <stdio.h>int 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 单元被系统回收,不再保存原有数据。若把 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减少程序的篇幅 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形参是虚拟的,不占用内存单元二、填空题1下列程序的输出结果为 2357 。#include <stdio.h>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输入若干个正整数,判断每个数从高位到低位各位数字是否按值从小到大排列,请根据题意,将程序补充完整。#include <stdio.h>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 个指定字符(由实参指定)。请根据题意,将程序补充完整。#include <stdio.h>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 <stdio.h>int main(void) int sign(int x); int x, y;scanf("%d",&x); y = sign(x);printf("sign(%d) = %dn", x, y);return 0;int sign(int x) int y;if(x>0) y=1;else if (x=0) y=0;else y=-1;return y;2使用函数求奇数和:输入一批正整数(以零或负数为结束标志),求其中的奇数和。要求定义和调用函数 even(n)判断数的奇偶性,当 n 为偶数时返回 1,否则返回 0。试编写相应程序。解答:#include <stdio.h>int even(int n);int main(void) int n, sum; scanf("%d",&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)计算两点之间的距离。试编写相应程序。解答:#include<stdio.h>#include<math.h>double 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,double 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<stdio.h>#include<math.h>int prime(int m);int main(void) int m,n,sum,count; printf("Input m:"); scanf("%d",&m); 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;i<=sqrt(m);i+) if(m%i=0)return 0; if(i>h&&m!=1)return 1;5.使用函数统计指定数字的个数:读 入 一 个 整 数 , 统 计 并 输 出 该 数 中“2” 的 个 数 。 要 求 定 义 并 调 用 函 数countdigit(number,digit),它的功能是统计整数 number 中数字 digit 的个数。例如,countdigit(12292,2)的返回值是 3。试编写相应程序。解答:#include<stdio.h>int 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);return 0;int countdigit(int number,int digit) int a,count; if(number<0)number=-number; while(number>0) a=number; if(number%10=digit) count+; number=number/10; return count;6使用函数输出水仙花树:输入两个正整数 m 和 n(1<=m,n<=1000),输出 mn 之间所有满足各位数字的立方和等于它本身的数。要求定义并调用函数 is(number),判断number的各位数字之立方和是否等于它本身。试编写相应程序。解答:#include<stdio.h>int is(int number);int main(void) 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; return sum = number;7 使用函数求余弦函数的近似值:输入精度e,用下列公式求cos(x)的近似值,精确到最后一项的绝对值小于e。要求定义和调用函数 funcos(e, x)求余弦函数的近似值。试编写相应程序。cosx=x0/0!-x²/2!+x4/4!-x6/6!+解答:#include<stdio.h>#include<math.h>double 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;

    注意事项

    本文(最新C语言程序设计(第3版)何钦铭 颜 晖 第5章函数.doc)为本站会员(1595****071)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开