需要帮助C ++,使用bool等

时间:2015-10-30 00:19:04

标签: c++

我的任务是:编写一个程序,从键盘上逐个读取字符,直到字符“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;
        }
    }
}

请帮忙。非常感谢你。

2 个答案:

答案 0 :(得分:2)

六个错误。

  1. 您忘了将i初始化为零。

  2. 您忘记在循环的每次传递中增加i

  3. 运营商==与运营商=不同。

  4. 如果您的输入超出输入大小,则会发生错误 阵列。因此,一些检查以确保i不超过80(输入数组的声明长度。

  5. 您正在将q插入input数组中,但您不想打印它。

  6. 在循环的每次迭代中提示更多字符。不确定你的意思。

  7. 对循环进行一些修改:

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