9512.net
甜梦文库
当前位置:首页 >> 数学 >>

07函数


第七章

函数

例题:请输入二个整数,来判断二个数是奇数还是偶数
main() { int a,b; Printf(“请输入二个数来判断是奇数还是偶数:”); Scanf(“%d%d”,&a,&b); If(a%2==0) //判断a是否是偶数 Printf(“%d是偶数”,a); else Printf(“%d是奇数:”a); If(b%2==0) //判断b是否是偶数 重复语句(功能一样) Printf(“%d是偶数”,b); else Printf(“%d是奇数”,b); }

为什么使用函数
void main() { :::::: x=x*x*x; void main() int cube(int a,b,c) { y=y*y*y; z=z*z*z; { :::::: 重复多次的同一 ans1=x+y+z; int ans; ans1=cube(x,y,z); 计算类型 a=a*a*a; ans=(a*a*a)+(b*b*b)+(c*c*c); ans2=cube(a,b,c); b=b*b*b; return ans; ::::: ans } } c=c*c*c; 函数 ans2=a+b+c; 主程序 ::::: } 函数可以把相对独立的某个功能抽象出来,使之成为 程序中的一个独立实体。可以在同一个程序或其他程 序中多次重复使用

函数机制的优点
? ? ? ? 使程序变得更简短而清晰 有利于程序维护 可以提高程序开发的效率 提高了代码的重用性

函数类型
内置函数: ?由C语言系统提供; ?用户无须定义,也不 必在程序中作类型说明; ?只需在程序前包含有 该函数定义的头文件;

自定义函数: ?用户在程序中根据需 要而编写的函数;

内置函数
double sqrt(double x)

头文件

用途
计算x的平方根 计算x的y次幂

double pow(double x, double y)
double ceil(double x) double floor(double x) int toupper(int x)

math.h

ctype.h
int tolower(int x) int rand(void) void exit(int retval) stdlib.h

求不小于x的最小整数,并 以double形式显示 求不大于x的最大整数,并 以double形式显示 如果x为小写字母,则返回 对应的大写字母 如果x为大写字母,则返回 对应的小写字母 产生一个随机数 终止程序

内置函数sqrt 和pow 示例
1的平方根: 1.00 1的立方: 1 #include <stdio.h> 2的平方根: 1.41 2的立方: 8 #include <math.h> 3的平方根: 1.73 3的立方: 27 4的平方根: 2.00 4的立方: 64 void main() 问题描述: 5的平方根: 2.24 5的立方: 125 { 6的平方根: 2.45 6的立方: 216 int x=1; 求自然数1~10的平方根和立方。 7的平方根 : 2.65 6 7的立方 2 64 : 343 double squareroot,power; 8的平方根: 2.83 8的立方: 512 9的平方根: 3.00 9的立方: 729 while(x <= 10) 10的平方根: 3.16 10的立方: 1000 { Press any key to continue

squareroot=sqrt(x); power=pow(x,3); printf(" %d的平方根:%3.2f\t%d的立方:%5.0f \n", x,squareroot,x,power); x++;

} }

内置函数ceil和floor示例

#include <stdio.h> #include <math.h> ==============ceil()========== void main() ceil(99.1) = 100.000000 ceil(-99.1) = -99.000000 { ceil(99.9) = 100.000000 printf("==============floor()========="); 2 64 ceil(-99.9) =6-99.000000 printf("\n floor(99.1) = %f \n",floor(99.1)); Press any key to continue printf(" floor(-99.1) = %f\n",floor(-99.1)); printf(" floor(99.9) = %f\n",floor(99.9)); printf(" floor(-99.9) = %f\n",floor(-99.9)); printf("\n==============ceil()=========="); printf("\n ceil(99.1) = %f\n",ceil(99.1)); printf(" ceil(-99.1) = %f\n",ceil(-99.1)); printf(" ceil(99.9) = %f\n",ceil(99.9)); printf(" ceil(-99.9) = %f\n",ceil(-99.9)); }

