方法一:正向思维,对所有值进行判断
- 可以不使用数组来表示
- 如果没有正数,处理方式通过sum判断输出
- while语句只是判断输入的是否为正整数
-
for (; scanf("%d", &n) != EOF;)
与while (scanf("%d", &n) != EOF)
与while (~scanf("%d", &n))
同
综合考虑后:
#include<stdio.h>
//后面可以考虑异常输入的处理情况
int main() {
int n, num, count = 0, count1 = 0;
double sum = 0.0;
while (scanf("%d", &n) != EOF) {
for (int i = 0; i < n; i++) {
scanf("%d", &num);
if (num < 0) {
count++;
} else if (num > 0) {
sum = sum + num;
count1++;
}
}
}
if (sum == 0) {
printf("%d %0.1f ", count, 0.0);
} else {
printf("%d %0.1f ", count, sum / count1);
}
return 0;
}
第一次独立写出代码
#include<stdio.h>
//后面可以考虑异常输入的处理情况
int main() {
int n, count = 0, a[2000] = {0},count1=0;
double sum = 0;
scanf("%d", &n);
for (int i=0; i < n; i++) {
scanf("%d", &a[i]);
if (a[i] < 0) {
count++;
}else if (a[i] == 0){
count1++;
}
else {
sum =sum + a[i];
}
}
if(sum==0){
printf("%d %0.1f ", count, 0.0);
}
else{
printf("%d %0.1f ", count, sum / (n - count-count1));
}
return 0;
}