我的任务是:编写一个程序,从键盘上一个一个地读取字符,直到字符“q”出现 进入。使用带有 bool 变量的循环来退出循环。最后一个字符串包含 所有输入的字母都应打印在屏幕上(“q”除外)。
这是我目前所拥有的,我现在有点卡住了,每次我运行它时我只能输入 1 个字符然后程序停止---> 这发生在我用 if(b= =真)...... .
int main()
{
bool b;
char input[80];
int i;
b = false;
while(b != true){
cout<<"Enter characters: "<<endl;
cin>>input[i];
if(input[i] == 'q'){
b == true;
break;
}
}
if(b == true){
for(int j = 0; j < 1; j++){
for(int x = 0; x < 1; x++){
cout<<input[i]<<endl;
}
}
}
请帮忙。非常感谢。
最佳答案
六个错误。
您忘记将
i
初始化为零。您忘记在每次循环时递增
i
运算符
==
与运算符=
不同。如果您的输入超过输入的大小,就会发生不好的事情 大批。因此,需要进行一些检查以确保
i
不超过80
(输入数组的声明长度。您正在将
q
插入到input
数组中,但您不想打印它。在循环的每次迭代中提示输入更多字符。不确定你是不是这个意思。
对循环的一些修改:
i = 0;
b = false;
cout<<"Enter characters: "<<endl;
while (i < 80) // limit to 80 chars
{
char ch;
cin >> ch;
if(ch == 'q')
{
b = true; // assign with =, not compare with ==
break;
}
input[i] = ch; // insert into array after the check for q
i++; // increment i
}
最后,你的打印循环是没有希望的。让我们安全地用 null 终止您的字符串并打印它。
if(b)
{
if (i >= 80)
{
i=79;
}
input[i] = '\0';
cout << input << endl;
}
如果您对 C++ 中的字符串类足够熟悉,则可以轻松地转换您的代码以使用它。这样您就不必处理 80 的数组限制。
关于c++ - 请需要帮助 C++,使用 bool 等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33426942/