
这个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);
}
} 展开
#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);
}
} 展开
展开全部
问题出在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的循环终止条件。因此程序就死循环了。
if(x==g*g*g+s*s*s+b*b*b+k*k*k)
是==,而不是=。
死循环的原因:
g,s,b,k分别是x的某位的数字,这些数字最大为9,也就是最大为108,因此无论如何都会满足x < 10000的循环终止条件。因此程序就死循环了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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的值改变的错误。
建议改成:
if(g*g*g+s*s*s+b*b*b+k*k*k==x)
{ ... }
把x放后面的话,可以避免因错导致把变量x的值改变的错误。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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);
}
}
#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);
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
if条件,C语言新手最需要注意的问题不外乎++,--,==,不要用goto,漏括号。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
把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赋值!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询