请c语言高手帮我看一下这个程序,在执行时总是不行 没反应 补充:水仙花数 例子 153=1*1*1+5*5*5+3*3*3

#include<stdio.h>main(){intdata,a,b,i,sum=0;for(data=100;data<=1000;data++){a=data;fo... #include<stdio.h>
main()
{
int data,a,b,i,sum=0;
for(data=100;data<=1000;data++)
{
a=data;
for(i=0;i<3;i++)
{
if(data<10)
b=data;
else
{
b=data%10;
data=data/10;
}
sum=sum+b*b*b;
}
if(sum!=a) continue;
printf("%4d",a);
}
}
展开
 我来答
zyd427
2012-11-05 · TA获得超过354个赞
知道小有建树答主
回答量:191
采纳率:0%
帮助的人:235万
展开全部
/* 这是你的代码修改后的 */
#include<stdio.h>
int main()
{
int data,a,b,i,sum=0;
for(data=100;data<=1000;data++)
{
a=data;
sum = 0; // 需要每轮初始化sum的值为0
for(i=0;i<3;i++)
{
if(a<10) // 使用a,而不是data
b=a;
else
{
b=a%10; // 这里全部都要使用a,改变循环变量data会无限循环
a=a/10;
}
sum=sum+b*b*b;
}
if(sum!=data) continue;
printf("%4d",data); // 这里应该输出的是满足条件的data,a经过上述a/=10,肯定不符
}
}

/*优化版本*/
#include <stdio.h>
int main()
{
int a, b, c;
for (int i = 100; i < 1000; ++i)
{
a = i/100%10; // 百位
b = i/10%10; // 十位
c = i%10; // 个位
if (a*a*a + b*b*b + c*c*c == i) // 满足条件的
printf("%4d", i);
}
return 0;
}
wanglixin1001
2012-11-05 · TA获得超过4174个赞
知道大有可为答主
回答量:1758
采纳率:80%
帮助的人:895万
展开全部
1. sum需要在每次循环中重新赋值为0.
2. 循环是以data递增为基础的,而data=data/10;这样的语句在循环中修改data的值,使得程序的循环出了问题。
修改后代码如下:
#include<stdio.h>
main()
{
int data,a,b,i,sum;
for(data=100;data<=1000;data++)
{
a=data; //
sum=0; //sum重新赋值为0
for(i=0;i<3;i++)
{
b=a%10;
a=a/10; // a的值除以10
sum=sum+b*b*b;
}
if(sum!=data) continue;
printf("%4d",data);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友ab04d13
2012-11-05 · TA获得超过1126个赞
知道小有建树答主
回答量:904
采纳率:0%
帮助的人:282万
展开全部
水仙花有必要那样写么?
#include <stdio.h>
void main()
{
int ge,shi,bai;//ge表示各位,shi表示十位,bai表示百位,
int a=100;
printf("100-1000之间的水仙花数是:");
while(a<1000)
{
bai=a/100;
shi=a%100/10;
ge=a%10;
if(a==bai*bai*bai+shi*shi*shi+ge*ge*ge)
printf("%d ",a);
a++;
}
printf("\n");
}
追问
呵呵 我只是想知道这样写哪里错了 当然方法很多啦
追答
b的值一直为0
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
钦舞飞杨
2012-11-05
知道答主
回答量:9
采纳率:0%
帮助的人:6.4万
展开全部
data是循环变量(在for中使用)
又做为操作数,在程序中使用,data=data/10;
造成循环次数是确定,程序不能正常退出循环
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
少君同学
2012-11-05 · TA获得超过315个赞
知道小有建树答主
回答量:234
采纳率:0%
帮助的人:202万
展开全部
sum 没有及时清零
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式