#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
//------------------------------------打印1000-2000年之间的闰年---------------------------------------------------
//闰年的判断规则有两个
//1.能被4整除,但是不能被100整除
//2.能被400整除也是闰年
/*
int main()
{
int year = 0;
for (year = 1000; year <= 2000; year++)
{
判断每次产生的 year 是不是闰年-------------------方法1
//if (year%4==0) // 规则 1
//{
// if (year % 100 != 0)
// {
// printf("%d ", year);
// }
//}
//
//if (year % 400 == 0)// 规则 2
//{
// printf("%d ", year);
//}
//判断每次产生的 year 是不是闰年-------------------方法2 (简化)
if (( (year % 4 == 0) && (year % 100 != 0) ) || (year % 400 == 0))
{
printf("%d ", year);
}
}
return 0;
}
*/
//------------------------------------2. 写一个 函数 ,判断一年是不是闰年----------------------------------------
/*
int is_leap_year(int y) // 是闰年返回1,不是闰年返回0
{
if (((y % 4 == 0) && (y % 100 != 0)) || (y % 400 == 0))
{
return 1;
}
return 0;
}
int main()
{
int year = 0;
int count = 0;
for (year = 1000; year <= 2000; year++)
{
//判断每次产生的 year 是不是闰年
// 是闰年返回 1
//不是闰年返回 0
if (is_leap_year(year))
{
count++;
printf("%d ", year);
}
}
printf("\ncount=%d", count);
return 0;
}
*/
//---------------------------3.写一个函数,实现一个整型有序数组的二分查找-----------------------------------
//数组传参实际上传递的是数组首元素的地址
//这里 arr[] 其实是个指针变量,存放的是数组的首元素地址
//因此不能把 数组元素个数的计算 放到函数里
/*
int binary_search(int arr[], int k, int sz) // 形参和实参的命名可以相同可以不同
{
// int sz = sizeof(arr) / sizeof(arr[0]); // 不能把 数组元素个数的计算 放到函数里 ,error,只能计算出1或者2
int left = 0;
int right = sz;
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()
{
int arr[] = { 1,2,3,4,5,6,7,8,910 };
int k = 0;
scanf("%d", &k);
int sz = sizeof(arr) / sizeof(arr[0]); //求数组中元素个数
//先想好函数怎么用,再尝试
//如果找到了,返回下标,
//如果找不到,返回 -1
int ret = binary_search(arr, k, sz);// 调用函数 进行 二分查找
if (ret == -1)
{
printf("找不到\n");
}
else
{
printf("找到了,下标为:%d\n", ret);
}
return 0;
}
*/
//--------------------------------------------------------------------------------------布尔类型 bool
// 用来表示真假的变量
// 判断一个数是不是素数
//是素数,返回1
//不是素数,返回0
#include <stdbool.h>
#include <math.h>
/*
bool is_prime(int n)
{
int j = 0;
for (j = 2; j <= sqrt(n); j++)
{
if (n % j == 0)
{
return false;
}
}
return true;
}
int main()
{
int i = 0;
int count = 0;
for (i = 101; i <= 200; i += 2) //排除偶数
{
if (is_prime(i)) //调用函数 如果 is_prime(i) 为真,打印
{
count++;
printf("%d ", i);
}
}
printf("\ncount=%d\n", count);
return 0;
}
*/
//-----------------------------4.写一个函数,每调用一次这个函数,就会将 num 的值增加1------------------
void ADD(int* p)
{
(*p)++;
}
int Add(int n)
{
return n+1;
//return n++; // 先返回,后++了,错误
//return ++n; // 先++,后返回,可以
}
int main()
{
int num = 0;
//-------------------------------------方法一
//ADD(&num);
//printf("%d\n", num);// 输出1
//ADD(&num);
//printf("%d\n", num);// 输出 2
//-------------------------------------方法二
num = Add(num);
printf("%d\n", num);// 输出1
num = Add(num);
printf("%d\n", num);// 输出2
return 0;
}