如何从键盘上输入一批正整数(如果遇到负数重新输入,如果遇到0停止输入),输出: (1)输入的正整数的平均值; (2)高于平均值的正整数的个数。?(语言-c语言)

我的错误源码如下
#include<stdio.h>
int main()
{
float ave;
int m,n, sum = 0;
int count = 0;
int num = 0;
printf("请输入一整数:\n");
scanf_s("%d", &n);
while (n != 0) {
while (n > 0) {

        count++;
        sum = sum + n;
        scanf_s("%d", &n);
    }
    while (n < 0) {
        printf("输入出错,请重新输入:\n");
        scanf_s("%d", &n);
    }
}
m = count;
ave = sum * 1.0 / m;
printf("这列整数平均为:%f\n", ave);
return 0;

}

我尝试使用数组。
因为如果是用数组的话,很容易就能封装成函数。但是这个要求它是让一个一个输入,而且中间牵扯到很多东西。朋友建议直接将ave封装成一个函数。但我们没成功。求同仁点拨!

img

存在一些小问题,马马虎虎能用。

可以尝试使用for循环,把scanf和求和,求平均值放在每一次循环输入里,具体我中午回去敲一下,可以不用数组

尝试使用do while结构,跳出条件是输入为0