通过实例讲函数
0、函数的引入
【问题案例1】:打印一个*构成的5层金字塔,如图1所示。
【求解思路】可以用五个printf语句实现。
#include <stdio.h>
//打印5层的
void main()
{
printf(" *\n");
printf(" * *\n");
printf(" * * *\n");
printf(" * * * *\n");
printf("* * * * *\n");
}
【问题案例2】打印一个n层的金字塔,如图2所示。
【求解思路】通过循环n次,打印n行。每一行由打印空格和打印*两部分任务组成。
#include <stdio.h>
void main()
{
int n; //n表示金字塔有多少层
int i,j,k; //i控制每一层,j控制i层空格的过程,k控制i层的* 打印
//1 输入n
printf("请输入一个整数:");
scanf("%d",&n);
//2分n行处理
for(i=1;i<=n;i++) //循环n次
{
//2.1 打印空格
for(j=1;j<=n-i;j++)
printf(" ");
//2.2 打印星和末尾的换行
for(k=1;k<=i;k++)
printf("* ");
printf("\n"); //打印换行在循环体外面
}
}
【问题案例3】打印4个不同层的金字塔。
描述:输入一个n,输出n层,n+1,n+3和n+5层的4个金字塔。
【求解思路】可以讲案例2的代码复制成4段,代码见【附录代码1】。行数较多,存在明显的代码重复,可以将重复的内容,功能相似(相同)的定义为函数,通过调用函数求解,代码见【附录代码2】
1、函数的概念
函数是一段程序段,是语句的集合。一般他有特定的功能。
2、声明函数
当函数调用语句在函数实现(定义)之前,需要现在调用前做函数声明。
3、定义函数
定义一个函数,实际是通过多个语句,实现一个具体功能,形成函数。
- 一般格式:
返回值类型 函数名(形式参数列表)
{
函数语句
} - 【说明1】:如果没有返回值,函数类型为void,如果有返回值(见实例1),函数类型为返回值的类型(见实例2)。
【实例1】打印星花函数
void printStar(int n) // 功能是打印n个星,并换行
{
for(int i=1;i<=n;i++)
printf("* ");