函数.

Slides:



Advertisements
Similar presentations
CSIM, PU C Language Introduction to the C Programming Language 重覆敘述 (for,while,break,continue) 適合重複性的計算或判斷.
Advertisements

《C语言程序设计》复习
C语言程序设计 主讲教师 :张群燕 电话:
“八皇后”问题 崔萌萌 吕金华.
第一章 C语言概述 计算机公共教学部.
项目五——校园一卡通程序功能模块化设计 5-1项目显示查询和退出函数设计.
Oracle数据库 Oracle 子程序.
C++中的声音处理 在传统Turbo C环境中,如果想用C语言控制电脑发声,可以用Sound函数。在VC6.6环境中如果想控制电脑发声则采用Beep函数。原型为: Beep(频率,持续时间) , 单位毫秒 暂停程序执行使用Sleep函数 Sleep(持续时间), 单位毫秒 引用这两个函数时,必须包含头文件
第三章 控制结构.
第4章 选择结构程序设计 在现实生活中,需要进行判断和选择的情况是很多的 如果你在家,我去拜访你 如果考试不及格,要补考
C语言程序设计 第八章 函数.
第一章 程序设计入门.
4.3函数 4.3.1函数的概念及定义 1、函数的概念: 可以被其它程序调用具有 特定功能的一段相对独立的 程序(模块),称函数。
高级语言程序设计 主讲人:陈玉华.
C#程序设计基础 $5 流程控制.
循环结构又称为重复结构:用来处理需要重复处理的问题,它是程序中一种很重要的结构。
Class 2 流程控制-選擇敘述與迴圈.
函數 授課:ANT 日期:2009/3/24.
EBNF 请用扩展的 BNF 描述 C语言里语句的结构; 请用扩展的 BNF 描述 C++语言里类声明的结构;
函數 授課:ANT 日期:2011/3/28.
第4章 选择结构程序设计 4.1 选择结构和条件判断 4.2 用if语句实现选择结构 4.3关系运算符和关系表达式
C程序设计.
第五章 选择结构程序设计 一、关系运算符和表达式 1、关系运算符 在程序中经常需要比较两个量的大小关系, 以决定程序下一步
QQ: 李祥 QQ: 欢迎多种方式的学习交流,祝大家学有所成.
Introduction to the C Programming Language
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
Chap 5 函数 5.1 计算圆柱体积 5.2 使用函数编写程序 5.3 变量与函数.
C语言 程序设计基础与试验 刘新国、2012年秋.
第3讲 C++程序控制结构 3.1 顺序结构 3.2 分支结构 3.3 循环结构 3.4 转向控制 3.5 综合案例分析.
程序的三种基本结构 if条件分支语句 switch多路开关语句 循环语句 循环嵌套 break,continue和goto语句
計數式重複敘述 for 迴圈 P
第5讲 结构化程序设计(Part II) 周水庚 2018年10月11日.
第1章 概述 本章要点: C语言程序结构和特点 C语言程序的基本符号与关键字 C语言程序的编辑及运行 学习方法建议:
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
1.3 C语言的语句和关键字 一、C语言的语句 与其它高级语言一样,C语言也是利用函数体中的可执行 语句,向计算机系统发出操作命令。按照语句功能或构成的不 同,可将C语言的语句分为五类。 goto, return.
C语言概述 第一章.
程式結構&語法.
第一章 程序设计和C语言 主讲人:高晓娟 计算机学院.
C 语言程序设计 程序的循环结构 电大崇信县工作站 梁海亮.
函式庫補充資料.
目录 4.1选择结构程序设计的概述 4.2关系运算符和表达式 4.3逻辑运算符和表达式 4.4用if语句实现选择结构程序设计
浙江长征职业技术学院—计算机与信息技术系—相方莉制作
指標
Chap 5 函数 5.1 计算圆柱体积 5.2 使用函数编写程序 5.3 变量与函数.
Chap 5 函数 5.1 计算圆柱体积 5.2 数字金字塔 5.3 复数运算.
7.1 C程序的结构 7.2 作用域和作用域规则 7.3 存储属性和生存期 7.4 变量的初始化
C程序设计.
第4章 Excel电子表格制作软件 4.4 函数(一).
<编程达人入门课程> 本节内容 为什么要使用变量? 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ:
第二章 类型、对象、运算符和表达式.
Introduction to the C Programming Language
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
本节内容 函数嵌套调用的内存布局 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
第7章 模板 陈哲 副教授 南京航空航天大学 计算机科学与技术学院.
本节内容 指针类型.
本节内容 C语言的汇编表示 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
第五章 逻辑运算和判断选取控制 §5.1 关系运算符和关系表达式
第七章  数 组.
第1章 数据结构基础概论 本章主要介绍以下内容 数据结构研究的主要内容 数据结构中涉及的基本概念 算法的概念、描述方法以及评价标准.
本节内容 动态链接库 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
C/C++基礎程式設計班 C語言入門、變數、基本處理與輸入輸出 講師:林業峻 CSIE, NTU 3/7, 2015.
第一次上機考參考答案 僅供參考,同學可自行再想更好的方法..
Chap 10 函数与程序结构 10.1 圆形体积计算器 10.2 汉诺塔问题 10.3 长度单位转换 10.4 大程序构成.
第三章 流程控制 程序的运行流程 选择结构语句 循环结构语句 主讲:李祥 时间:2015年10月.
本节内容 指针类型 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
Q1(a) 小偉打算編寫一個程序。該程序把兩個44的表內的數字相加。表3內的數字是由表1和表2應格子內的數字相加而成。例如:
Introduction to the C Programming Language
函式庫補充資料 1.
C语言基础学习 从外行到入门.
隨機函數.
Presentation transcript:

