答案代码如下:
#include <stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
int arr[2000] = { 0 };
float sum = 0;
int count1 = 0;
int count = 0;
int i = 0;
for (i = 0; i < n; i++)
{
scanf("%d", &arr[i]);
}
for (i = 0; i < n; i++)
{
if (arr[i] > 0)
{
sum += arr[i];
count1++;
}
if (arr[i] < 0)
{
count++;
}
}
float p = sum / count1;
printf("%d ", count);
if (count1 != 0)
{
printf("%.1f", p);
}
if (count1 == 0)
{
printf("0.0");
}
return 0;
}
1.sum的储存也要和p一样设为float或者double类型的,不然sum/count两边都是整数,会出现计算错误。
2.count1的情况应该要分开来,分为0和非0的情况打印。
3.arr[ i ] 的值不管是大于0还是小于0都应该有相应计数变量,正数要计数器是因为计算平均值时,是sum/正数的个数。
4.要按照题意,n的取值范围是0-2000,那么数组的大小也应该是2000。