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

2024-12-02 03:04:05
推荐回答(4个)
回答1:

好久没弄C语言了,也不知道什么是水仙花数,你的程序应该是少了两个大括号导致的
换成下面的代码试试。没有大括号默认的执行范围是下面一行
也就是说你的循环只是作用在 gw=i%10;
#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);
}
}

回答2:

#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 通过编译 希望能够帮到你

回答3:

你的程序没有结果是因为你的for(i=m;i<=n;i++)这句后面没有{};
你的程序应改为:
#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); }/*缺少大括号*/

}

回答4:

你for语句没有加{},只执行了gw=i%10 这一句话。
还有,水仙花数只是三位数吧。