我的任务是:编写一个程序,从键盘上逐个读取字符,直到字符“q”为止 进入。使用带有和bool变量的循环退出循环。最后一个字符串包含 所有输入的字母都应打印在屏幕上(“q”除外)。
这就是我到目前为止的情况,我现在有点困惑,每次运行它我只能输入1个字符然后程序停止--->这是在我用if(b == true)........
写完最后一行之后发生的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;
}
}
}
请帮忙。非常感谢你。
答案 0 :(得分:2)
六个错误。
您忘了将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的数组限制。
答案 1 :(得分:0)
使用此代码,它将按您的意愿工作。
#include <iostream>
using std::cout;
using std::cin;
int main()
{
char input[80];
int i = 0;
input[i] = cin.get();
while (input[i] != 'q')
{
i++;
input[i] = cin.get();
}
for (int j = 0; j < i; j++)
{
cout << input[j];
}
system("Pause");
return 0;
}