Целью является присвоение среднего для разных игроков на основе их единого номера. Проблема в том, что он продолжает пропускать второй 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
Передача 'average', тип которого' float', '% d' in'printf()', который вызывает данные с типом 'int', также вызывает * неопределенное поведение *. – MikeCAT
Вы уверены, что второй 'printf()' пропущен? (пропущен возможно из-за неопределенного поведения) Разве это еще не вызвано, потому что первый 'scanf()' ждет символа без пробелов? – MikeCAT