2014-03-06 72 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