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

// 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);
}
}

第1个回答  2013-01-03
问题出在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的循环终止条件。因此程序就死循环了。
第2个回答  2013-01-03
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的值改变的错误。
第3个回答  2013-01-03
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);
}
}
第4个回答  2013-01-03
if条件,C语言新手最需要注意的问题不外乎++,--,==,不要用goto,漏括号。。。
第5个回答  2013-01-03
把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赋值!

一段c++代码陷入死循环了,高手帮忙...
cin>>num;\/\/这儿有个错误,惹输入的是字母,则程序会陷入死循环 if(num>10||num<1)cout<<"输入错误,你只能拥有至少1个,至多10个学生!!"<<endl;}while(num>10||num<1);\/\/这里错误,改为num<10&&num>1

C++程序,进入死循环。怎么改才能让他正常循环
cout << player="" one="" cin="">> player1;cout << player="" two="" cin="">> player2;while (player1 != "0" && player2 != "0"){ 改为 while (player1 != "0" && player2 != "0"){ cout << player="" one="" cin="">> player1;cout << player="" two=...

一段c++代码陷入死循环了,高手帮忙...
{ cerr<double d;">";cin>>num;\/s;;return 1;} } 像这样进行输入判断就可以了;cout<<"请输入一些数字(在最后输入end结束):",改为num<10&&num>;if (!cin.eof()){ cin;if (s != "end"< 判断,只能输入1-10的数字 { cout<<"你有几个学生(1-10);\/这儿有个错误;string s;cin...

求C++大神指导,这个程序怎么跳出while循环
看你的题目的意思是,按输入的位置,打印标准字符。那么你这段代码就死循环了,出不来了,稍作修改即可,可以在循环里面条件增加一个break,退出循环,如下:const string biaozhun = "0123456789ABCDEF";cout << "enter number between 0 and 15:"<< endl;string result;string::size_type n;while...

c\/c++ 程序运行不出来。
有错误,这段程序会陷入死循环。仔细分析每次for循环x值的变化:第1次,x = 4 第2次,x = 16 第3次,x = 256 第4次,x = 65536 第5次,x = 65536 65536 = 4294967296 = 2 ^ 32(这个数超出32bit整数能表示的范围,导致发生截断,最后x = 0)然后每次x都等于0,永远出不了for循环 ...

c++ 为什么打入字母会死循环 怎么解决
或者你这里干脆不要用整型接收,直接用字符接收,比较时用字符,输入非期望字符时直接让重输入,不重画菜单 char enter;...while(1){ cout<<"Please select one of the following options:\\n"<<"1: Play\\n"<<"2: Help\\n"<<"3: Config\\n"<<"4: Quit\\n"<<endl;cin>>enter;while(enter!

我编了一个C++程序,有错,请大师们指点指点
PS:看这样好像是死循环了 方法:例如在C语言程序中,语句“while(1)printf("*");”就是一个死循环,运行它将无休止地打印*号。不存在一种算法,对任何一个程序及相应的输入数据,都可以判断是否会出现死循环。因此,任何编译系统都不做死循环检查。在设计程序时,若遇到死循环,我们可以通过按下...

...程序,如果输入的不合法,那就将陷入死循环,为什么?如何理解?求...
然后回车,此时输入缓冲区中就有两个字符,一个是‘a’,一个是回车换行符‘\/n’,接着程序读取,由于类型不匹配,读取失败,并没有读走输入缓冲区中的数据,也就是说,此时输入缓冲区中还是‘a’,和‘\\n’,接着while循环继续读输入缓冲区,依然类型不匹配,于是就成了死循环 ...

我的电脑安了C++ 无论什么程序都不能building 就是一直linking!!!
重新打开一次VC,VC的编译器有时候会死循环。要不你改成 include <iostream> using namespace std;int main(){ cout<<"test";return 0;} 试试?要是上面过的话,那就是你的编译器的版本比较新,只能用C++的规范。你的问题有人问过了:http:\/\/zhidao.baidu.com\/question\/ 12784044.html?fr=...

C++程序问题,请大虾解答.为啥非法输入是数字这个程序正常,但是是字母之 ...
因为你其它的非法输入所对应的ASCII码基本都不会是1,2,3,0,比如说大写字母好像是从65还是67开始的,小写字母是从97开始的,这些非0数在for循环中做条件判断时都是被认为是真值,所以会一直进循环 。要想实现你的意图,要么把choice改成char型,要么就自己做一下数字校验,对非法输入做出提示 ...

相似回答