C ++使用while循环

时间:2011-05-03 01:18:15

标签: c++

我正在尝试编写一个c ++程序来读取一行输入代码(例如,Hat是平的)并让程序输出代码所具有的大写字母数。 (在这个例子中,它必须输出2)。我使用cin.get()编写了一段代码,但我的代码没有进入while循环。请帮我。请更改“我的代码”。

#include <iostream> 
using namespace std; 

int main () 
{
    char y = 0; 
    int capitals = 0; 
    int flag = 0;

    cout << "Enter your line of words followed by a fullstop: "; 

    while (!flag == -1)
    {
        cin.get(y);
        if ((y >= 65) && (y <= 90))
        {
             capitals = capitals + 1; 
        }         

        if (y == 46)
        {        
            flag = -1; 
        }
    }

    cout << "Number of capitals equal is this line is: " << capitals << endl;
    return 0; 
}

6 个答案:

答案 0 :(得分:4)

flag初始化为0,因此!flag为1,永远不会输入您的while循环。

您可以通过以下方式解决此问题:

while (!(flag == -1))

while (flag != -1)

答案 1 :(得分:2)

而不是!flag == -1使用flag != -1

!是一元逻辑NOT运算符,!0是1,而不是-1。

答案 2 :(得分:0)

你试过这个吗?

while (!(flag == -1))

while (flag != -1)

答案 3 :(得分:0)

我认为你需要while (!(flag == -1)) ...但最好是写while (flag != -1)!运算符具有更高的优先级,因此在==之前进行评估。 此外,您应该尝试使用isupper()来测试大写 - 不要重新发明轮子。

答案 4 :(得分:0)

我认为错误是运算符优先级。 !flag == -1相当于(!flag) == -1。试试flag != -1

答案 5 :(得分:0)

如果你原谅了一个可能太完整的回答可能的家庭作业问题:

while (cin >> y && y != '.')
    capitals += (bool)isupper(y);