笔记 函数入门

本文介绍了C语言中的函数使用,包括函数的声明、定义和调用,以及库函数和自定义函数的区别。通过示例展示了如何计算三角形面积、判断闰年以及获取日期在一年中的天数。强调了函数在结构化编程中的重要作用,即模块化设计,使得复杂任务得以分解并简化。此外,还解释了函数参数中的实参和形参的概念以及参数传递的过程。
摘要由CSDN通过智能技术生成

       在结构化程序设计中,函数是将任务进行模块划分的基本单位,通过函数,可以把一个复杂任务分解成易于解决的小任务,充分体现结构化程序设计有组到精,逐步细化的设计思想,一个大的程序一般应分为若干个程序模块,每个模块实现一个特定的功能,在C语言中子程序用函数实现。

//函数:定义函数的语法,函数返回类型,函数名,(形参列表)  {函数体}

#define _CRT_SECURE_NO_WARNINGS 
#include<stdio.h>
#include<math.h>

float Trianglearea(float  a, float b, float c);//函数的声明      计算三角形面积

float Trianglearea(float  a, float b, float c)//被调用函数
{    
	float s = -1;//初始化
	if (a + b >= c && a + c >= b && b + c >= a)
	{
		float p = (a + b + c) / 2;
		float s = sqrt(p * (p - a) * (p - b) * (p - c));
	}
	return s;
}

int main()
{
	float a, b, c;
	float s;
	scanf("%f %f %f", &a, &b, &c);
	s = Trianglearea(a, b, c);
	printf("面积是%f\n", s);
	return 0;
}

函数按其是否系统预定义分为两类,按系统预定义的称为库函数或标准函数,如一些常用的数学计算函数,字符串处理函数,图形处理函数,标准输入输出函数,这些库函数都按功能分类,集中说明在不同的头文件中,用户只需在自己的程序中包含某个头文件,就可以直接使用该头文件中的函数,另一类是用户自定义函数,用户可以根据需要将某个具有相对独立性功能的程序定义为函数

自定义函数有:函数返回类型+函数名+形参列表+函数体构成;

int add_int(int a, int b);//函数的声明
int main()
{
	int x = 10, y = 20;
	int z = add_int(x, y);//函数的调用
	printf("z=%d\n", z);
	return 0;
} 
int add_int(int a, int b)//函数的定义
{
	int c = a + b;
	return c;
}

形参:只能等到函数被调用时接受传递过来的数据,称为形参,形参是指函数名后括号中定义的变量,形式参数只有在函数被调用的过程中给予赋值(分配储存空间)。函数执行完成后形参变量就自动释放了,形式参数只在函数中可见(作用域)

实参:调用函数时给出的参数包含了实实在在的数据,所以称为实际参数,实参可以是常量,变量,表达式或者函数等等,无论实参是何种类型的量,在进行函数调用时他们都必须有确定的值,以便把这些值传送给形参。

实参和形参的功能是传递数据,发生函数调用时,实参的值会传递给形参,函数调用有限要进行参数传递,传递过程是先计算实参表达式的值,再将该值传递给对应的形参变量,一般情况下,实参和形参的个数和排列顺序一一对应,并且对应参数应类型匹配(赋值兼容),及实参的类型可以转化为形参的类型

编程的步骤:

1.需求分析,明确我们要处理什么问题,确定我们处理问题所需要的资源

2.算法设计(如何做一件事)根据所需的功能和我们拥有的资源,理清思路

排列出完成此功能的具体步骤,每一个步骤都应当是简单的,确定的,这一步也被称为逻辑编程

3.起一个函数名   确定函数的形参,就是调用此函数时传递的资源  确定函数的返回值  完成函数

**完成一个判断是否为闰年的函数

bool IsLeap(int year)
{
	if ((year % 4 == 0 && year %100 !=0)||(year % 400 == 0))
	{
		return true;
	}
	else 
	{
		return false;
	}

}
int get_ym_day(int year, int month)
{
	int day = 0;
	switch (month)
	{
	case 1:case 3:case 5:case 7:case 8: case 10:case 12:
		day = 31;
		break;
	case 4:case 6:case 9:case 11:
		day = 30;
		break;
	case 2:
		day = IsLeap(year) ? 29 : 28;
			break;
	}
int mian()
{
	int year, month, day;
	scanf("%d %d", &year, &month);
	day = get_ym_day(year, month);
	switch (day)
	{
	case -1:
		printf("year input error : $d\n", year);
		break;
	case -2:
		printf("mont input error :%d\n", month);
		break;
	default:
		printf("year : %d month : %d day : %d\n", year, month, day);
	}
	return 0;
}

计算一个日期是一年中的第几天

#define YEARERROR -1
#define MONTHERROR -2
#define DAYERROR -3
int get_ymd_total(int year, int month, int day)
{
	int total = 0;
	if (year < 1)return YEARERROR;
	if (month < 1 || month>12)return MONTHERROR;
	if (day < 1 || day>get_ym_day(year,month))return DAYERROR;

	for (int i = 0; i < month; i++)
	{
		total = total + get_ym_day(year, i);
	}
	return total + day;
}
int main()
{
	int year, month, day;
	int total = 0;
	scanf("%d %d $d", year, month, day);
	total = get_ymd_total(year, month, day);
	switch (total)
	{
	case -1:
		printf("input year error %d\n", year);
		break;
	case -2:
		printf("input month error %d\n", month);
		break;
	case -3:
		printf("input day error %d\n", day);
		break;
	default:
		printf("year:%d month:%d day:%d total :%d", year, month, day, total);

	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值