多个scanfs?

时间:2018-07-31 13:11:36

标签: c scanf

当我运行程序时,它要求输入出生月份,然后当我按Enter键时它要求输入日期,但是当我单击Enter时,它再次要求输入出生月份。
为什么在getmonth函数上有多个scanfs?帮助

int getmonth();
int getday();
int zodiacsign(int month, int day);
void zodiacloop();

int main(){
        zodiacloop();
        return;
}

int getmonth(){
    int month;
    printf("\nEnter birth month(1-12): ");
    scanf("%d",&month);
    return month;
}

int getday(){
    int day;
    printf("\nEnter birth day(1-31): ");
    scanf("%d",&day);
    return day;
}

int zodiacsign(int month, int day){
    switch(getmonth()){
        case 1: 
        if(day>=21)
        printf("\nAquarius");
        break;
}
}

void zodiacloop(){
    int months,day;
    months=getmonth();
    day=getday();
    zodiacsign(months,day);
}

1 个答案:

答案 0 :(得分:1)

问题出在zodiacloop函数中: 在此行months=getmonth();中,您是第一次致电getmonth()。 之后,您致电zodiacsign,并在switch(getmonth())中第二次致电getmonth()

因此解决方案是您应将switch(getmonth())替换为switch(month),以避免两次调用getmonth()