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 语句用于向调用函数返回值



更多相关文章:
07_函数_图文.ppt
07_函数 - 问题: 1、程序很大,有几百行, 如何调试? 2、如何设计一个程序完成 下面的计算? m!n! (m-n)! 1 第七章 函数 ? 概述 ? 函数的定义 ? ...
07函数1_图文.ppt
07函数1_数学_初中教育_教育专区。函数 ?教学目的与任务:掌握函数的定义,掌
07函数2_图文.ppt
07函数2_电脑基础知识_IT/计算机_专业资料。函数 ?教学目的与任务:掌握函
07C语言函数课件_图文.ppt
07C语言函数课件_工学_高等教育_教育专区。第七章 函数 ? 7.1 概述 ?
(最全版)Excel2007函数大全_图文.pdf
(最全版)Excel2007函数大全_计算机软件及应用_IT/计算机_专业资料 暂无评价|0人阅读|0次下载 | 举报文档 (最全版)Excel2007函数大全_计算机软件及应用_IT/...
Excel 2007函数列表_图文.xls
Excel 2007函数列表_计算机软件及应用_IT/计算机_专业资料。EXCL
07函数_图文.ppt
07函数_理学_高等教育_教育专区。第七章 函数 第七章 函数本章重点: ● 函数定义、函数说明和函数调用 ● 函数递归调用 ● 变量的作用域 第七章 函数 ...
07-函数及其运算_图文.ppt
07-函数及其运算_IT/计算机_专业资料。离散数学中函数及其运算 函数及其运算
excel2007函数_图文.xls
excel2007函数_计算机软件及应用_IT/计算机_专业资料。excel2007函数 数学和三角 ABS ACOS ACOSH AGGREGATE ASIN ASINH ATAN ATAN2 ATANH CEILING CEILING.PRECISE ...
Excel2007函数公式应用实例_图文.xls
(A3)/3),"") 例106 例107 例108 例109 例110 例111 例112 INT函数在序列中的复杂运用:=INT(SQRT(2*ROW(A1))+0.5);=10^INT((ROW()-1)/2);=...
excel2007函数功能_图文.xls
excel2007函数功能_计算机软件及应用_IT/计算机_专业资料。工作表函数
1-07_函数的连续性_图文.ppt
1-07_函数的连续性 - 一元函数的连续性 一、函数的连续性 二、函数连续性的运算定理 三、最 (大,小) 值定理和介值定理 一、函数的连续性 函数的增量 设...
ch07 生产函数_图文.ppt
ch07 生产函数_经济学_高等教育_教育专区。NJU IED Chapter
07-Arduino系统函数_图文.pdf
07-Arduino系统函数_计算机硬件及网络_IT/计算机_专业资料。Arduino的系统函数,包括时间、中断、IO等 Aduino Arduino基本函数本章内容: ? 时间函数 ? 中断函数 ? ...
函数》第07讲 幂函数课件_图文.ppt
函数》第07讲 幂函数课件_数学_高中教育_教育专区。高三第一轮复习 幂函数 知识梳理一.幂函数的定义 名称 幂函数指数函数 表达式 常数 ? 为非零有理数 过...
EXCEL2007函数应用_图文.ppt
EXCEL2007函数应用_调查/报告_表格/模板_实用文档。EXCEL函数应用
第3章 Excel2007 常用函数_图文.ppt
Excel 2007 数据分析 及其应用第三章 常用函数 1 第三章 常用函数本章内容:介绍Excel 2007函数的基本概 念及常用函数的使用方法,并举例加以说 明。常用函数包括...
第B-07-08学时 典型环节传递函数._图文.ppt
第B-07-08学时 典型环节传递函数._幼儿读物_幼儿教育_教育专区。第B-07-08学时 典型环节传递函数. 机械类专业技术基础课 机电系统控制基础 宋文平 机电工程学院...
07章--函数_图文.ppt
07章--函数_理学_高等教育_教育专区。C语言课件 C程序设计 函数讲授
chap07_函数_图文.ppt
chap07_函数 - Chap 7 函数 函数就是一连串语句, 函数就是一连串语句,这些语句被组合在一起 并且给定了一个名字. ,并且给定了一个名字 函数本质上是一个自带...
更多相关标签:

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

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