股市风云
时间: 1ms 内存:128M
描述:
股市强烈动荡,有涨有跌。现在有一组数据表示各公司的涨跌(涨为正,跌为负,不动为零),要求统计出平均涨幅和平均跌幅。
输入:
一组数,其中有正数,也有负数,还有0。输入的个数不定,另外,不会出现只有正数或只有负数的情况。
输出:
第一行输出见涨的数目和遇跌的数目;
第二行输出平均涨幅(正数的平均数)和平均跌幅(负数的平均数,再取反),保留小数点后3位。
示例输入:
5 0 -1 1.5 2.3 -0.3 2.4 0 7.9 -4.3
示例输出:
5 3
3.820 1.867
提示:
参考答案(内存最优[748]):
#include<stdio.h>
int main()
{
double Lsum=0.0,Hsum=0.0;
int Lnum=0,Hnum=0;
double temp1;
while(scanf("%lf",&temp1)!=EOF)
{
if(temp1>0)
{
Hnum++;
Hsum+=temp1;
}
else if(temp1<0)
{
Lnum++;
Lsum+=temp1;
}
}
printf("%d %d\n",Hnum,Lnum);
printf("%.3lf %.3lf\n",Hsum/Hnum,(0-Lsum)/Lnum);
return 0;
}
参考答案(时间最优[0]):
#include <iostream>
#include<cstdio>
#include <iomanip>
using namespace std;
int main()
{
int c_inc=0, c_dec=0; //涨的个数和跌的个数
//freopen("input.txt","r",stdin);
double v, s_inc=0, s_dec=0; //用于涨跌值和用于求和的变量
while(cin>>v)
{
if(v>0)
{
s_inc+=v;
c_inc++;
}
else if(v<0)
{
s_dec+=v;
c_dec++;
}
}
cout<<c_inc<<" "<<c_dec<<endl;
cout<<setiosflags(ios::fixed)<<setprecision(3)<<(s_inc/c_inc)<<" "<<(-s_dec/c_dec)<<endl;
return 0;
}
题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。
