C语言学习笔记03——函数(作业:杨辉三角形)

函数在我看来就是代码的最小单位,每调用一个函数就相当于实现一个功能。

函数的分类主要有:1)标准库函数:由C语言标准委员会制定编写的 使用C语言的人都能调用的

2)第三方函数:别人写好封装后 可以使用的

3)系统函数:操作系统提供的一些功能接口、内存管理、文件读写,进程通信等

4)自定义函数:程序员自己根据需求编写的函数


定义函数的格式: 返回值类型 函数名(参数类型 参数列表);

返回值类型 和 参数类型如果都为空 则可直接填写void 也可以不写


函数声明: (如果函数的定义在调用之后,则一定要加上函数声明)

格式: 类型 函数名(参数类型 参数列表);


函数调用: 函数名(实参);

     函数名在定义时最好能准确表达你要实现的功能,做到见名知意,方便以后与他人合作时,别人也可以熟练地调用。

     函数的返回值会直接放在函数的调用位置,调用的返回值可以用两种处理方式。
                1、立即使用
                2、使用变量保存,以便后期使用

                否则返回值就丢失。

函数的命名空间:

            不同的函数之间命名空间是独立的,函数中的变量名是可以相同的。
            
函数的传参:

            当给函数传参和接收函数的返回值时,C语言是用值传递的方式处理的。


函数与递归配合使用,有时会达到意想不到的效果。

课后作业:设计函数实现杨辉三角形。


#include <stdio.h>

int triangle(int x,int y)  // x为行 y为列  递归调用x,y坐标
{
	if (y==1||y==x)  //每行第一个和最后一个元素都是1
	{
		return 1;
	}
	return triangle(x-1,y-1)+triangle(x-1,y); //否则为上一行y-1和y元素之和
}

void get_trangle(int len)   //输入行数得到杨辉三角形
{
	for (int i = 1; i <= len; i++)
	{
		for (int j = 1; j <= i ; j++)
		{
			printf("%d ",triangle(i,j));
		}
		printf("\n");
	}
}

int main(int argc, char const *argv[])
{
	int len;
	scanf("%d",&len);
	get_trangle(len);
	return 0;
}

在用递归的时候要注意递归要满足两个条件:
一是,要有使递归进行下去的变量,在这里就是x和y(行和列);

二是,要有终止递归的条件,在这里就是当x==y或者y==1的时候。



猜你喜欢

转载自blog.csdn.net/canger_/article/details/80515792