水仙花数的程序有问题。帮忙指点。谢谢
/*打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。153=1*1*1+5*5*5+3*3*3
例如 153是一个水仙花数,*/
#include <stdio.h>
void main(void)
{
int i,j;
int sum=0;
for (i=100;i<1000;i++) //三位数从100-1000内循环。
for(j=1;j<4;j++)
{
sum+=(i%10)*(i%10)*(i%10);
i=i/10;
} //循环三次,把水仙花数求出。
if (i==sum) //如果水仙花数和本身相等,则打印出。
printf("%d",i);
return;
} for (i=100;i<1000;i++) //三位数从100-1000内循环。
{//加上{
sum = 0;//加上这句
for(j=1;j<4;j++)
{
sum+=(i%10)*(i%10)*(i%10);
i=i/10;
} //循环三次,把水仙花数求出。
if (i==sum) //如果水仙花数和本身相等,则打印出。
printf("%d",i);
改为
for (i=100;i<1000;i++) //三位数从100-1000内循环。
{//加上{
sum= 0;//加上这句
for(j=1;j<4;j++)
{
sum+=(i%10)*(i%10)*(i%10);
i=i/10;
} //循环三次,把水仙花数求出。
if (i==sum) //如果水仙花数和本身相等,则打印出。
printf("%d",i);
}//加上}
#include <stdio.h>
void main()
{
int i,j;
for (i = 100; i <1000; i++)
{
int sum=0;
for (j = 1; j < 4; j++) //循环三次//
{
int h=i%10; //个位数//
int t=(i%100)/10; //十位数//
int k=i/100; //百位数//
sum =h*h*h+t*t*t+k*k*k;
}
if (i == sum)
printf("%d\n", i);
}
} /*打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,
其各位数字立方和等于该数本身。153=1*1*1+5*5*5+3*3*3
例如 153是一个水仙花数,*/
#include <stdio.h>
void main(void)
{
int i,j;
int sum=0;
for (i=100;i<1000;i++) //三位数从100-1000内循环。
for(j=1;j<4;j++)
{
sum+=(i%10)*(i%10)*(i%10);
i=i/10;
} //循环三次,把水仙花数求出。
if (i==sum) //如果水仙花数和本身相等,则打印出。
请问下此处的i 是一层FOR循环的i,还是二层FOR循环缩小 100倍的i.
printf("%d",i);
return; /*打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,
其各位数字立方和等于该数本身。153=1*1*1+5*5*5+3*3*3
例如 153是一个水仙花数,*/
#include <stdio.h>
void main(void)
{
int i,j;
int sum=0;
for (i=100;i<1000;i++) //三位数从100-1000内循环。这里的 i是经过i/10的几个循环后变成了0。i++最后变成了1.再进入循环就不对了。
for(j=1;j<4;j++)
{
sum+=(i%10)*(i%10)*(i%10);
i=i/10;
} //循环三次,把水仙花数求出。
if (i==sum) //如果水仙花数和本身相等,则打印出。
请问下此处的i 是一层FOR循环的i,还是二层FOR循环缩小 100倍的i.
printf("%d",i);
return;
研究了一上午,问题终于找出。但解决这个问题的方法还没找到。
自以为自已写的没问题。但还是一堆的问题。 /*打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,
其各位数字立方和等于该数本身。153=1*1*1+5*5*5+3*3*3
例如 153是一个水仙花数,*/
#include <stdio.h>
void main(void)
{
int i,j;
int t;
int sum=0;
for (i=100;i<1000;i++) //三位数从100-1000内循环。这里的 i是经过i/10的几个循环后变成了0。i++最后变成了1.再进入循环就不对了。
t=i;
for(j=1;j<4;j++)
{
sum+=(t%10)*(t%10)*(t%10);
t=t/10;
} //循环三次,把水仙花数求出。
if (i==sum) //如果水仙花数和本身相等,则打印出。
请问下此处的i 是一层FOR循环的i,还是二层FOR循环缩小 100倍的i.
printf("%d",i);
return;
加了个变量t,问题解决了,谢谢大家。 仰望天上的光 发表于 2015-10-4 22:14
for (i=100;i
我也是这么想的,,不过i的值会改变吗? 啊,这种有问题大家一起讨论的感觉真是好
页:
[1]