华为机试HJ97:记负均正

Posted 翟天保Steven

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了华为机试HJ97:记负均正相关的知识,希望对你有一定的参考价值。

作者:翟天保Steven
版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处

题目描述:

首先输入要输入的整数个数n,然后输入n个整数。输出为n个整数中负数的个数,和所有正整数的平均值,结果保留一位小数。

0即不是正整数,也不是负数,不计入计算

输入描述:

本题有多组输入用例。

首先输入一个正整数n,
然后输入n个整数。

输出描述:

输出负数的个数,和所有正整数的平均值。

示例:

输入:

5
1 2 3 4 5
10 
1 2 3 4 5 6 7 8 9 0

输出:

0 3.0
0 5.0

解题思路:

这题是简单的数字分析题。用两个vector分别存放正负数,整数平均值用mean函数计算;输出负数vector的尺寸,再设置cout的小数点保留位,用fixed和setprecision实现,之后输出mean函数的结果即可。

测试代码:

#include <iostream>
#include <vector>
#include <algorithm>
#include <iomanip>

using namespace std;

double mean(vector <int>& data) {
	double ans = 0.0;
	for (int i = 0; i < data.size(); i++) {
		ans += data[i];
	}
	ans = ans / data.size();
	return ans;
}

int main()
{
    int number;
    while(cin>>number)
    {
        vector<int> pos;
        vector<int> neg;
        for(int i=0;i<number;++i)
        {
            int t;
            cin>>t;
            if(t>0)
                pos.push_back(t);
            else if(t<0)
                neg.push_back(t);
        }
        double result = mean(pos);
        cout<<neg.size()<<" ";
        cout<<fixed<<setprecision(1)<<result<<endl;
    }
}

以上是关于华为机试HJ97:记负均正的主要内容,如果未能解决你的问题,请参考以下文章

华为机试题 HJ97记负均正

华为机试题 HJ97记负均正

华为机试HJ105:记负均正II

华为机试HJ105:记负均正II

华为机试题 HJ105记负均正II

#yyds干货盘点# 解决华为机试:记负均正II