最新函数与宏定义
}
2020/11/11
第8页
例6-1源程序 Enter radius and height: 3.0 10 Volume = 282.743
/* 定义求圆柱体积的函数 */
double cylinder (double r, double h) {
double result;
result =3.1415926 * r * r * h; /* 计算体积 */
➢ 这些函数又进一步调用解决更小问题的函数,从而形 成函数的嵌套调用
2020/11/11
第4页
程序结构
main( )
函数1
函数2 … …
函数m
函数 1_1
函数 1_2
函数 … 函数 m_1 … m_n
2020/11/11
第5页
• main()也是一个函数,C程序由一个main() 或多个函数构成。
{
/* 函数体,写在一对园括号内 */
double result;
result =3.1415926 * r * r * h; /* 计算圆柱体积 */
return result; }
与函数类型一致
2020/11/11
/* 返回运算结果*/
第14页
表示不返回结果
2.不返回运算结 果的函数定义
void 函数名(参数表)
/* 函数首部 */
{
/* 函数体 */
函数实现过程
return;
/* 可以省略return */
}
这类函数通常用于屏幕输出等
不能省略 否则 函数类型被默认定义为int
2020/11/11
第15页
例6-2 输出5之内的数字金字塔。
/* 输出数字金字塔 */
#include <stdio.h>
库函数:由C语言系统提供定义 如scanf()、printf()等函数
自定义函数:需要用户自己定义
2020/11/11
第3页
• 函数的组织
使用结构化程序设计方法解决复杂的问题
➢ 把大问题分解成若干小问题,小问题再进一步分解成 若干更小的问题
➢ 写程序时,用main()解决整个问题,它调用解决小问 题的函数
函数与宏定义
例1-3 #include<stdio.h> int add(int x,int y); main( ) { int a,b,c; printf(“please input value of a and b:\n”); scanf(“%d%d”,&a,&b); c=add(a,b); printf(“sum=%d”,c); }Βιβλιοθήκη {/* 函数体 */
函数实现过程
return 表达式;
只能返回一个值
}
把函数运算的结果回送给主函数
2020/11/11
第12页
形参
不能写成 double r, h
double cylinder (double r, double h) { double result;
result =3.1415926 * r * r * h; return result; }
要求定义和调用函数cylinder (r, h )计算圆 柱体的体积。
2020/11/11
第7页
/* 计算圆柱体积 */ #include <stdio.h> int main( void ) {
double height, radius, volume;
例6-1源程序
double cylinder (double r, double h); /* 函数声明*/ printf ("Enter radius and height: "); scanf ("%lf%lf", &radius, &height); /* 调用函数,返回值赋给volume */ volume = cylinder (radius, height ); printf ("Volume = %.3f\n", volume); return 0;
2020/11/11
第10页
函数定义1: int abs_sum(int m, int n) { if (m<0)
m=-m; if(n<0)
n=-n; return(m+n); }
函数定义2: int abs_sum(m, n) int m,n { if (m<0)
m=-m; if(n<0)
n=-n; return(m+n); }
• 程序中一旦调用了某个函数,该函数就会 完成一些特定的工作,然后返回到调用它 的地方。
1、函数经过运算,得到一个明确的运算结果, 并需要回送该结果。例如,函数add()返回两个 数的和。
2、函数完成一系列操作步骤,不需要回送任何 运算结果。
2020/11/11
第6页
程序解析-计算圆柱体积
例6-1 输入圆柱体的高和半径,求圆柱体积, volume=π*r2*h。
return result; }
2020/11/11
/* 返回结果 */
第9页
§ 6.1.1 函数定义
函数定义的一般形式可以有两种。 形式一:
[存储类型符] [返回值类型符] 函数名([形参说明表]) { 函数语句体 } 形式二:
[存储类型符] [返回值类型型符] 函数名([形参表]) 形参说明; { 函数语句体 }
函数类型 函数名(形参表)
{ 函数实现过程 return 表达式;
}
类型1 参数1 ,类型2 参数2 ,……,类型n 参数n 参数之间用逗号分隔,每个参数前面的类型都必须分别写明
2020/11/11
第13页
分析函数的定义
函数类型 函数名 形参表
double cylinder (double r, double h) /* 函数首部 */
2020/11/11
第11页
double cylinder (double r, double h) { double result;
1.返回运算结
result = 3.1415926 * r * r * h; return result;
果的函数定义
}
函数返回值的类型
没有分号
函数类型 函数名(形参表) /* 函数首部 */
int add(int x, int y) { return x+y ; }
2020/11/11
第2页
§6.1 函数概念
C语言允许把问题设计成一个一个的模块,程序通过调用 模块功能来解决问题。这些模块通常都是通过函数来实 现的,又可称其为函数模块。 C语言中,函数可分为两类 :
函数是指完成一个特定工作的独立程序模块。