![]() |
#2
rjsp2023-03-21 11:43
|

#include <stdio.h>
int main(void)
{
int n, odd = 0, even = 0; //odd记录奇数的个数,even记录偶数的个数
int e_sum = 0, o_sum = 0; //e_sum记录偶数的和,o_sum记录奇数的和
printf("Please enter a integer (0 to quit): ");
while (scanf("%d", &n) == 1 && n) //这里当n=0是,为什么能够退出循环?
{
(n % 2 ? (++odd, o_sum += n) : (++even, e_sum += n));
printf("You can enter again (0 to quit): ");
}
printf("Even number: %d\n", even);
if (even > 0)
{
printf("The average of even: %g\n", (float)e_sum / even); //float,强制类型转换
}
printf("Odd number: %d\n", odd);
if (odd > 0)
{
printf("The average of odd: %g\n", (float)o_sum / odd); //float,强制类型转换
}
printf("Done.\n");
return 0;
}
int main(void)
{
int n, odd = 0, even = 0; //odd记录奇数的个数,even记录偶数的个数
int e_sum = 0, o_sum = 0; //e_sum记录偶数的和,o_sum记录奇数的和
printf("Please enter a integer (0 to quit): ");
while (scanf("%d", &n) == 1 && n) //这里当n=0是,为什么能够退出循环?
{
(n % 2 ? (++odd, o_sum += n) : (++even, e_sum += n));
printf("You can enter again (0 to quit): ");
}
printf("Even number: %d\n", even);
if (even > 0)
{
printf("The average of even: %g\n", (float)e_sum / even); //float,强制类型转换
}
printf("Odd number: %d\n", odd);
if (odd > 0)
{
printf("The average of odd: %g\n", (float)o_sum / odd); //float,强制类型转换
}
printf("Done.\n");
return 0;
}
不能理解while (scanf("%d", &n) == 1 && n)为什么能验证:当n=0时结束循环