0
点赞
收藏
分享

微信扫一扫

C语言函数练习

戴老师成长记录仪 2022-01-26 阅读 57
c语言

1.

#include<stdio.h>
//写一个函数判断一个数是不是素数
//is_prime(i)
int is_prime(n)
{
	int j = 0;
	for (j = 2;j <= sqrt(n);j++)//sqrt求平方根
	{
		if (n % j == 0)
		{
			return 0;//直接跳出函数,比break的功能更强
		}
	}
	return 1;
}
int main()
{
	int i = 0;
	for (i = 0;i <= 100;i++)
	{
		if (is_prime(i) == 1)
		{
			printf("%d", i);
		}
		return 0;
	}
}

 2.

#include<stdio.h>
//输出1000-2000之间的全部闰年
int is_leap_year(int n)
{
	if (((n % 4 == 0) &&( n % 100 != 0))||(n % 400 == 0 ))
	{
		return 1;
	}
	else
	return 0;
}//可以把is_leap_year函数简化成  return ((n%4==0)&&(n%100!=0))||(n%400==0));
//构造函数的时候让函数的功能尽量单一
int main()
{
	int y = 0;
	for (y = 1000;y <= 2000;y++)
	{
		if (is_leap_year(y) == 1)
		{
			printf("%d ", y);
		}
	}

	return 0;
}

 3.

#include<stdio.h>
//写一个函数实现二分查找
//找到返回下标,找不到返回-1
int Binary_Search(int arr1[], int m, int n)
{
	int left = 0;
	int right = n - 1;
	while (left <= right)
	{
		int mid = left + (right-left) / 2;
		if (arr1[mid] < m)
		{
			left = mid + 1;
		}
		else if (arr1[mid] > m)
		{
			right = mid -1;
		}
		else
			return mid;
	}
	return -1;
}
int main()
{//数组在传参的时候传递的不是整个数组,传递的是数组首元素的地址
	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
	int k = 0;
	scanf("%d", &k);
	int sz = sizeof(arr) / sizeof(arr[0]);
	int ret=Binary_Search(arr, k, sz);
	if (ret == -1)
	{
		printf("没有找到");

	}
	else printf("找到了,下标是:%d ", ret);
	return 0;
}

4. 实现每调用一次函数就使num增加1

#include<stdio.h>
void test(int* p)
{
	*p = *p + 1;//*p++是错的,可以写作(*P)++
}
int main()
{
	int num = 0;
	test(&num);
	printf("%d ", num);
	return 0;
}

5.函数的定义

 

函数可以嵌套调用但是不能嵌套定义 。

链式访问:把一个函数的返回值作为另一个函数的参数

 

 printf函数的功能

 由此可知:printf函数的返回值是打印字符的数量(整型)。因此嵌套3个printf的输出值是4321。

举报

相关推荐

0 条评论