函数

目标 描述 C 语言中的函数 掌握 C 语言中常见的内置函数 理解函数原型和函数的返回值 熟练掌握自定义函数的定义和调用

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

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

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

常用内置函数 内置函数 头文件 用途 double sqrt(double x) math.h 计算x的平方根 double pow(double x, double y) 计算x的y次幂 double ceil(double x) 求不小于x的最小整数,并以double形式显示 double floor(double x) 求不大于x的最大整数,并以double形式显示 int toupper(int x) ctype.h 如果x为小写字母,则返回对应的大写字母 int tolower(int x) 如果x为大写字母,则返回对应的小写字母 int rand(void) stdlib.h 产生一个随机数 void exit(int retval) 终止程序 计算x开N次方:求x的1/n次方。 Ceil:顶,比x大。所以是不小于x的最小整数。离它最近,而且是比它大的数。 Floor:底,比x小。所以是不大于x的最大整数。离它最近,而且是比它小的数。 调用函数的三个条件: 1、调用者必须能够看到被调用者。 2、调用者必须传递的给被调用者正确的参数。 3、如何得到函数的运行结果。

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

内置函数ceil和floor示例 #include <stdio.h> #include <math.h> void main() { printf("==============floor()========="); printf("\n floor(99.1) = %f \n",floor(99.1)); 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)); } 2 6 64 ==============floor()========= floor(99.1) = 99.000000 floor(-99.1) = -100.000000 floor(99.9) = 99.000000 floor(-99.9) = -100.000000 ==============ceil()========== ceil(99.1) = 100.000000 ceil(-99.1) = -99.000000 ceil(99.9) = 100.000000 ceil(-99.9) = -99.000000 Press any key to continue

toupper和tolower示例 #include<stdio.h> #include<ctype.h> Press any key to continue #include<stdio.h> #include<ctype.h> void main() { char msg1,msg2,to_upper,to_lower; 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); } 2 6 64 询问学员此时是否可以体会函数的作用。可以简化我们的操作。

内置函数rand示例 #include<stdio.h> #include<stdlib.h> //#include<time.h> void main() { int i; printf("产生 10 个 0 到 99 之间的随机数序列:\n\n"); //srand((unsigned)time(NULL)); for(i=0; i<10; i++) printf("%d ", rand() % 100); printf("\n"); } 产生 10 个 0 到 99 之间的随机数序列: 44 73 26 58 37 94 27 42 28 90 Press any key to continue 2 6 64 初始化,随机数发生器。

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

函数原型 函数原型说明在形式上与函数头部类似,最后加一个分号。原型说明中参数表里的参数名可以不写(只写参数类型)。 #include <stdio.h> float count (int, int); void main() { . . . } float count(int x,int y)

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

函数嵌套调用 void palindrome() { #include<stdio.h> :::::::: reverse(); } #include<stdio.h> void main() { ::::::::: palindrome(); :::::::: } void reverse() { :::::::::: } 从一个函数调用另一个函数称为函数的嵌套调用

函数递归调用 /* 此函数用于计算 a 的阶乘 */ int factorial(int a) { if (a == 1) return 1; else a = a * factorial(a-1); return a; } 在一个函数体内调用自身称为函数的递归调用

函数调用示例 #include<stdio.h> void AreaOfRect(); void AreaOfRect() void AreaOfTriangle(); void AreaOfRound(); void main() { int select; do { printf(" 0、退出\n 1、长方形\n 2、三角形\n 3、圆形\n"); printf("请选择功能:"); 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); 函数调用示例 void AreaOfRect() { int x,y; printf("请输入长方形的长:"); scanf("%d",&x); printf("请输入长方形的宽:"); scanf("%d",&y); printf("面积为:%d\n",(x * y)); } void AreaOfTriangle() { int x,y; printf("请输入三角形的底:"); scanf("%d",&x); printf("请输入三角形的高:"); scanf("%d",&y); printf("面积为:%d\n",(x * y)/2); } 函数原型 问题描述: 根据用户的选择求不同形状的面积。 void AreaOfRound() { int r; printf("请输入圆形的半径:"); scanf("%d",&r); printf("面积为:%d\n",3.14*r*r); }

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

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

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

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