这个C++程序是死循环,怎么改啊?考试求解答!急!!!

//program2.cpp:Definestheentrypointfortheconsoleapplication.//#include"stdafx.h"voidm... // program2.cpp : Defines the entry point for the console application.//
#include "stdafx.h"
void main()
{
int g, s, b, k, x;
for(x=100;x<10000;x++)
{
g=x%10;
s=x/10%10;
b=x/100%10;
k=x/1000;
if(x=g*g*g+s*s*s+b*b*b+k*k*k)
printf("%d\t",x);
}
}
展开
 我来答
17哥
2013-01-03 · 菩提只向心觅,何劳向外求玄
17哥
采纳数:244 获赞数:1230

向TA提问 私信TA
展开全部
问题出在if(x=g*g*g+s*s*s+b*b*b+k*k*k)这句话上,需要改成
if(x==g*g*g+s*s*s+b*b*b+k*k*k)

是==,而不是=。

死循环的原因:
g,s,b,k分别是x的某位的数字,这些数字最大为9,也就是最大为108,因此无论如何都会满足x < 10000的循环终止条件。因此程序就死循环了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kent_ghost
2013-01-03 · TA获得超过254个赞
知道小有建树答主
回答量:266
采纳率:98%
帮助的人:96.2万
展开全部
if(x=g*g*g+s*s*s+b*b*b+k*k*k) //错把各个数位的三次方和放到x里面了,所以总是true,全部都输出了,应该不存在死循环。

建议改成:
if(g*g*g+s*s*s+b*b*b+k*k*k==x)
{ ... }
把x放后面的话,可以避免因错导致把变量x的值改变的错误。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
whoami2099
2013-01-03 · TA获得超过175个赞
知道小有建树答主
回答量:463
采纳率:100%
帮助的人:189万
展开全部
if(x=g*g*g+s*s*s+b*b*b+k*k*k) 这句少了一个等号。1

#include "stdafx.h"
void main()
{
int g, s, b, k, x;
for(x=100;x<10000;x++)
{
g=x%10;
s=x/10%10;
b=x/100%10;
k=x/1000;
if(x==g*g*g+s*s*s+b*b*b+k*k*k)
printf("%d\t",x);
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhugeyuyun
2013-01-03
知道答主
回答量:30
采纳率:0%
帮助的人:16万
展开全部
if条件,C语言新手最需要注意的问题不外乎++,--,==,不要用goto,漏括号。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
vincant566
2013-01-03 · TA获得超过902个赞
知道小有建树答主
回答量:470
采纳率:0%
帮助的人:329万
展开全部
把if(x=g*g*g+s*s*s+b*b*b+k*k*k) 改为if(x==g*g*g+s*s*s+b*b*b+k*k*k) 就可以了。是判断是否相等,不是给x赋值!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式