华为机试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:记负均正的主要内容,如果未能解决你的问题,请参考以下文章