//写一个函数判断一年是不是闰年
//打印1000~2000年之间的闰年
//闰年判断的规则
//1.能被4整除,并且不能被100整除是闰年
//2.能被400整除是闰年
1.使用普通的for和if语句写的
#include <stdio.h>
int main()
{
int x = 0;
int y = 0;
for (x = 1000; x <= 2000; x++)
{
if (x % 4 == 0)
{
if (x % 100 != 0)
{
printf("%d ", x);
}
if (x % 400 == 0)
{
printf("%d ", x);
}
}
}
return 0;
}
2.简化代码之后的
int main()
{
int year = 0;
for (year = 1000; year <= 2000; year++)
if
printf("%d ", year);
return 0;
}
3.使用自定义leap_year函数写的
int leap_year(int y)
{
if (((y % 4 == 0) && (y % 100 != 0)) || (y % 400 == 0))
return 1;
else
return 0;
}
//运用函数判断闰年
//是闰年返回1
//不是闰年返回0
int main()
{
int year = 0;
for (year = 1000; year <= 2000; year++)
{
if (leap_year(year))
printf("%d ", year);
}
return 0;
}
//自定义函数时,
//函数的功能需要足够单一,
//不要和别人有什么关系,
//也就是高内聚,低耦合
4.用函数实现二分查找
//写一个函数,实现一个整形有序数组的二分查找
//在函数内部,数组传参实际上传递的是数组首元素的地址,而不是整个数组
int binary_search(int arr[], int key, int sz)
{
int left = 0;
int right = sz - 1;
while (left <= right)
{
int mid = left + (right - left) / 2;
//在这里也可以这么表示int mid = (left + right) / 2
if (arr[mid] < key)
left = mid + 1;
else if (arr[mid] > key)
right = mid - 1;
else
return mid;//找到了,返回下标
}
return -1;//找不到
}
//找到了,返回下标
//找不到,返回-1,不能返回0,因为数组中下标为0的数值已经有了
int main()
{
int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
int sz = sizeof(arr) / sizeof(arr[0]);
int key = 7;
int ret = binary_search(arr, key, sz);
if (ret == -1)
{
printf("找不到\n");
}
else
{
printf("找到了,下标为:%d", ret);
}
return 0;
}