double类型除int类型,为什么用%ld读取输入一直是0?

#include

int main(void)

{
int n;
double sumeven = 0.0;
int ct_even = 0;
double sumodd = 0.0;
int ct_odd = 0;

while (scanf("%d", &n) == 1 && n != 0)
{
    if (n % 2 == 1)
    {
        sumodd += n;
        ++ct_odd;
    }
    else
    {
        sumeven += n;
        ++ct_even;
    }
}
printf("Number of evens: %d", ct_even);
if (ct_even > 0)
    printf("  average:%ld",sumeven / ct_even);
putchar('\n');

printf("Number of odds: %d", ct_odd);
if (ct_odd > 0)
    printf("  average: %g", sumodd / ct_odd);
putchar('\n');
printf("\ndone\n");

return 0;

}

while (scanf("%d", &n) == 1 && n != 0)
循环一次你就key in一次??

if (ct_even > 0)
printf(" average:%ld",(long)sumeven / ct_even);