C语言数据结构题目描述 键盘输入两个三位正整数n,m(n<m),要求n至m之间所有的水仙花数,每行输出一个。水仙花数即每一位上数字的立方和等于他本身的数,如153是水仙花数。
时间: 2024-10-13 16:16:46 浏览: 18
c语言编程题:从键盘输入一个十进制数,将其转换为二进制、八进制和十六进制数,并同时输出。
4星 · 用户满意度95%
在C语言中,处理这个问题通常涉及到以下几个步骤:
1. 定义数据结构:虽然这里不是直接的数据结构题,但你可以创建一个函数用于检查是否为水仙花数。这个函数可以接收一个整数作为输入,然后计算并比较各个位的立方和。
```c
int is_armstrong(int num);
```
2. 输入范围:使用循环从n开始遍历到m(包括m),对于每个数,调用is_armstrong函数判断它是否为水仙花数。
3. 输出结果:如果找到水仙花数,将其打印出来,并继续下一个数。
4. 辅助函数is_armstrong的实现:使用取模运算分解出每一位,对每位求立方并加起来,然后与原数做比较。
```c
int is_armstrong(int num) {
int original, remainder, sum = 0;
original = num; // Store the original number for cube sum calculation
while (original != 0) {
remainder = original % 10;
sum += pow(remainder, 3); // Calculate cube and add to sum
original /= 10;
}
return sum == num; // Return true if sum equals original number
}
```
完整的代码示例可能会这样:
```c
#include <stdio.h>
#include <math.h>
// ... (以上辅助函数)
int main() {
int n, m;
printf("Enter two three-digit numbers (n < m): ");
scanf("%d %d", &n, &m);
for (int i = n; i <= m; ++i) {
if (is_armstrong(i)) {
printf("%d\n", i);
}
}
return 0;
}
```
阅读全文