C语言所谓“水仙花数”是指一个三位数,其各位数字的三次方之和等于该数本身,例如:153=1^3+3^3+5^3,故153是水仙花数,求[100,999]之间所有水仙花数之和。 1301
时间: 2024-02-23 12:01:05 浏览: 102
好的,根据你的要求,我可以为你编写一个 C 语言程序来求解 [100, 999] 之间所有水仙花数的和。以下是程序代码:
#include <stdio.h>
int main() {
int sum = 0;
for (int i = 100; i <= 999; i++) {
int a = i / 100; // 百位数
int b = i / 10 % 10; // 十位数
int c = i % 10; // 个位数
if (i == a * a * a + b * b * b + c * c * c) {
sum += i;
}
}
printf("水仙花数之和为:%d\n", sum);
return 0;
}
程序运行结果为:水仙花数之和为:1301。
注意,这个程序只是一个演示,提供了一种解决问题的思路和方法,实际应用中可能会有更高效、更精确的算法和实现方式。
相关问题
做一个是C语言程序:输出所有的水仙花数所谓水仙花数是指一个三位数其各位数字立方和等于该数本身,例如153是水仙花数因为153等于一的三次方加五的三次方加三的三次方
在C语言中,可以编写一个小函数来检查一个三位数是否是水仙花数。首先,我们需要创建一个名为is narcissistic_number
的函数,它接收一个整数作为输入,然后计算并比较各个位的立方和是否与原数相等。以下是实现这个功能的代码:
#include <stdio.h>
// 函数声明
int cube_sum(int num);
// 主函数
int main() {
int start = 100; // 考虑到是三位数,从100开始
int end = 999; // 包含999
for (int i = start; i <= end; i++) {
if (cube_sum(i) == i) { // 检查是否满足水仙花条件
printf("%d 是水仙花数。\n", i);
}
}
return 0;
}
// 计算一个数各位置的立方和
int cube_sum(int num) {
int sum = 0;
int temp = num; // 备份num以便获取个位、十位和百位
while (temp > 0) {
int digit = temp % 10; // 取出个位
sum += digit * digit * digit; // 立方和累加
temp /= 10; // 移除个位
}
return sum;
}
c语言打印出所有的 “水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的 三次方+3的三次方
好的,以下是使用C语言编写的打印出所有的“水仙花数”的程序:
#include <stdio.h>
#include <math.h>
int main() {
int i, a, b, c;
for (i = 100; i < 1000; i++) {
a = i / 100; // 百位数
b = (i % 100) / 10; // 十位数
c = i % 10; // 个位数
if (i == pow(a, 3) + pow(b, 3) + pow(c, 3)) {
printf("%d\n", i);
}
}
return 0;
}
程序使用了循环语句来遍历100到999之间的所有三位数,然后将这个三位数分解成百位、十位和个位数,分别计算它们的立方和是否等于这个数本身,如果是,则输出这个数。注意,需要在程序中包含math.h头文件,以使用pow()函数计算立方。
相关推荐















