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

#include <stdio.h>
#include <math.h>
void main()
{
int a[10]={2,1,2,3,4,5,-1,7,8,9},i,t=9,j=0,k=0,sum=0;
float average;
for (i=0;i<=9;i=i++)
{if (a[i]=0) {t=i; break;}
else if(a[i]>0) continue;
else if(a[i]<0) a[i]=0;}
for (i=0;i<=t;i=i++)
{ if (a[i]>0) {sum=sum+a[i];j=j+1;} }
average=sum/j;
for (i=0;i<=t;i=i++)
if (a[i]>average) k++;
printf ("%5f,%5d\n",average,k);
return 0;
}

运行为空

题主的代码修改如下,供参考:

#include <stdio.h>
#include <math.h>
void main()
{
    int a[10]={2,1,2,3,4,5,-1,7,8,9},i,t=0,j=0,k=0,sum=0; //t=9
    float average;
    for (i=0;i<10;i++) //for (i=0;i<=9;i=i++)
    {
        if (a[i]== 0)    //if (a[i]=0)
            break;      //{t=i;break;}
        else if(a[i]>0)
            continue;
        else if(a[i]<0)
            a[i]=0;
    }
    t = i;   //修改
    for (i=0;i<t;i++) //for (i=0;i<=t;i=i++)
    {
        if (a[i] != 0)//if (a[i]>0)
        {
            sum=sum+a[i];
            j=j+1;
        }
    }
    average=(float)sum/j; //average=sum/j;
    for (i=0;i<t;i++)    //for (i=0;i<=t;i=i++)
         if (a[i]>average) k++;
    printf ("%5f,%5d\n",average,k);
    //return 0;
}

按题目要求的写法,供参考:

#include <stdio.h>
int main()
{
    int i = 0, a[100] = { 0 }, s = 0, cnt = 0;
    float avg = 0;
    while (scanf("%d", &a[i]) == 1 && a[i] != 0) {
        if (a[i] < 0) continue;
        s += a[i];
        i++;
    }
    avg = (float)s / i;
    while (i--)
        if (a[i] > avg) cnt++;
    printf("avg=%.2f, %d", avg, cnt);
    return 0;
}