C语言基础 — 函数


1、函数

函数由四部分组成:返回值 函数名(参数列表) { 函数体实现 }

1.1 单独函数

将功能代码从 main 函数中移到其他函数中
举个简单的栗子:

int main()
{
	int a, b;
	printf("please input 2 numbers:");
	scanf("%d %d", &a, &b);
	if(a >= b)
		printf("max = %d\n", a);
	else
		printf("max = %d\n", b);
	return 0;
}

将代码修改之后如下:

int Max()
{
	int a, b;
	printf("please input 2 numbers:");
	scanf("%d %d", &a, &b);
	if(a >= b)
		printf("max = %d\n", a);
	else
		printf("max = %d\n", b);
	return 0;
}
int main()
{
	return 0;
}

1.2 利用参数列表

在我们使用软件的过程中,并不会出现通过黑屏状态下输入数据,拿数据从何而来呢?答案就是通过 参数列表。将变量定义和 scanf 语句删除,改成参数列表即可

举个简单的栗子:

int Max(int a, int b)  // 形参
{
	if(a >= b)
		printf("max = %d\n", a);
	else
		printf("max = %d\n", b);
	return 0;
}
int main()
{
	Max(10, 20);  // 传入实参
	Max(3, 5);
	return 0;
}

1.3 使用返回值

在功能函数中不能使用 printf,printf 只是用于简单的单元测试,我们应该使用返回值将结果返回给调用函数。
所以我们将代码进行修改,如下:

int Max(int a, int b)  // 形参
{
	if(a >= b)
		return a;
	else
		return b;
}

1.4 函数体

2、测试用例

函数写完后应该进行单元测试,看看我们的函数结果是否有错。测试用例尽量写的全面
举个简单的栗子:

int Max(int a, int b)
{
	return a>b ? a:b;  // 三目运算符,替换了if else 表达式
}
int main()
{
	// 编写测试用例
	int m = Max(10, 20);  // 先接受返回值,然后输出
	printf("%d\n", m);
	printf("%d\n", Max(20, 10));  // 直接输出
	return 0;
}

3、函数的使用

函数测试完成之后,就可以给自己或者别人使用,如,利用 Max() 函数来实现求两个数的最大值,当然也可以实现求多个数的最大值

举个简单的栗子:

int Max(int a, int b, int c)
{
	return Max(Max(a, b), c);  
}

【注】真题演练

bool Fun(int n)
{
	int i = 2;
	while( (n%i)!=0 && i*1.0<sqrt(n) )
		i++;
	if( i*1.0 > sqrt(n) )
		return true;
	else
		return false;
}
  • 该函数的作用是什么?
    判断一个数是否为 素数
  • 该函数的时间复杂度为多少?
    时间复杂度为sqrt(n)

例题1:利用函数实现判断给定的年份是否为闰年

// 利用函数实现判断给定的年份是否为闰年
void Is_Leap(int year)
{
	if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
	{
		printf("%d 是闰年!\n", year);
	}
	else
	{
		printf("%d 不是闰年!\n", year);
	}
}
int main()
{
	int year;
	printf("Please input year:");
	scanf_s("%d", &year);
	Is_Leap(year);
	return 0;
}

运行结果如下:
在这里插入图片描述

例题2:利用给定函数实现判断一个数是否为素数

void Is_Prime(int num)
{
	// 判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数
	int i = 2;
	for (i; i*1.0 < sqrt(num); i++)
	{
		if (num % i == 0)
			break;
	}
	if (num % i == 0)
		printf("%d 不是素数!\n", num);
	else
		printf("%d 是素数!\n", num);
}

其运行结果为:
在这里插入图片描述


请添加图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值