2014-03-06 74 views
0

我遇到了另一个程序问题。这是这样的:cin抛出错误信息

if(n < 15000) 
{ 
    printf("I am < 15000"); 
return 0; 
} 
else if(n > 19000) 
{ 
    printf("I am > 19000"); 
    return 0; 
} 
else if(n > 51000) 
{ 
    printf("I am > 51000"); 
    return 0; 
} 

如果n高于51000那么它仍然会返回“我是> 19000”。我想我需要用else if(n > 19000 && n < 51000)“缩小差距”,因此要测试这一点,我写了这个程序:

#include <iostream> 
int main() 
{ 
    printf("Please enter a #: "); 
    int block; 
    cin >> n; 
    if(n <= 10) 
    { 
     printf("I am <= 10"); 
     return 0; 
    } 
    else if(n <= 15000) 
    { 
     printf("I am <= 15000"); 
     return 0; 
    } 
    else if(n > 15000 && n <= 19000) 
    { 
     printf("I am > 15000 and <= 19000"); 
     return 0; 
    } 
    else if(n > 19000) 
    { 
     printf("I am > 19000"); 
     return 0; 
    } 
    else if(n > 51000) 
    { 
     printf("I am > 51000"); 
     return 0; 
    } 
} 

尝试编译这给了我这个错误:“错误:‘CIN’不是在这个范围内声明“ 我使用g++ <filename>在mac osx上编译10.7

+0

看到我的文章becuae我指出了也在你的公关逻辑错误pgram。 –

回答

1

要么使用C++标准输入/输出流或使用C标准输入/输出流。混合它们是一个糟糕的主意。

非常罕见所有标准的声明被放置在标准名称空间std

所以不是

cin >> n; 

你应该写

std::cin >> n; 

或者使用前,将以下指令cin

using std::cin; 
//,,, 
cin >> n; 

此外,你应该包括标头<cstdio>其中功能printf宣布。

要考虑到这种情况下

else if(n > 19000) 

无效,因为它包含了所有的数字大于10000包括数字超过51000

更大的我会写程序如下方式

#include <iostream> 

int main() 
{ 
    std::cout << "Please enter a #: "; 
    int block; 
    std::cin >> n; 

    if (n <= 10) 
    { 
     std::cout << "I am <= 10"; 
    } 
    else if (n <= 15000) 
    { 
     std::cout << "I am <= 15000"; 
    } 
    else if (n <= 19000) 
    { 
     std::cout << "I am > 15000 and <= 19000"; 
    } 
    else if (n > 19000 && n <= 51000) 
    { 
     std::cout << "I am > 19000"; 
    } 
    else if (n > 51000) 
    { 
     std::cout << "I am > 51000"; 
    } 

    std::cout << std::endl; 
} 
+0

这是非常有帮助的我没有意识到我在混合使用C和C++,同时你对我的最初问题也有所了解。谢谢。 – s4w3d0ff

0

也许std::cin >> n会有帮助吗?看起来像一个命名空间给我的问题。

1

通过

#include <iostream> 

要包括在命名空间std符号,所以访问标准输入流你必须写:

std::cin