==============floor()========= floor(99.1) = 99.000000 floor(-99.1) = -100.000000 floor(99.9) = 99.000000 floor(-99.9) = -100.000000

toupper和tolower示例
#include<stdio.h> #include<ctype.h> void main() { char msg1,msg2,to_upper,to_lower; 2 printf("请输入一个小写字母:"); msg1=getchar(); to_upper=toupper(msg1); printf("转换为大写:%c\n",to_upper); printf("请输入一个大写字母:"); fflush(stdin); msg2=getchar(); to_lower=tolower(msg2); printf("转换为小写:%c\n",to_lower); }
请输入一个小写字母:d 转换为大写:D 请输入一个大写字母:E 转换为小写:e Press any key to continue
6 64

内置函数rand示例
#include<stdio.h> 产生 10 个 0 到 99 之间的随机数序列: #include<stdlib.h> 44 73 26 58 37 94 27 42 28 90 //#include<time.h> Press any key to continue void main() 2 6 64 { int i; printf("产生 10 个 0 到 99 之间的随机数序列:\n\n"); //srand((unsigned)time(NULL)); for(i=0; i<10; i++) printf("%d ", rand() % 100); //rand() % (b-a))+ a (结果 值将含a不含b)。在a为0的情况下,简写为rand() % b printf("\n"); 演示:示例4 }

函数形参和实参
void main ( ) { 实际参数 又叫实参 ... ... display ( 10, 20.5 ); } 函数调用
display ( int num, float fraction ) { ... ... 形式参数 又叫形参 }

函数原型
? 函数原型说明在形式上与函数头部类似,最后加一个分号。原型说明 中参数表里的参数名可以不写(只写参数类型)。 C语言规定:函数必须先定义,后调用(函数的返回值类型为int 或char 除外)凡是未在调用前定义的函数(即未在调用前写函数原 型),c编译程序都默认函数的返回值为int型。对于返回值为其他类 型的函数,若把函数的定义放在调用之后,应该在调用之前对函数进 行说明(即写函数原型)。 #include <stdio.h> float count (int, int); void main() { . . . . . . } float count(int x,int y) { . . . }

