目录
1.写一个函数可以判断一个数是不是素数,利用上面实现的函数打印100到200之间的素数。
4.写一个函数,每调用一次这个函数,就会将num的值增加1.
一些小练习,一起来做做吧ʕ̯•͡˔•̯᷅ʔ ᐝ
1.写一个函数可以判断一个数是不是素数,利用上面实现的函数打印100到200之间的素数。
代码参考:
#include<stdio.h>
#include<math.h>
int is_pri(int i)
{
int j = 1;
for (j = 2; j <= sqrt(i); j++)//用了sqrt( ),这样写会把范围缩小很多
{ //如果i在开平方之前都找不到一个因子整除,那么在i开平方后也找不到
if (i % j == 0)
{
return 0;
}
}
return 1;
}
int main()
{
int i = 0;
scanf("%d", &i);
int r = is_pri(i);
if (1 == r)
{
printf("%d是素数 ", i);
}
else
{
printf("%d不是素数", i);
}
return 0;
}
2.写一个函数判断一年是不是闰年.
代码参考:
//实现函数判断year是不是润年
//闰年判断方法有两种:
//1.能被4整除但不能被100整除
//2.能被400整除
#include<stdio.h>
is_leap_year(int year)
{
if (((year % 4 == 0) && (year %100 != 0)) || (year %400 == 0))
return 1;
else
{
return 0;
}
}
int main()
{
int year = 0;
scanf("%d", &year);
int r = is_leap_year(year);
if (r == 1)
{
printf("是闰年");
}
else
{
printf("不是闰年");
}
return 0;
}
3.写一个函数,实现一个整形有序数组的二分查找.
代码参考:
//写一个函数,实现一个整形有序数组的二分查找.
#include<stdio.h>
int binary_search(char* arr[], int sz, int k)//数组传参本质上是把首元素地址传过去了
{ //所以我们应该用指针类型来接收
int left = 0;
int right = sz - 1;
while (left <= right)
{
int mid = left + (right - left) / 2;//这样写是为了防止溢出
if (arr[mid] > k)
{
right = mid - 1;
}
else if (arr[mid] < k)
{
left = mid + 1;
}
else
{
return mid;
break;
}
}
if (left > right)
{
return 0;
}
}
int main()
{
int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
int sz = sizeof(arr) / sizeof(arr[0]);//计算数组有多少个元素
int k = 7;//假设我们查找的是9的下标
int r = binary_search(arr, sz, k);//不能写成arr[],arr是数组名就是地址,这里是传地址过去
if (r == 0)
{
printf("找不到");
}
else
{
printf("找到了,下标是%d\n", r);
}
return 0;
}
注意:这里不能把sz放在函数binary_search中求,binary_search中的int arr[ ]不是数组,arr是个指针变量。
如果在函数中求int sz = sizeof(arr) / sizeof(arr[0])结果应该为1,所以是不可行的,在函数内部计算一个函数参数部分的数组的元素个数是不靠谱的。
4.写一个函数,每调用一次这个函数,就会将num的值增加1.
代码参考1:
//写一个函数,每调用一次这个函数,就会将num的值增加1.
#include<stdio.h>
int add(int n)
{
return n + 1;//这里不能写成n++,因为它是先返回再+1;
}
int main()
{
int num = 0;
num = add(num);
printf("%d\n", num);
num = add(num);
printf("%d\n", num);
num = add(num);
printf("%d\n", num);
return 0;
}
代码参考2:
#include<stdio.h>
void add(int* n)
{
(*n)++;
}
int main()
{
int num = 0;
add(&num);
printf("%d\n", num);
add(&num);
printf("%d\n", num);
return 0;
}
以上就是初阶C语言函数的练习,当然了,每个题的解法都有很多种,我所提供的只是其中的一种,能得出正确结果的都是答案ʕง•ᴥ•ʔง!