gpt4 book ai didi

c++ - 结合C++问题中的几个基本思想

转载 作者:行者123 更新时间:2023-11-27 23:15:35 24 4
gpt4 key购买 nike

代码;

# include <iostream>
# include <windows.h>
using namespace std;

int main () {
int var1 = 1;
int var2 = 1;
bool while1 = true;
int x = 0;

while (x < 999) {
x = x+var1;
x = x+var2;
cout << x << " Is the current value of x, how much would you like to add to it?\n";
Sleep(1000);
while (while1) {
int var3;
cin>> var3;
if (var3 > 100) {
cout << "Too large, between 10 and 100\n";
while1 = true;
}
else if (var3 < 10) {
cout << "Too small, between 10 and 100\n";
while1 = true;
}
else{
cout << "Adding " << var3 << " to " << x << "\n";
x = x + var3;
cout << "x is now " << x << "\n";
while1 = false;
}
}
}
}

现在,问题出在第一次循环后,它完全跳过了第二个 while 语句,继续将 var1 和 var2 添加到 x。

这里有什么问题?

最佳答案

您永远不会将变量重置为 true .把它放在外循环的某个地方,比如 while (while1) { 之前行:

while1 = true;

实际上,当您在 else 中设置它时,它保持为 false部分。或者,将其设为无限循环( for (;;)while (true) )并仅使用 break;而不是 while1 = false; ,然后完全抹去对 while1 的提及在另外两个。

此外,您的外循环可以替换为 for循环:

for (int x = 0; x < 999;)

这甚至可以消除对两个 x = x + var1; x = x + var2; 的需要声明也是如此。我会保留它 var1var2 :

for (int x = -var1 - var2; x < 999; x += var1 + var2)

var1var2也永远不会改变,所以如果它们有一些实际意义,我建议制作它们 const并将它们重命名为传达该含义的名称。否则,就说x = x + 2 ,或更短,x += 2; .

最后,如果你使用 C++11,你可以去掉 <windows.h>通过使用标准 sleep 函数来代替依赖:

#include <thread>
#include <chrono>
...
std::this_thread::sleep_for(std::chrono::seconds(1));

关于c++ - 结合C++问题中的几个基本思想,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16578373/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com