函数定义
void displayDiscount() double max(double x, double y) { float double m;price, discount_amt; printf("请输入价格"); m=x>y?x:y; scanf("%f, &price); return m; discount_amt = 0.75 * price; } printf("折扣额为 %f", discount_amt); 该函数名为max,它有两个double类型的参数,返回 } 值为double类型。在函数体内有三条语句实现了求两
个数中较大的数,并将它返回。 该函数名为displayDiscount,无参数,使用void说明 无返回值,函数体内的语句用于根据产品的价格求折 扣后的价格。

函数调用
float set_discount() ?#include<stdio.h> 通过在程序中使用函数名称,可以执行函数中包 { void main() :::::::::: 含的语句,这称为调用函数 { :::::::::: ::::::::: ? 函数之间允许相互调用,也允许嵌套调用 } set_discount(); ? 函数还可以自己调用自己,称为递归调用 displayDiscount(); float displayDiscount() :::::::: { :::::::: :::::::::: } :::::::::: }

函数嵌套调用
#include<stdio.h> void main() { ::::::::: palindrome(); :::::::: :::::::: } void palindrome() {
::::::::

reverse();
::::::::

} void reverse() { :::::::::: :::::::::: }

从一个函数调用另一个函数称为函数的嵌套调用

传值调用
传值调用

void main() { int a = 0; //初始化a值为0 func(a); //调用函数func 0 printf("%d",a); //输出a的结果 } //定义函数func void func(int a) { a = 10; //让参数a等于10 }

将会输出什么

34 56 请输入两个数 : _

递增前的值是 34 和 56

调用函数 传值调用示例 num2 num1

#include <stdio.h> 递增后的值是 34 和 56 void increment(int,int); 34 56 34 56 void main() { int num1,num2; FF23 FF05 printf("\n 请输入两个数: "); scanf(" %d %d",&num1,&num2); 将变量num1的 将变量num2的 printf("\n值赋给形参 递增前的值是 %d 和 %d\n", num1, num2); val1 值赋给形参val2 increment(num1,num2); 34 56 printf("\n 递增后的值是 %d 和 %d\n", num1, num2); } val1 调用后修改为35 val2 调用后修改为57 var1 var2 void increment(int val1,int val2) 57 { 35 56 val1++; 34 val2++; FF45val2); printf("\nFFEA 子函数中值 %d 和 %d\n", val1, } 被调用函数

num1 子函数中的值是 35 和 57

num2

总结:传值调用在调用时,系统将实参拷贝一 个副本给形参,使形参具有与实参相同的值, 即实参值分别按位置传递给对应的形参,使 形参获取从实参传递来的值.这种调用方式 的特点是在被调用函数中改变形参的值,只 是改变其副本值,而不会影响调用函数中的 实参值.

#include<stdio.h> Void try(int,int,int); Main() { int x=2,y=3,z=0; Printf(“(1)x=%d y=%d z=%d\n”,x,y,z); try(x,y,z); Printf(“(4)x=%d y=%d z=%d\n”,x,y,z); } void try(int x,int y,int z) { printf(“(2)x=%d y=%d z=%d\n”,x,y,z); z=x+y; x=x*x; y=y*y; Printf(“(3)x=%d y=%d z=%d\n”,x,y,z); }

程序的运行结果如下: (1)x=2 y=3 z=0 (2)x=2 y=3 z=0 (3)x=4 y=9 z=5 (4)x=2 y=3 z=0

#include<stdio.h> void AreaOfRect() void AreaOfRect(); { void AreaOfTriangle(); int x,y; void AreaOfTriangle() void AreaOfRound(); 函数原型 printf("请输入长方形的长:"); { void main() scanf("%d",&x); int x,y; void AreaOfRound() { 问题描述: printf("请输入长方形的宽 请输入三角形的底:"); { int select; scanf("%d",&y); scanf("%d",&x); int r; do { 根据用户的选择求不同形状的面积。 printf("面积为: %d\n",(x * y)); 请输入三角形的高 :"); 请输入圆形的半径 printf(" 0、退出\n 1、长方形\n 2printf(" 、三角形 \n 3、圆形\n"); :"); } scanf("%d",&y); scanf("%d",&r); printf("请选择功能:"); printf(" 面积为: %d\n",(x * y)/2); printf(" 面积为: %d\n",3.14*r*r); scanf("%d",&select); } } if(select == 0) break; switch(select) { case 1 : AreaOfRect(); break; //长方形 case 2 : AreaOfTriangle(); break; //三角形 case 3 : AreaOfRound(); break; //圆形 default : printf("输入有误,请在 0~4 之间选择。\n"); } }while(1); 演示:示例6 }

函数调用示例

函数返回值
? C 语言中的 return 语句用于向调用函数返 回值,语法如下: return (<表达式>);
? C语言中的函数至多可以返回一个值,不能返回 int divisibleCheck(int num) 多个值; { if (num % 5 == 0) ? 返回值的数据类型必须与函数原型中返回值的 return 1; 数据类型匹配; else ? 当遇到 return 语句时,函数执行将终止。 return 0; } 程序控制流将立即返回调用函数;

函数返回值示例
内存 #include <stdio.h> age1 age2 age3 int get_age(); void main() 78 54 65 { int age1, age2, age3; int get_age() age1 = get_age(); { age2 = get_age(); int age; age3 = get_age(); printf("\n请输入年龄: "); if ( (age1 > age2) && (age1 > age3)) scanf("%d",&age); printf("\n年龄为 %d 的人最大\n", age1); return age; else if( (age2 > age1) && (age2 > age3)) } printf("\n年龄为 %d 的人最大\n", age2); else if( (age3 > age1) && (age3 > age2)) 请输入年龄:65 printf("\n年龄为 %d 的人最大\n", age2);请输入年龄:78 请输入年龄:54 }

年龄为 78 岁的人最大

总结 2-1
? 函数是程序中的一个相对独立的单元或模 块,程序在需要时可以任意多次地调用函 数来完成特定功能 ? 使用函数带来的好处: 程序更清晰、易维 护、分模块方便设计与开发、提高代码的 重用性 ? C语言提供了极为丰富的内置函数,这些 内置函数分门别类地放在不同的头文件中, 要使用这些内置函数,只要在程序前包含 相应的头文件即可

总结 2-2
? 自定义函数是用户在程序中根据需要而编写 的函数 ? 函数的结构包括:返回值类型、函数名、参 数列表、函数体 ? 函数原型说明以便向编译器指出该函数使用 什么样的格式和语法 ? 函数调用时程序控制流将转向被调函数,被 调函数执行结束时,控制流返回主调函数 ? return 语句用于向调用函数返回值



更多相关文章:
Excel2007函数大全.doc
Excel2007函数大全 - Excel2007 函数大全 一、函数应用基础
07函数.doc
07函数 - 第七章 第 1、2 课时 引例: 函数(function) 我们知
07函数_图文.ppt
07函数 - 第七章 函数 例题:请输入二个整数,来判断二个数是奇数还是偶数 m
07-函数及其运算(精)_图文.ppt
07-函数及其运算(精) - 函数及其运算 离散数学:第7讲 上一讲内容的回顾
07函数的图像.doc
07函数的图像 - 第七讲 函数的图像 1.利用描点法作函数图像:其基本步骤是列
(最全版)Excel2007函数大全_图文.pdf
(最全版)Excel2007函数大全_计算机软件及应用_IT/计算机_专业资料 暂无评价|0人阅读|0次下载 | 举报文档 (最全版)Excel2007函数大全_计算机软件及应用_IT/...
07_函数_图文.ppt
07_函数 - 问题: 1、程序很大,有几百行, 如何调试? 2、如何设计一个程序完成 下面的计算? m!n! (m-n)! 1 第七章 函数 ? 概述 ? 函数的定义 ? ...
07+函数的应用.doc
07+函数的应用 - 热点 7 函数的应用 总分:100 分) (时间:100
函数练习07.doc
函数练习07 - 函数练习 7 反函数(三) 2 3 1. 下列几个函数中,(1
Excel2007函数列表.doc
Excel2007函数列表 - Excel2007 函数列表 加载宏和自动化函数
EXCEL2007常用函数.doc
EXCEL2007常用函数 - 一、数字处理 1、取绝对值 =ABS(数字) 2
函数测试07.doc
函数测试07 - 函数测试(2007-2) 学号 1、如图是某函数的图像,则下列
07第二章 函数的概念.doc
07第二章 函数的概念 - 教学课题:函数的概念 三维目标: 1.知识与技能: 学习用集合与对应的语言来刻画函数,体会对应关系在刻画函数概念中的作用。 2.过程与方法...
学历案07 函数的表示1.doc
学历案07 函数的表示1 - 注重基础,注重能力,循序渐进,重难点突出。... 学历案07 函数的表示1_高一数学_数学_高中教育_教育专区。注重基础,注重能力,循序渐进,重...
07C语言函数课件_图文.ppt
07C语言函数课件 - 第七章 函数 ? 7.1 概述 ? 模块化程序设计 ?
Excel2007函数速查表.pdf
Excel2007函数速查表 - 附录2 Excel 2007函数速查表 表B-
07函数的概念和图像&一次函数.doc
07函数的概念和图像&一次函数_数学_初中教育_教育专区。2015,湘教
07函数的概念(一).doc
07函数的概念(一) - 高一数学翻转课时学案 班级 课题 目标 导学 重点 难
07函数的图象.doc
07函数的图象_初二数学_数学_初中教育_教育专区 暂无评价|0人阅读|0次下载|举报文档 07函数的图象_初二数学_数学_初中教育_教育专区。1、 借助实际生活情境探究...
07 函数_图文.ppt
07 函数 - 第七章 函数 §7.1 概述 ?模块化程序设计 ?基本思想:将一
更多相关标签:

All rights reserved Powered by 甜梦文库 9512.net

copyright ©right 2010-2021。
甜梦文库内容来自网络,如有侵犯请联系客服。zhit325@126.com|网站地图