一、用函数打印闰年
#include<stdio.h>
//判断闰年:能被4整除。但不能被100整除是闰年;
//能被400整除的是闰年
int is_leap_year(int y)
{
if(((y%4==0)&&(y%100!=0)||(y % 400 == 0)))
return 1;
else
return 0;
}
int main()
{
int year = 0;
for(year = 1000;year<=2000;year++)
{
if(is_leap_year(year))
{
printf("%d ",year);
}
}
return 0;
}
注意函数应高内聚,低耦合。
二、用函数实现整形有序数组的二分查找
#include<stdio.h>
int binary_search(int arr[],int k,int sz)//形参arr[]看上去是数组,实际上是指针
{
int left = 0;
int right = sz - 1;
while(left <= right)
{
int mid = left + (right-left) / 2;
if(arr[mid] < k)
{
left = mid + 1;
}
else if(arr[mid] > k)
{
right = mid -1;
}
else
{
return mid;
}
}
return -1;
}
int main()
{
int arr[] = {1,2,3,4,5,6,7,8,9,10};
int k = 7;
int ret;
int sz;
sz = sizeof(arr)/sizeof(arr[0]);
ret = binary_search(arr,k,sz);
if(ret == -1)
{
printf("找不到\n");
}
else
{
printf("找到了,下标是:%d\n",ret);
}
return 0;
}
注意:1.return的级别是要比break要高的,在函数里跳出优先使用return;
2.数组传参实际上传递的是数组首元素的地址,而不是整个数组,所以在函数内部计算函数参数部分的数组的元素个数是不行的
小例子:
#include<stdio.h>
void Add(int *p)
{
(*p)++;
}
int main()
{
int num = 0;
Add(&num);
printf("%d\n",num);
Add(&num);
printf("%d\n",num);
return 0;
}
三、bool类型true,false
头文件<stdbool.h>