2014-02-20 2 views
0

리눅스 OS와 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을 가져온 후 Enter 키를 누르면 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; 
}