初识C语言——函数(1)

1.函数是什么

函数是什么,就好比我们数学中的y= f(x),在C语言中,也是如此,定义为子函数,我们都知道,C程序是由许多子程序组成的,子程序,是一个大型程序中的某部分代码, 由一个或多个语句块组 成。它负责完成某项特定任务,而且相较于其他代码,具备相对的独立性。也可以这么认为,函数就是子程序。

2.函数中的分类

在C程序中,函数分为两类,一类是库函数,另一类是自定义函数。

为什么会有库函数?

1. 我们知道在我们学习C语言编程的时候,总是在一个代码编写完成之后迫不及待的想知道结果,想 把这个结果打印到我们的屏幕上看看。这个时候我们会频繁的使用一个功能:将信息按照一定的格 式打印到屏幕上(printf)。 2. 在编程的过程中我们会频繁的做一些字符串的拷贝工作(strcpy)。 3. 在编程是我们也计算,总是会计算n的k次方这样的运算(pow)。这些函数在使用时可以直接使用,不需要在自己定义一个函数来实现相关操作。

设想一下,如果没有库函数,当我们需要实现某一个操作时,那么可能每一个人写出的程序都不尽相同,势必会造成繁琐,复杂。所以有了库函数之后都可以在统一的标准下使用这些函数。相比之下,每使用一次这个功能就写出一个程序的话就太复杂了。

常用的库函数有这些:

IO函数:这个是输入输出函数,比如scanf,printf,getchar,putchar等等

字符串操作函数:比如strlen、strcpy、strcmp等等

字符操作函数:大小写转换,字符分类等等

内存操作函数:memcpy,memmove,memset等等

时间/日期函数:时间戳time

数学函数:开平方sqrt,计算次方pow等等

其他库函数

简单介绍几个库函数

1.strcpy——字符串拷贝

 来简单写一个程序说明:

#define  _CRT_SECURE_NO_WARNINGS 1

#include<stdio.h>
#include<string.h>

int main()
{
	char arr1[20] = { 0 };
	char arr2[] = "hello world!!!";
	char* ret = strcpy(arr1, arr2);
	printf("%s\n", arr1);
	printf("%s", ret);
	return 0;
}

想要把arr2中的内容拷贝一份,拷贝到arr1中,也可以设置一个返回值ret来接收;

运行结果为:

 这样就可以完成字符串的拷贝了。头文件是#include<string.h>

2.memsrt

 什么意思呢?

简单举一个例子:

#include<stdio.h>
#include<string.h>


int main()
{
	char arr[] = "hello world!!!";
	char* ret = memset(arr, '*', 5);
	printf("%s", ret);
	return 0;
}

首先看一下运行结果:

 看到这里,也就不难理解了,就是把一个字符串的前几个字符改成其他的内容。

3.自定义函数

如果只有库函数,那么是远远不够的,这时就需要自定义函数。

自定义函数和库函数一样,有函数名,返回值类型和函数参数。但是不一样的是这些都是我们自己来设计。

但它们都有共同特征:

 这就是函数的写法。

下面来介绍几个函数;

.把一个数组中的元素从大到小排列,冒泡排序

void Bubble_Sort(int arr[], int sz)
{
	int i = 0;
	for (i = 0; i < sz - 1; i++)
	{
		int j = 0;
		for (j = 0; j < sz - 1 - i; j++)
		{
			if (arr[j] > arr[j + 1])
			{
				int tmp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = tmp;
			}
		}
	}
}


int main()
{
	int arr[10] = { 0 };
	while (scanf("%d %d %d %d %d %d %d %d %d %d", &arr[0], &arr[1], &arr[2], &arr[3], &arr[4],
		&arr[5], &arr[6], &arr[7], &arr[8], &arr[9]) != EOF)
	{
		Bubble_Sort(arr, 10);
		int i = 0;
		for (i = 0; i < 10; i++)
		{
			printf("%d ", arr[i]);
		}
	}
	return 0;
}

当输入10 9 8 7 6 5 4 3 2 1时,输出结果为:

 今天的分享就到这里了,如果有错误,大家指出来,一起进步。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值