O que está acontecendo quando insiro um decimal em vez de um int para "scanf ("% i ", & int)"? [duplicado]
Esta pergunta já tem uma resposta aqui:
Introdução de float em um programa que lida apenas com ints 3 respostasMeu programa solicita que o usuário insira 20 valores inteiros e calcula a média desses valores. Introduzi o seguinte: 3.5, 6, 9, 12, 15, 18, 21, 24, 1000, 4500, 900, 7, 8, 2, 12, 5, 4, 3, 2, 1
Todos são valores inteiros, exceto o primeiro número, mas o programa me diz que a média é 3.000000. Por que exatamente isso acontece? Minha razão mais explícita de explicação é que a função scanf que tenho para cada valor solicita um número inteiro e, portanto, a inserção de 3,5 é arredondada para 3 ou 4, mas isso ainda não explica a média resultante de 3.000000.
#include <stdio.h>
int main(void) {
int count, value;
double avg, sum;
count = 0;
sum = 0;
avg = 0;
while (count < 20) {
printf("Enter a positive integer\n");
scanf("%i", &value);
if (value >= 0) {
sum = sum + value;
count = count + 1;
}
else {
printf("value must be positive");
}
}
avg = sum / count;
printf("Average is %lf\n ", avg);
return 0;
}