用c语言编写程序,输入一个3位正整数,输出的范围在【100,x】的不能被3整除的非水仙花数,每行输出10个数字。水仙花数指每个位上的数字的3次幂之和等于它本身的3位数
时间: 2024-10-23 08:14:27 浏览: 16
在 C 语言中,你可以编写如下的程序来完成这个任务。首先,我们需要定义几个函数:判断是否为水仙花数、判断是否能被3整除以及输出序列。以下是整个程序的大致结构:
```c
#include <stdio.h>
#include <stdbool.h>
// 判断是否为水仙花数
bool is_armstrong_number(int num) {
int sum = 0, original_num, remainder;
original_num = num;
while (original_num != 0) {
remainder = original_num % 10;
sum += remainder * remainder * remainder;
original_num /= 10;
}
return sum == num;
}
// 判断是否能被3整除
bool is_divisible_by_3(int num) {
return num % 3 == 0;
}
// 输出10个符合条件的数字
void print_numbers_in_range(int start, int end) {
for (int i = start; i <= end && i % 10 != 0; i++) {
if (!is_armstrong_number(i) && !is_divisible_by_3(i)) {
printf("%d ", i);
if (--count == 9) { // 当计数器达到9时换行
printf("\n");
count = 0;
}
} else {
++count; // 如果是3的倍数或水仙花数,跳过并增加计数
}
}
}
int main() {
int input;
printf("请输入一个3位正整数: ");
scanf("%d", &input);
int lower_bound = 100;
int upper_bound = input;
print_numbers_in_range(lower_bound, upper_bound);
return 0;
}
```
在这个程序中,用户输入一个3位正整数作为上限,然后从100开始到这个上限,按每行打印10个符合条件(不是水仙花数且不能被3整除)的数字。
阅读全文