只能用while和if,不能用for,数组啊来写水仙花数

baiye1134 2010-05-30 10:32:09
如题 。。怎么用while与if来写?
...全文
253 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
todhacker111 2011-01-16
  • 打赏
  • 举报
回复
suibian whilevdd
xingqing_224 2010-06-17
  • 打赏
  • 举报
回复

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
int i,a,b,c;
for(i=100;i<=999;i++)
{
a = i/100;
b = (i/10)%10;
c = i - 100*a - 10*b;
if(i == a*a*a + b*b*b + c*c*c)
{
printf("%d\n",i);
}
}
system("pause");
return 0;
}

此代码是求0到999之内的数,想改其他数只改一下for循环的数就行啦
zhengjinghaohao 2010-06-17
  • 打赏
  • 举报
回复
#include <stdio.h>
main()
{int i ,j ,k,n;
printf("水仙花数:");
for(n=100;n<1000;n++)
{i=n/100//百位
j=n/10-i*10//十位
k=n%10;
if (n==i*i*i+j*j*j+k*K*k)
printf("%d",n);

}
printf("\n");
}
liutengfeigo 2010-06-17
  • 打赏
  • 举报
回复
。。。。~!~
followingturing 2010-06-17
  • 打赏
  • 举报
回复
//逻辑上是一样的啊~ 换一下语句:
#include <stdio.h>
int main(void)
{
int n=100,b,s,g;
printf("水仙花数为:");
while(n<1000)
{
b = n/100;
s = n/10 - b*10;
g = n%10;
if(n == b*b*b + s*s*s + g*g*g)
printf("%d ",n);
n++;
}
printf("\n");
getchar();
getchar();
return 0;
}


stein42 2010-05-31
  • 打赏
  • 举报
回复
把for(int i=0;i<n;i++){}
改成int i=0;while(i<n){i++;}
不就ok了。
East271536394 2010-05-30
  • 打赏
  • 举报
回复

看看这个:
#include <stdio.h>

int main(void)
{
int n=100,b,s,g; // b为百位数、s为十位数、g为个位数

printf("水仙花数为:");
while(n<1000)
{
b = n/100;
s = n/10 - b*10;
g = n%10;
if(n == b*b*b + s*s*s + g*g*g)
printf("%d ",n);
n++;
}
printf("\n");

return 0;
}

chaoliu1024 2010-05-30
  • 打赏
  • 举报
回复
#include <stdio.h>

int main(void)
{
int n=100,b,s,g; // b为百位数、s为十位数、g为个位数

printf("水仙花数为:");
while(n<1000)
{
b = n/100;
s = n/10 - b*10;
g = n%10;
if(n == b*b*b + s*s*s + g*g*g)
printf("%d ",n);
n++;
}
printf("\n");

return 0;
}
东莞某某某 2010-05-30
  • 打赏
  • 举报
回复
#include <math.h>
#include <stdio.h>

int main()
{
int start,end;
printf("The list is: ");

for(start=100,end=99999;start<=end;start++)
{
int length=0;
int temp=start;
int sum=0;

while(temp!=0)
{
temp=temp/10;
++length;
}

switch(length)
{
case 3:
for(temp=start ; temp!=0 ;temp/=10 )
{
sum+=(int)pow( (temp-(temp/10)*10) ,3);
}
break;
case 4:
for(temp=start; temp!=0; temp/=10)
{
sum+=(int)pow( (temp-(temp/10)*10) ,4);
}
break;
case 5:
for(temp=start; temp!=0 ; temp/=10)
{
sum+=(int)pow( 2 ,5);
}
break;
default : printf("Error");
break;

}
if(sum==start)
{

printf("%d ",start);

}
}
printf("\n");
return 0;
}



上面是求3--5位水仙花。for换while,遍历数组你自己改吧
wade_2003 2010-05-30
  • 打赏
  • 举报
回复


if(a>0&&a<9)

把for里面的语句写成这样

69,381

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