1
目標是根據統一編號爲不同玩家分配平均值。問題在於它不斷跳過第二個printf,並且switch語句中的字符不起作用。我敢肯定,這是我的一個非常簡單的錯誤,但我似乎無法找到它。遇到了嵌套的循環問題
int main(){
float ab;
float hits;
int un;
char pa;
printf("Please enter the player number, or -1 to exit. \n");
scanf("%d%*c \n", &un);
while(un!= -1)
{
printf("Please enter either an H for a hit or an O for a out, enter E to stop. \n");
scanf("%c%*c", &pa);
while(pa != 'E')
{
switch (pa)
{
case 'h':
case 'H':
ab += 1;
hits +=1;
break;
case 'o':
case 'O':
ab+=1;
break;
default:
printf("Error: Please insert an O or H \n");
break;
}
float average = (ab/hits);
printf("Player %d's score is equal to: %d \n", un, average);
printf("Please enter the player number, or -1 to exit. \n");
scanf("%d%*c \n", &un);
}
}
return 0;
}
使用未初始化變量的值'ab'和'hits',它具有自動存儲時間,調用*未定義行爲*。 – MikeCAT
在'printf()'中,將類型爲「float」的'average'傳遞給'%d',調用類型爲int的數據,也會調用未定義的行爲。 – MikeCAT
你確定第二個'printf()'被跳過嗎? (由於未定義的行爲,可能會跳過)是不是因爲第一個'scanf()正在等待非空白字符而尚未調用? – MikeCAT