当我运行程序时,它要求输入出生月份,然后当我按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);
}
答案 0 :(得分:1)
问题出在zodiacloop
函数中:
在此行months=getmonth();
中,您是第一次致电getmonth()
。
之后,您致电zodiacsign
,并在switch(getmonth())
中第二次致电getmonth()
。
因此解决方案是您应将switch(getmonth())
替换为switch(month)
,以避免两次调用getmonth()
!