目录
四:写一个函数,每调用一次这个函数,就会将 num 的值增加1
🥑🍓Let's go🍓🥑
一:判断100-200内所有的素数
1️⃣素数定义
素数又叫质数(prime number),有无限个。质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数。
2️⃣具体代码
#include <stdio.h>
#include <math.h>
int is_prime(int i)
{
int j = 0;
for (j = 2; j <= sqrt(i); j++)
{
if (i % j == 0)
return 0;
}
return 1;
}
int main()
{
int i = 0;
int count = 0;
for (i = 100; i <= 200; i++)
{
if (1 == is_prime(i))
{
count++;
printf("%d\n", i);
}
}
printf("\ncount=%d\n", count);
return 0;
}
3️⃣运行结果
二:判断1000-2000内所有的闰年
1️⃣解题思路
年份是4的倍数,且不是100的倍数,为闰年。年份是400的倍数为闰年。归结起来就是通常说的:四年一闰;百年不闰,四百年再闰。
2️⃣具体代码
int is_prime(int i)
{
if ((i % 4 == 0) && (i % 100 != 0) || (i % 400 == 0))
{
return 1;
}
else
return 0;
}
#include <stdio.h>
int main()
{
int i = 0;
int count = 0;
for (i = 1000; i <= 2000; i++)
{
int m=is_prime(i);
if (1 == m)
{
count++;
printf("%d ", i);
}
}
printf("\ncount=%d", count);
return 0;
}
3️⃣运行结果
三:写一个函数实现一个整形有序数组的二分查找
1️⃣解题思路
2️⃣具体代码
int Research(int arr[], int k, int sz)
{
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;
}
#include <stdio.h>
int main()
{
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
int sz = sizeof(arr) / sizeof(arr[0]);
int k = 0;
scanf("%d", &k);
int ret = Research(arr, k, sz);
//找到了就返回下标,找不到就返回-1
if (-1 == ret)
{
printf("找不到\n");
}
else
{
printf("找到了,下标为:%d", ret);
}
return 0;
}
3️⃣运行结果
四:写一个函数,每调用一次这个函数,就会将 num 的值增加1
1️⃣具体代码
#include <stdio.h>
int ADD(int n)
{
return 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️⃣运行结果
五:接受一个整数值(无符号),按顺序打印它的每一位
1️⃣具体代码
例如:1234
打印结果为:1 2 3 4
void Print(int n)
{
if (n > 9)//存在判断条件,使n的值无限变小
{
Print(n / 10);
}
printf("%d ", n % 10);
}
#include <stdio.h>
int main()
{
int n;
scanf("%d", &n);
Print(n);
return 0;
}
2️⃣代码分析
3️⃣运行结果
六:编写函数不允许创建临时变量,求字符串的长度。
1️⃣具体代码
int my_strlen(char* ps)
{
if (*ps != '\0')
{
return 1 + my_strlen(ps + 1);
}
else
{
return 0;
}
}
#include <stdio.h>
int main()
{
char ch[10] = "abcdef";
int ret = my_strlen(ch);
printf("%d\n", ret);
return 0;
}
2️⃣代码分析
3️⃣运行结果
七:求n的阶乘(不考虑溢出)
1️⃣具体代码
int Fac(int n)
{
if (n <= 1)
{
return 1;
}
else
{
return n * Fac(n - 1);
}
}
#include <stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
int ret = Fac(n);
printf("%d", ret);
return 0;
}
2️⃣运行结果
八:求第n个斐波那契数(不考虑溢出)
1️⃣斐波那契数定义
序列的前两个数字分别是1和1,每一个连续的数字都是前两个数字的和
例如:1 1 2 3 5 8 13 21...
2️⃣具体代码
方法1:
int Fib(int n)
{
if (n <= 2)
{
return 1;
}
else
{
return Fib(n - 1) + Fib(n - 2);
}
}
#include <stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
int ret = Fib(n);
printf("%d", ret);
return 0;
//利用这种方法计算时间较长
}
方法2:迭代地方法:
int Fib(int n)
{
int a = 1;
int b = 1;
int c = 1;
while (n >= 3)
{
c = a + b;
a = b;
b = c;
n--;
}
return c;
}
#include <stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
int ret = Fib(n);
printf("%d", ret);
return 0;
}
3️⃣运行结果
🌈🌈文章结束☀️☀️
这份博客👍如果对你有帮助,给博主一个免费的点赞以示鼓励欢迎各位🔎点赞👍评论收藏⭐️,谢谢!!!
如果有什么疑问或不同的见解,欢迎评论区留言欧👀