c语言 输入两个正整数m和n(m>=1,n<10000),输出m到n之间的所有水仙花数。我编写的输不出来呀,求解~

#include<stdio.h>
void main()
{
int m,n,gw,sw,bw,i;
printf("输入两个正整数:");
scanf("%d%d",&m,&n);
for(i=m;i<=n;i++)
gw=i%10;
bw=i/100;
sw=i%100/10;
if(i==gw*gw*gw+sw*sw*sw+bw*bw*bw)
printf("%d\n",i);
}

好久没弄C语言了,也不知道什么是水仙花数,你的程序应该是少了两个大括号导致的
换成下面的代码试试。没有大括号默认的执行范围是下面一行
也就是说你的循环只是作用在 gw=i%10;
#include<stdio.h>
void main()
{
int m,n,gw,sw,bw,i;
printf("输入两个正整数:");
scanf("%d%d",&m,&n);
for(i=m;i<=n;i++)
{
gw=i%10;
bw=i/100;
sw=i%100/10;
if(i==gw*gw*gw+sw*sw*sw+bw*bw*bw)
printf("%d\n",i);
}
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-04-08
#include "stdio.h"
#include "conio.h"
main()
{
int i,j,k,n;
printf("'water flower'number is:");
for(n=100;n<1000;n++)
{
i=n/100;/*分解出百位*/
j=n/10%10;/*分解出十位*/
k=n%10;/*分解出个位*/
if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)
printf("%-5d",n);
}
getch();
}

TC 通过编译 希望能够帮到你追问

呃,我想知道输出m到n之间的所有水仙花数。为什么我写的程序没有输出结果呢?

追答

#include
void main()
{
int m,n,gw,sw,bw,i;
printf("输入两个正整数:");
scanf("%d%d",&m,&n);
for(i=m;i<=n;i++)
{
gw=i%10;
bw=i/100;
sw=i%100/10;
if(i==gw*gw*gw+sw*sw*sw+bw*bw*bw)
printf("%d\n",i);
}
}

for循环 不只一条语句 所以括号不能省略的

本回答被网友采纳
第2个回答  2011-04-08
你的程序没有结果是因为你的for(i=m;i<=n;i++)这句后面没有{};
你的程序应改为:
#include<stdio.h>
void main()
{
int m,n,gw,sw,bw,i;
printf("输入两个正整数:");
scanf("%d%d",&m,&n);
for(i=m;i<=n;i++) { /*缺少大括号*/
gw=i%10;
bw=i/100;
sw=i%100/10;
if(i==gw*gw*gw+sw*sw*sw+bw*bw*bw)
printf("%d\n",i); }/*缺少大括号*/

}
第3个回答  2011-04-08
你for语句没有加{},只执行了gw=i%10 这一句话。
还有,水仙花数只是三位数吧。
相似回答