2014-02-20 104 views
0

我使用LINUX操作系統和GCC編譯器。當我運行這段代碼,掃描變量

 #include<stdio.h> 
     int main() 
     { 
     int age; 
     char col; 
     printf("Enter a age "); 
     scanf("%d",&age); 
     printf("Enter a college:"); 
     scanf("%c",&col); 
     if(age>=25 && (col=='H' || col=='Y')) 
     printf("Harvard"); 
     else 
     printf("Yale"); 
     return 0; 
     } 

當我運行這段代碼,輸出是,

 $./a.out 
     $Enter a age 28 
     Enter a college:Yale 
     $ 

即使當我試圖將年齡給予不同的值,輸出仍然是一樣的。 爲什麼循環會中止並在代碼中打印下一條語句?

而當我更改變量聲明,即我第一次閱讀字符,然後年齡..現在代碼工作正常。 這是爲什麼發生?

回答

0

在輸入整數輸入age之後,您按回車鍵,那應該算作char,它在col中指定。你需要照顧到你使用getchar()進行的按壓。看下面的代碼:

int main(){ 
    int age; 
    char col; 
    printf("Enter a age "); 
    scanf("%d",&age); 
    getchar(); // the enter which you hit after taking age as an integer input 
    printf("Enter a college:"); 
    scanf("%c",&col); 
    if(age>=25 && (col=='H' || col=='Y')) 
    printf("Harvard"); 
    else 
    printf("Yale"); 

    return 0; 
}