我一直在看这段代码20分钟,我无法理解为什么这个循环是无限的,它应该打印30个元素。谁能解释一下?请
#include <iostream>
#include <iomanip>
using namespace std;
void arSaugu(double btc, double sum){
if (sum < btc){
cout << " SAUGU" << endl;
} else {
cout << " NESAUGU" << endl;
}
return;
}
int main(){
double btc, bet, kof, sum, kof1;
cout << "Iveskite kiek turite btc:" << endl;
cin >> btc;
cout << "Iveskite, koks bet'as:" << endl;
cin >> bet;
cout << "Iveskite, koks kofas:" << endl;
cin >> kof;
sum = bet;
kof1 = kof;
for (int i = 1; i < 31; i++){
if (i = 1){
kof1 = 1;
} else {
for (int j = 1; j < i; j++){
kof1 = kof1*kof;
}
}
cout << i << ". " << bet*kof1; arSaugu(btc, sum);
sum = sum + (bet*kof1);
kof1 = 0;
}
return 0;
}
有些文字,因为帖子主要是代码。
答案 0 :(得分:1)
在使用C(++)进行编程时,这是一个常见错误,在早期,人们将等于运算符==
误认为赋值运算符=
。
你在这里用if (i = 1){
行做的是在循环的每次迭代中将i
设置为1,所以我永远不会变大。
要解决此问题,只需将该行更改为if (i == 1) {
答案 1 :(得分:0)
我猜是因为if (i = 1)
将1
分配给i
。您打算比较if (i == 1)
答案 2 :(得分:0)
if语句错误。它应该是
if(i == 1)
当前在每个循环上,你将i分配回1.因此循环无限的原因