Percebi que está usando Windows, como uso um sistema Linux é difícil reproduzir um ambiente parecido, mas usando Wine, (uma camada de compatibilidade para executar programas Windows no Linux) e o MinGW para compilar o código para o executável PE (utilizado no Windows) consegui reproduzir o comportamento que você relata.
Dado a função:
setlocale(LC_ALL, "Portuguese");
O problema está na entrada "1.33", "1.88" e "2.44". Você definiu a localidade como "Portuguese", isso altera o comportamento de algumas funções e isso inclui o scanf, como em português não usamos pontos para separar a parte decimal de sua parte inteira, mas sim vírgulas, o program espera que você entre com "1,33", "1,88" e "2,44". Usar ponto ao invés de vírgula com a localidade alterada vai levar a um comportamento que você não espera. As suas opções são:
- Use vírgula nas entradas de ponto flutuante;
- Remova função
setlocalee use pontos como separador de valores decimais na entrada, o que te levará a problemas com caracteres acentuados (o CMD do Windows é uma merda e não usa Unicode por padrão); - Altere
setlocaleparasetlocale(LC_CTYPE, "Portuguese")e use pontos como separador de valores decimais na entrada. A diferença deste para o anterior é que usar a macroLC_CTYPEindica asetlocalepara alterar apenas as funções que lidam com caracteres, ao invés deLC_ALLque altera todas as propriedades de localidade possíveis (incluindoLC_NUMERICque é o responsável pelo caractere separador de números decimais), o que resolve o problema de caracteres acentuados sem exigir que você use vírgulas como separador.
E uma dica extra, remova system("chcp 65001"), a função system é raramente recomendada, pois mesmo que esteja definida no padrão ISO C, o comando que você passa para ela é dependente do sistema operacional.