#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 09:31:58 浏览: 26
这段代码实现了题目要求的功能。下面是代码的解析:
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` 的值,如果没有找到水仙花数,则输出 "无"。
这样,程序就完成了对给定区间内的三位水仙花数的查找和输出。
相关问题
用c语言编写函数,完成对一个数是否为水仙花数的判定
好的,我可以为您编写一个判断水仙花数的函数,代码如下:
```c
#include <stdio.h>
#include <math.h>
int isNarcissistic(int num) {
int temp = num, sum = 0, count = 0;
while (temp) {
count++;
temp /= 10;
}
temp = num;
while (temp) {
sum += pow(temp % 10, count);
temp /= 10;
}
return sum == num;
}
int main() {
int num;
printf("请输入一个正整数:");
scanf("%d", &num);
if (isNarcissistic(num)) {
printf("%d是水仙花数\n", num);
} else {
printf("%d不是水仙花数\n", num);
}
return 0;
}
```
函数 isNarcissistic 接受一个整数 num 作为参数,返回一个布尔值,表示该数是否为水仙花数。主函数中通过读取用户输入的整数,调用 isNarcissistic 函数进行判断并输出结果。
C语言函数法求1000以内的全部水仙花数并判断求出的水仙花数是否为素数
以下是C语言函数法求1000以内的全部水仙花数并判断求出的水仙花数是否为素数的示例代码:
```c
#include <stdio.h>
#include <math.h>
// 判断是否为水仙花数
int isNarcissistic(int num) {
int sum = 0;
int digit = 0;
int temp = num;
while (temp > 0) {
digit = temp % 10;
sum += pow(digit, 3);
temp /= 10;
}
return sum == num;
}
// 判断是否为素数
int isPrime(int num) {
if (num < 2) {
return 0;
}
for (int i = 2; i <= sqrt(num); i++) {
if (num % i == 0) {
return 0;
}
}
return 1;
}
int main() {
// 求1000以内的水仙花数并判断是否为素数
for (int i = 100; i < 1000; i++) {
if (isNarcissistic(i)) {
printf("%d is a narcissistic number. ", i);
if (isPrime(i)) {
printf("And it is also a prime number.\n");
} else {
printf("But it is not a prime number.\n");
}
}
}
return 0;
}
```
输出结果如下:
```
153 is a narcissistic number. But it is not a prime number.
370 is a narcissistic number. But it is not a prime number.
371 is a narcissistic number. But it is not a prime number.
407 is a narcissistic number. But it is not a prime number.
```