如何自定义一个函数进行加法运算,代码如下:

int add(int x, int y)
{
	int z = 0;
	z = x + y;
	return z;
}
int main()
{
	int a = 10;
	int b = 20;
	int sum = 0;
	sum = add(a, b);
	printf("sum = %d\n", sum);
	return 0;
}

strcpy的使用,代码如下:

int main()
{
	char arr1[] = "bit";
	char arr2[10] = "##########";
	strcpy(arr2, arr1);
	//string copy - 字符拷贝
	//strlen - string length - 字符串长度有关
	printf("%s\n", arr2);
	return 0;
}

memset 的使用,代码如下:

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

自定义一个函数比较两个数的大小,代码如下:

int get_max(int x, int y)
{
	if (x < y)
		return y;
	else
	{
		return x;
	}
}
int main()
{
	int a = 10;
	int b = 20;
	int max = get_max(a, b);
	printf("max = %d\n", max);
	max = get_max(100,500);
	printf("max = %d\n", max);
	return 0;
}

使用函数交换两个整数,代码如下:

//这样是不能转换的
//void swap1(int x, int y)
//{
//	int tmp = 0;
//	x = tmp;
//	x = y;
//	y = tmp;
//}
使用函数交换两个整数
void swap2(int* qa, int* qb)
{
	int tmp = 0;
	tmp = *qa;
	*qa = *qb;
	*qb = tmp;
}
int main()
{
	int a = 10;
	int b = 20;
	printf("a = %d,b = %d\n", a, b);
	//swap1(a, b);//传值调用
//调用swap2函数
	swap2(&a, &b);//传址调用
	printf("a = %d,b = %d\n", a, b);
	return 0;
}

这里要明白传址调用和传值调用的区别,适用范围

使用函数打印100到200之间的素数,代码如下:

//是素数返回1,不是返回0
int prime(int a)
{
	//2—>a-1
	int b = 0;
	for ( b = 2; b <= sqrt(a); b++)
	{
		if (a%b == 0)
			return 0;
	}
	return 1;
}
int main()
{
	//打印100到200之间的素数
	int i = 0;
	for ( i = 100; i <= 200; i++)
	{
		//判断i是否为素数
		if (prime(i) == 1)
			printf("%d\n", i);
	}
	return 0;
}

写一个函数打印1000到2000年的闰年,代码如下:

int is_leap_year(int a)
{
	if ((a % 4 == 0 && a % 100 != 0)||(a%400 == 0))
	{
		return 1;
	}
	return 0;
}
int main()
{
	//写一个函数打印1000到2000年的闰年
	int year = 0;
	for ( year = 1000; year <= 2000 ; year++)
	{
		if (is_leap_year(year) == 1)
			printf("%d\n", year);
	}
	return 0;
}

其实跟之前使用殉循环大同小异,多了个调用。 函数实现二分查找,代码如下:

//              本质上arr是一个指针
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 (arr[mid]<k)
		{
			left = mid + 1;
		}
		else if (arr[mid]>k)
		{
			right = mid - 1;
		}
		else
		{
			return mid;
		}
	}
	return -1;
}
int main()
{
	//二分查找
	//在一个有序数组中查找具体的某个数
	//如果找到了返回这个数的下标,找不到返回-1
	//
	int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
	int k = 7;
	int sz = sizeof(arr) / sizeof(arr[0]);//求数组的元素个数
	int ret = binary_search(arr, k,sz);
	if (ret == -1)
	{
		printf("找不到指定的数字\n");
	}
	else
	{
		printf("找到了,下标是:%d\n", ret);
	}
	return 0;
}

写一个函数,每次调用这个函数,就会将num值+1

void add(int* p)
{
	(*p)++;
}
int main()
{
	int num = 0;
	add(&num);
	printf("num = %d\n", num);//1
	add(&num);
	printf("num = %d\n", num);//2
	add(&num);
	printf("num = %d\n", num);//3
	return 0;
}

函数的链式访问

int main()
{
	printf("%d", printf("%d", printf("%d", 43)));//4321

	return 0;
}

函数的声明,调用,定义

//函数的声明
int add(int x, int y);

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

以上就是今天的学习内容啦,希望能坚持每天敲代码,写博客。 2021.1.22