栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言中的函数

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言中的函数

1.函数是什么?

函数即子程序

子程序,是一个大型程序中的某部份代码,由一个或多个语句块组成。它负责完成某项特定任务,而且相较于其他代码,具备相对的独立性。

2.C语言中函数的分类: 1.库函数 2.自定义函数

2.1函数的组成:

2.2 例:

求两个数的较大值

int get_max(int x, int y)
{
	int z = 0;
	z = (x > y ? x : y);
	return z;
}
int main()
{
	int a = 0;
	int b = 0;
	scanf("%d %d", &a, &b);
	int m = get_max(a, b);
	printf("%dn", m);
	return 0;
}

2.3 错误示例:

交换两个整型变量的内容。

void Swap(int x, int y)
{
	int z = 0;
	z = x;
	x = y;
	y = z;
}
int main()
{
	int a = 0;
	int b = 0;
	scanf("%d %d", &a, &b);
	printf("交换前:a = %d  b = %dn", a, b);
	Swap(a, b);
	printf("交换后:a = %d  b = %dn", a, b);
	return 0;
}

//错误原因:当函数调用的时候,实参传给形参,形参其实是实参的一份临时拷贝,所以对形参的修改,不会影响实参。

修改后:

使用指针

void Swap(int* pa, int* pb)
{
	int z = 0;
	z = *pa;
	*pa = *pb;
	*pb = z;
}
int main()
{
	int a = 0;
	int b = 0;
	scanf("%d %d", &a, &b);
	printf("交换前:a = %d  b = %dn", a, b);
	Swap(&a, &b);
	printf("交换后:a = %d  b = %d", a, b);
	return 0;
}

3.函数的参数

3.1实际参数(实参):

真实传给函数的参数,叫实参。

实参可以是:常量、变量、表达式、函数等。

无论实参是何种类型的量,在进行函数调用时,他们都必须有确定的值,以便把这些值传送给形参。

3.2形式参数(形参)

形式参数是指函数名后括号中的变量,因为形式参数只有在函数被调用的过程中才实例化(分配内存单元),所以叫形式参数。形式参数当函数被调用完成之后就自动销毁了。因此形式参数只有在函数中有效。

4.函数的调用 4.1传值调用

函数的形参和实参分别占有不同内存块,对形参的修改不会影响实参。

4.2传址调用

·传址调用是把函数外部创建变量的内存地址传递给函数参数的一种调用函数的方式。

·这种传参方式可以让函数和函数外边的变量建立起真正的联系,也就是函数内部可以直接操作函数外部的变量。

4.3练习 写一个函数可以判断一个数是不是素数

(打印100-200之间的素数)

int is_prime(int n)
{
	int j = 0;
	for(j = 2;j < n;j++)
	{
		if (n % j == 0)
		return 0;
	}
	return 1;
}
int main()
{
	int i = 0;
	for(i = 100;i <= 200;i++)
	{
		if (is_prime(i) == 1)
			printf("%d ", i);
	}
	return 0;
}
写一个函数判断一年是不是闰年
int is_leap_year(int n)
{
	if (n % 4 == 0 && n % 100 != 0 || n % 400 == 0)
	{
		return 1;
	}
	else 
		return 0; 
}

int main()
{
	int y = 0;
	for (y = 1000;y <= 2000;y++)
	{
		if (is_leap_year(y) == 1)
			printf("%d ", y);
	}
	return 0;
}
写一个函数,实现一个整型有序数组的二分查找
int binary_search(int arr[], int k, int sz)
{
	int left = 0;
	int right = sz - 1;
	while (left <= right)
	{
		int mid = (left + right) / 2;
		if (k < arr[mid])
		{
			right = mid - 1;
		}
		else if (k > arr[mid])
		{
			left = mid + 1;
		}
		else
			return mid;
	}
	return -1;
}

int main()
{
	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
	int k = 8;
	int sz = sizeof(arr) / sizeof(arr[0]);
	int ret = binary_search(arr, k, sz);
	if (ret == -1)
	{
		printf("找不到" );
	}
	else
	{
		printf("找到了,下标为%d", ret);
	}
	return 0;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/913371.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号