1.打印100-200之间的素数
思路:100-200内穷举,判断函数中从(2-根号n)之间穷举是否能整除n
#include//还用is_prime函数判断是否为素数 int is_prime(int n) { int m = 0; //若n可以写成a*b形式 ,则ab中至少有一个数小于或等于根号n for (m = 2; m <= sqrt(n); m++) { if (n % m == 0) { return 0; } } return 1; } int main() { int i = 0; int count = 0; //素数一定是奇数,所以只尝试奇数即可 for (i = 101; i <= 200; i += 2) { //判断i是否为素数 if (is_prime(i) == 1) { count++; printf("%d ", i); } } printf("n%dn", count); return 0; }
2.打印1000-2000年之间的闰年
闰年判定规则:1.能被4整除但不能被100整除 2.或者能被400整除
int is_leap_year(int a)
{
return (a % 4 == 0 && a % 100 != 0 || a % 400 == 0);
}
int main()
{
int i = 0;
for (i = 1000; i <= 2000; i++)
{
//判断是否是闰年
if (is_leap_year(i) == 1)
{
printf("%d ", i);
}
}
return 0;
}
3.整型有序数组的二分查找
注意:求数组元素个数只能在主函数中先求好,因为数组传参时传过去的是数组第一个元素的地址,不是整个数组中的元素
int binary_search(int arr[], int k, int s)//形参和实参可以同名
{
int left = 0;
int right = s - 1;
while(left <= right)
{
int mid = (left + right) / 2;
if (arr[mid] > k)
{
right = mid - 1;
}
else if (arr[mid] < k)
{
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]);
int ret = binary_search(arr, key, sz);
if (-1 == ret)
{
printf("找不到n");
}
else
{
printf("找到了,下标为%dn", ret);
}
return 0;
}
4.写一个函数,每调用一次这个函数,num的值增加1
要修改主函数中变量的值,自定义函数中要用取址调用
void ADD(int* p)
{
(*p)++;
}
int main()
{
int num = 0;
ADD(&num);
printf("%d ", num);
ADD(&num);
printf("%d ", num);
ADD(&num);
printf("%d ", num);
return 0;
}



