#include<stdio.h> int main(void) { int m,i=0,j=0,sum= 0; float ave1,ave2; while((m = putchar()) !=0); { if(m%2==0) { i++; sum+=m; ave1=sum/i; } if(m%2==1) { j++; sum+=m; ave2 = sum/j; } } printf("%d,%f",i,ave1); printf("%d,%f",j,ave2); return 0; }
时间: 2024-02-14 10:12:18 浏览: 68
这段代码有些问题。首先,putchar() 函数是用于将一个字符输出到屏幕上的,不适合用于读入用户输入的数字。其次,while 循环后面的分号会使下面的代码块成为一个独立的语句,不会被循环执行。最后,printf 函数的格式化字符串中应该只有一个占位符,你使用了两个。下面是一个改进后的版本:
```c
#include <stdio.h>
int main(void) {
int m, i = 0, j = 0, sum1 = 0, sum2 = 0;
float ave1, ave2;
while (scanf("%d", &m) == 1) {
if (m % 2 == 0) {
i++;
sum1 += m;
ave1 = (float) sum1 / i;
} else {
j++;
sum2 += m;
ave2 = (float) sum2 / j;
}
}
printf("偶数个数:%d,平均值:%f\n", i, ave1);
printf("奇数个数:%d,平均值:%f\n", j, ave2);
return 0;
}
```
这个程序会读入用户输入的数字,然后分别统计偶数和奇数的个数、和以及平均值,并输出结果。注意,我们需要使用 scanf 函数来读入用户输入的数字,而且需要判断 scanf 函数的返回值是否为 1,以确保读入成功。另外,我们需要将 sum1 和 sum2 定义为两个不同的变量,以分别统计偶数和奇数的和。最后,我们需要将 sum1 和 sum2 除以对应的个数,并强制类型转换为 float 类型,以得到正确的平均值。
阅读全文