扫描变量

时间:2014-02-20 09:44:23

标签: variables if-statement

我使用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 
        $

即使我尝试给年龄赋予不同的值,输出仍然相同。 为什么循环中止并打印代码中的下一个语句?

当我更改变量声明时,我首先读取字符然后读取年龄..现在代码正常工作。 为什么会这样?

1 个答案:

答案 0 :(得分: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;
}