在C语言中输出所有水仙花,并统计水仙花个数,使用while语句?

如题所述

#include <stdio.h>

int main()

{

int i,cnt;

for(i=100,cnt=0;i<1000;++i)

{

if(i==(i%10)*(i%10)*(i%10)+(i/10%10)*(i/10%10)*(i/10%10)+(i/100)*(i/100)*(i/100))

{

printf("%d\n",i);

cnt++;

}

}

printf("%d\n",cnt);

return 0;

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2023-09-27
水仙花数是指一个n位数 (n≥3),它的每个位上的数字的n次幂之和等于它本身。例如,153就是一个水仙花数,因为153=1³+5³+3³。
下面是一个使用C语言和while循环来输出所有的3位数水仙花数,并统计水仙花数的个数的程序:
c复制代码
#include <stdio.h>
#include <math.h>

int main() {
int count = 0; // 用于计数水仙花数的个数
int num = 100; // 从100开始检查,因为它是最小的3位数
while (num <= 999) { // 检查所有的3位数
int sum = 0; // 用于存储各位数的立方和
int temp = num; // 存储当前检查的数,以便在循环中修改它
while (temp > 0) { // 计算各位数的立方和
int digit = temp % 10;
sum += pow(digit, 3);
temp /= 10;
}
if (sum == num) { // 如果立方和等于原数,那么这是一个水仙花数
printf("%d is an Armstrong number\n", num);
count++;
}
num++; // 检查下一个数
}
printf("Total Armstrong numbers: %d\n", count);
return 0;
}
这个程序使用两个嵌套的while循环。外部的while循环从100开始检查所有的3位数,内部的while循环计算一个数的各位数的立方和。如果立方和等于原数,那么这是一个水仙花数,程序会输出这个数,并将水仙花数的个数加1。在检查了所有的3位数之后,程序会输出水仙花数的个数。
相似回答
大家正在搜