#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;
}