函数调用,二分查找

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>

//is_leap_year
//如果是闰年,返回1
//如果不是闰年,返回0

//int is_leap_year(int x)
//{
//	if((x%4==0) && (x%100!=0) || (x%400==0))
//		return 1;
//	else
//		return 0;
//}

//int is_leap_year(int x)
//{
//	if((x%4==0 && x%100!=0) || (x%400==0))
//		return 1;
//	else
//		return 0;
//}

//int is_leap_year(int x)
//{
//	if (x % 4 == 0)
//		return 1;
//	if(x%100==0 && x%400!=0)
//		return 0;
//}

//一个函数如果不写返回类型,默认返回int类型
//int is_leap_year(int x)
//{
//	if (x % 4 == 0 && x % 400 != 0)
//		return 1;
//	else if (x % 400 == 0)
//		return 1;
//	else
//		return 0;
//}

错误写法1600能被400整除是闰年但没有输出是因为整除4进了if就不会进else if
//int is_leap_year(int x)
//{
//	if (x % 4 == 0)
//	{
//		if (x % 100 != 0)
//			return 1;
//		else
//			return 0;
//
//	}
//	else if (x % 400 == 0)
//		return 1;
//	else
//		return 0;
//}

最简洁
//int is_leap_year(int x)
//{
//	return ((x % 4 == 0 && x % 100 != 0) || (x % 400 == 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 key,int sz)
//{
//	int left = 0;
//	int right = sz - 1;
//	int mid = (left + right) / 2;
//	while (left<=right)
//	{
//		if (arr[mid] > key)
//		{
//			right = mid - 1;
//		}
//		else if (arr[mid] < key)
//		{
//			left = mid + 1;
//		}
//		else
//		{
//			return mid;
//		}
//	}
//	return -1;//找不到的情况
//}
//
//int main()
//{
//	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
//	int key =7;
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	//找到了就返回找到的位置的下标
//	//找不到返回-1
//
//	int ret=binary_search(arr,key,sz);
//	if (-1 == ret)
//	{
//		printf("找不到\n");
//	}
//	else
//	{
//		printf("找到了,下标是: %d\n",ret);
//	}
//	return 0;
//}

错误写法
//int binary_search(int* arr,int key)
int binary_search(int arr[], int key, int sz)
//{
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	int left = 0;
//	int right = sz - 1;
//	//int mid = (left + right) / 2;
//	while (left <= right)
//	{
//		int mid = (left + right) / 2;
//		if (arr[mid] > key)
//		{
//			right = mid - 1;
//		}
//		else if (arr[mid] < key)
//		{
//			left = mid + 1;
//		}
//		else
//		{
//			return mid;
//		}
//	}
//	return -1;//找不到的情况
//}
//
//int main()
//{
//	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
//	int key = 7;
//	//int sz = sizeof(arr) / sizeof(arr[0]);
//	//找到了就返回找到的位置的下标
//	//找不到返回-1
//	//数组arr传参,实际传递的不是数组本身
//	//仅仅传过去了数组首元素的地址
//	int ret = binary_search(arr, key, sz);
//	if (-1 == ret)
//	{
//		printf("找不到\n");
//	}
//	else
//	{
//		printf("找到了,下标是: %d\n", ret);
//	}
//	return 0;
//}

posted @   morphism  阅读(15)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示