题意:
        输入 n 个整型数,统计其中的负数个数并求所有非负数的平均值,结果保留一位小数。
        如果没有非负数,则平均值为0。

方法一:
直接模拟


思路:
        遍历每个数。
        分别对负数和非负数计数,并对非负数求和。
        

#include <bits/stdc++.h>

using namespace std;

int main(){
    int cnt1=0,cnt2=0;//计数
    double s=0;//非负数的和
    int x;
    
    while(cin >> x){
        if(x<0){//负数计数
            cnt1++;
        }else{//非负数计数并且非负数累加
            cnt2++;
            s+=x;
        }
    }
    printf("%d\n%.1f\n",cnt1,cnt2==0?0:s/cnt2);
    return 0;
}


时间复杂度:
空间复杂度:

方法二:
存储模拟

思路:
        先将输入的数用数组存储,
        再枚举每个数,对负数计数和非负数求和。


#include <bits/stdc++.h>

using namespace std;
int n,a[50005];
int cnt;//对负数计数
double s=0;//非负数的和

int main(){
    
    while(cin >> a[n++]);//输入
    n--;
    
    for(int i=0;i<n;i++){//遍历每个数
        if(a[i]<0){//负数计数
            cnt++;
        }else{//非负数累加
            s+=a[i];
        }
    }
    printf("%d\n%.1f\n",cnt,(n-cnt)==0?0:s/(n-cnt));
    return 0;
}

时间复杂度:
空间复杂度: