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 这一句话。
还有,水仙花数只是三位数吧。

VC编写程序:输入两个正整数m和n(m>=1,n<=1000),输出m~n之间的所有水仙花...
if(an) printf("%d是水仙花数。\\n",low);if(is) printf("%d的各位数字之和与其自身相等。\\n",low);++low;} return 0;}

...m,n(m大于等于1,n小于等于1000),输出m到n之间的水仙花数。_百度知 ...
include <stdio.h> #include <stdlib.h>void main() { int i,j,k,t; int m,n; scanf("%d%d",&m,&n); if(m>n) { t=m; m=n; n=t; } for(t=m;t<=n;t++) { i=t\/100;\/*分解出百位*\/ j=t\/10%10;\/*分解出十位*\/ k...

C语言。输入2个正整数m和n(m>=1,n<=1000),输入m和n之间的所有水仙花数...
printf("the number is:%d\\n",i);}

输入两个正整数m和n,(m>=1,n<=1000), 输出m~n之间所有满足各位数字的...
res=1;else res=0;return res;} 这个函数用于判断是否是水仙花数(也就是你说的各位数字立方和等于本身)你这个程序有一个bug,就是没有判断用户的输入是否为合法的。对用户输入的m n的值范围没有进行判断。可进行相应的修改,使程序更完美。

使用函数输出水仙花数:输入两个正整数m和n(1<=m,n<=1000),输出m~n之 ...
int fun(int a){ int b,c,s;b=a; s=0; while ( b ) { c=b%10; b\/=10; s+=c*c*c; } if ( s==a ) return 1; else return 0;} void main(){ int m,n,i;scanf("%d%d",&m,&n);for ( i=m;i<=n;i++ ) if ( fun(i) ) printf("%d ",i);printf("\\n...

输入2个正整数m和n,输出m到n中所有水仙花数?用C语言怎么编
1.水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3+ 3^3 = 153)include <stdio.h>bool IsDaffodil(int num){ if (num < 100) return false; int sum = 0, n = num, m; while (n) { m = n % 1...

用c语言写出在10000内的所有水仙花数
下面是程序运行结果 下面是实现代码,您可以参考一下:include <stdio.h>int m3(int n){return (n*n*n);}int main(){int n,m;int sum;for(n=1;n<10000;n++){sum = 0;m = n;while(m){sum+= m3(m%10);m=m\/10;}if(sum==n)printf("number: %d\\n", n);}} ...

C语言求教--输入两个正整数m和n,输出之间的所有满足各位立方和等于本身...
sum=sum+num%10*num%10*num%10;改成 sum=sum+(num%10)*(num%10)*(num%10);运算符 %和*是同级的,需要加括号

C语言1~10000之间所有水仙花数
i<10000;i++){\/\/遍历1~10000部分数据n=strlen(itoa(i,a,10));\/\/转为数字字符串并计算长度(十进制数位数)nfor(m=j=0;a[j];j++){\/\/分离每一位数字for(t=1,k=0;k++<n;t*=a[j]-'0');\/\/求每位数字的n次方m+=t;\/\/求各位数字n次方的和m}if(m==i){\/\/判断是否为"...

水仙花数的c语言编程。
所谓的“水仙花数”是指一个三位数其各位数字的立方和等于该数本身,例如153是“水仙花数”,因为:153 = 1^3 + 5^3+ 3^3 。下面是完整的C语言编程代码:运行结果:result is:153 370 371 407

相似回答