打印100到1000所有水仙花数
#include<stdio.h>#include<stdlib.h>
main()
{
int i,sum=0,temp=0;
for (i = 100; i < 1000; i++)
{
int init = i;
while (i!=0)
{
temp = i % 10;
sum += temp * temp * temp;
i = i / 10;
}
if (init ==sum)
{
printf("%d\n", init);
}
}
system("pause");
return 0;
}
66666666 liangqing77 发表于 2020-12-29 15:40
66666666
大佬们 帮我看看 我这个代码为啥不对啊
定义喜剧 发表于 2020-12-29 16:12
大佬们 帮我看看 我这个代码为啥不对啊
temp = i % 10; //temp为个位数
sum += temp * temp * temp; //??什么鬼?
i = i / 10; //i为十位数
这几行错了。
改正为:
int n,m,k;
n=i%10;//n为个位数
m=i/100;//m为百位数
k=(i-m*100)/10//k为十位数
sum+=n*n*n+m*m*m+k*k*k;
推荐视频:https://www.bilibili.com/video/BV18J411k7w2 sum没有清零,在第二次循环是sum还是上一次的值,必须每次归零 本帖最后由 风过无痕1989 于 2020-12-30 00:47 编辑
#include<stdio.h>
int main()
{
int m,bai,shi,ge;
for (m = 100;m < 1000;m++)
{
bai = m / 100;
shi = (m - bai * 100) / 10;
ge = m % 10;
if(m == bai * bai * bai + shi * shi * shi + ge * ge * ge)
{
printf("%d\n",m);
}
}
} 本帖最后由 风过无痕1989 于 2020-12-30 01:04 编辑
这个程序才是你的程序的初衷吧:
#include<stdio.h>
#include<stdlib.h>
main()
{
int i, sum = 0, temp = 0;
for (i = 100; i < 1000; i++)
{
int init = i; // 不能用循环变量去运算,换用 init 去运算
while (init != 0)
{
temp = init % 10;
sum += temp * temp * temp;
init = init / 10;
}
if (i == sum) // 根据水仙花数的定义,其立方和等于该数
{
printf("%d\n", i);
}
sum = 0; // 一个数求完后,其立方和应初始化,为下一个数作准备
}
system("pause");
return 0;
}
153
370
371
407
请按任意键继续 。 。 。
页:
[1]