2017-02-04 94 views
-2

我無法理解爲什麼切換塊沒有執行。我試圖在comp_in()函數內使用rand()生成0和2之間的隨機數。我將號碼返回到主要功能。在主函數中,我試圖將一個字符與每個生成的字母關聯起來。 switch語句根本不被執行。請幫忙!無法理解程序的流程

#include<iostream> 

    using namespace std; 

    int comp_in(); 

    int main() 
    { 

     char h; 
     h = human_in(); 

     int c = comp_in(); 
     cout << "c is" << c << endl; 

     switch(c) 
     { 
      case '0' : cout << "Computer's choice is : 'R'" << endl; 
         break; 
      case '1' : cout << "Computer's choice is : 'P'" << endl; 
         break; 
      case '2' : cout << "Computer's choice is : 'S'" << endl; 
         break; 
     } 


    } 


    int comp_in() 
    { 
     int s; 
     for(int i=0; i<4; i++) 
     { 
      s=rand()%3; 
     } 
     cout << "s is : " << s << endl; 
     return s; 
    } 


Output:- 
s is : 1 
c is1 
+1

在您的調試器中查看它,您會看到問題所在。 – 1201ProgramAlarm

+0

在使用switch語句時,最好包含一個'default'塊。 –

+7

'0'和''0''之間有區別。 – LogicStuff

回答

1

的問題是,你的comp_in函數返回,但你的開關,其結果比較字符。只要從每個盒子中取出單引號,使他們的數字,它會工作:

switch(c) 
    { 
     case 0 : cout << "Computer's choice is : 'R'" << endl; 
       break; 
     case 1 : cout << "Computer's choice is : 'P'" << endl; 
       break; 
     case 2 : cout << "Computer's choice is : 'S'" << endl; 
       break; 
     default: cout << "Computer made a really strange choice: " << c << endl; 
       break; 
    } 

請注意,在將來的某個時候,你可能要人工輸入與計算機輸入進行比較。由於您的human_in函數返回一個字符,因此您必須使用atoi之類的函數將其轉換。

如果您在default的情況下輸出某種調試消息,您也可以更快地檢測到這些錯誤,這些情況也包含在上面的代碼示例中。

+1

感謝'default'的情況 –