c语言输入两个三位数m和n,输出m和n之间的水仙花数。水仙花数是一个3位数,各位数字的立方和等于该数本身
时间: 2024-05-25 16:18:09 浏览: 128
#include <stdio.h>
int main()
{
int m, n, i, j, k, sum;
printf("请输入两个三位数m和n(m<n):");
scanf("%d%d", &m, &n);
for(i=m; i<=n; i++)
{
j = i/100; //百位数
k = i%10; //个位数
sum = j*j*j + (i-j*100-k)/10*(i-j*100-k)/10*(i-j*100-k)/10 + k*k*k; //立方和
if(sum == i) //是水仙花数
{
printf("%d是水仙花数\n", i);
}
}
return 0;
}
相关问题
输入一个三位数到五位数之间的自然数是否为水仙花数,用c语言编写此程序
在C语言中,我们可以创建一个函数来判断一个给定的数是否是水仙花数。这里是一个简单的示例:
```c
#include <stdio.h>
#include <stdbool.h>
// 函数来检查一个数是否是水仙花数
bool isWaterLily(int num) {
int digits[5]; // 存储每一位的值
int sum = 0;
// 分解出每一位并计算它们的立方和
while (num > 0) {
digits[4] = num % 10;
num /= 10;
sum += digits[4]*digits[4]*digits[4];
}
// 检查立方和是否等于原始数字
return sum == num;
}
int main() {
int input;
printf("请输入一个三位数到五位数之间的自然数: ");
scanf("%d", &input);
if (isWaterLily(input)) {
printf("%d 是水仙花数\n", input);
} else {
printf("%d 不是水仙花数\n", input);
}
return 0;
}
```
在这个程序中,我们首先将输入的数字分解成一个个数字存储在数组`digits`中,然后计算每个位数的立方并累加。最后,比较这个累加和是否与原始输入的数相同。如果是,则返回`true`表示它是水仙花数,反之则不是。
输出水仙花数,输入一个正整数n,输出所有的n位水仙花数 c语言
输出n位水仙花数是指一个n位数,其各位数字立方之和等于它本身。例如,153是一个三位水仙花数,因为1^3 + 5^3 + 3^3 = 153。
在C语言中,你可以使用循环结构遍历指定范围内的所有n位数,并计算它们的立方和来判断是否是水仙花数。以下是一个简单的示例程序:
```c
#include <stdio.h>
#include <stdbool.h>
// 判断是否是水仙花数的函数
bool is_armstrong_number(int num, int n) {
int sum = 0, temp = num;
// 取反向每一位并求和
while (temp > 0) {
int digit = temp % 10;
sum += digit * digit * digit; // 立方和
temp /= 10;
}
// 如果原数等于立方和,则是水仙花数
return num == sum;
}
// 主函数
int main() {
int n;
printf("请输入位数(n): ");
scanf("%d", &n);
for (int i = 100; ; i++) { // 从100开始,防止误判单位数和两位数
if (i >= pow(10, n)) break; // 达到n位就停止
if (is_armstrong_number(i, n)) {
printf("%d ", i); // 输出水仙花数
}
}
return 0;
}
```
阅读全文
相关推荐
















