#include <stdio.h> #include <math.h> // 判断一个数是否为水仙花数 int isNarcissistic(int num) { int original = num; int sum = 0; while (num > 0) { int digit = num % 10; sum += pow(digit, 3); num /= 10; } return (sum == original); } int main() { int M, N; scanf("%d %d", &M, &N); // 判断输入是否符合要求 if (M < 100 || M > 999 || N < 100 || N > 999 || M > N) { printf("Invalid Value.\n"); return 0; } // 输出区间内的水仙花数 int found = 0; for (int i = M; i <= N; i++) { if (isNarcissistic(i)) { printf("%d\n", i); found = 1; } } // 若没有水仙花数,则输出无 if (!found) { printf("无\n"); } return 0; }解析一下这个代码
时间: 2024-04-18 12:31:58 浏览: 195
JS判断一个数是否是水仙花数
这段代码实现了题目要求的功能。下面是代码的解析:
1. `isNarcissistic` 函数用于判断一个数是否为水仙花数。它通过取每个位上的数字的立方和,并将结果与原始数进行比较,判断是否相等。
2. `main` 函数是程序的入口函数。首先通过 `scanf` 函数获取输入的两个整数 M 和 N。
3. 然后,通过条件判断语句检查输入是否符合要求。如果不符合要求,即 M 小于 100 或大于 999,或者 N 小于 100 或大于 999,或者 M 大于 N,则输出 "Invalid Value." 并结束程序。
4. 如果输入符合要求,则使用一个循环来遍历从 M 到 N 的每个数。对于每个数,调用 `isNarcissistic` 函数来判断是否为水仙花数。如果是水仙花数,则输出该数,并将 `found` 设置为 1 表示找到了水仙花数。
5. 循环结束后,通过判断 `found` 的值,如果没有找到水仙花数,则输出 "无"。
这样,程序就完成了对给定区间内的三位水仙花数的查找和输出。
阅读全文