¿Qué sucede cuando ingreso un decimal en lugar de un int en “scanf (”% i “, & int)”? [duplicar]

Esta pregunta ya tiene una respuesta aquí:

Introducir flotante en un programa que solo trata con entradas 3 respuestas

Mi programa solicita al usuario que ingresen 20 valores enteros, luego calcula la media de esos valores. Ingresé lo siguiente: 3.5, 6, 9, 12, 15, 18, 21, 24, 1000, 4500, 900, 7, 8, 2, 12, 5, 4, 3, 2, 1

Todos son valores enteros, excepto el primer número, pero el programa me dice que la media es 3.000000. ¿Por qué sucede esto exactamente? Mi razón más explicativa es que la función scanf que tengo para cada valor solicita un número entero, por lo que ingresar 3.5 se redondea a 3 o 4, pero eso aún no explica la media 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;
}

Respuestas a la pregunta(1)

Su respuesta a la pregunta