用C语言写1.若干小朋友站成一个圈玩数数游戏,从1开始大声数数,要求小朋友数的数不能含有数字3,且不能是3的倍数,直到100为止。请编写程序,使之能模拟打印出小朋友应该正确喊出的所有的数。
时间: 2024-10-26 07:16:41 浏览: 41
在C语言中,我们可以使用递归的方式来编写这个程序。首先,我们需要创建一个函数,它会检查当前的数是否符合条件,然后递归地向前移动到下一个数。下面是一个简单的示例:
```c
#include <stdio.h>
// 检查数是否包含3或能被3整除
int is_valid(int num) {
if (num == 3 || num % 3 == 0)
return 0;
for (int i = 0; num > 3 && i < 10; ++i) { // 只考虑前10位,避免无限循环
if (num % (10 + i) == 0)
return 0;
}
return 1;
}
// 递归函数,模拟数数过程
void count_numbers(int start, int end) {
if (start <= end) {
printf("%d ", start); // 输出有效数字
if (is_valid(start + 1)) // 调用自身并前进一位
count_numbers(start + 1, end);
}
}
int main() {
count_numbers(1, 100); // 开始从1开始数
return 0;
}
```
在这个程序中,`is_valid()` 函数用于检查一个数是否满足条件,而 `count_numbers()` 通过递归遍历1到100之间的所有数字,并只输出那些符合条件的数。
阅读全文