用C语言编写一个代码。要求输入m,n两个整数,输出m到n之间的所有水仙花数
时间: 2024-05-10 12:21:04 浏览: 131
C变种水仙花数.zip
水仙花数是指一个n位数,它的每个位上的数字的n次幂之和等于它本身。
例如,153是一个水仙花数,因为$1^3+5^3+3^3=153$。
以下是用C语言编写的程序,输出m到n之间的所有水仙花数。
```c
#include <stdio.h>
#include <math.h>
int main() {
int m, n, i, j, k, num, sum;
printf("请输入m和n(m<n):");
scanf("%d%d", &m, &n);
printf("%d到%d之间的水仙花数有:\n", m, n);
for (i = m; i <= n; i++) {
sum = 0;
num = i; // 保存i的值,以便后面计算位数
k = 0; // k表示i的位数
while (num) {
k++;
num /= 10;
}
num = i;
while (num) {
j = num % 10;
sum += pow(j, k);
num /= 10;
}
if (sum == i) {
printf("%d ", i);
}
}
printf("\n");
return 0;
}
```
程序的思路是,对于每个数i,先计算它的位数k,然后依次计算每一位上的数字的k次幂之和,如果等于i,则说明i是水仙花数。
注意,程序中用到了`pow()`函数来计算幂次。`pow(x, y)`表示计算x的y次幂。该函数需要包含头文件`<math.h>`。
阅读全文