题目
描述
首先输入要输入的整数个数n,然后输入n个整数。输出为n个整数中负数的个数,和所有正整数的平均值。
输入
首先输入一个正整数n,
然后输入n个整数。
输出
输出负数的个数,和所有正整数的平均值。
注:输出 当平均值为整数直接输出,如果不为整数保留一小数。
样例输入
5 1 2 3 4 5
样例输出
0 3
思想
认真统计。。。。坑啊,输出不能换行。。。要不然过不了
代码
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
int countMinus=0;
int counterPositive=0;
int sum=0;
double average=0;
int input;
int times=0;
cin>>times;
while(times!=0)
{
cin>>input;
if(input<0)
{
countMinus++;//统计负数
}
else
{
counterPositive++;
sum+=input;
}
times--;
}
//平均正值
average=double(sum)/counterPositive;
cout<<countMinus<<" ";
if(sum==0)
{
cout<<"0.0";
}
else if (sum%(counterPositive)==0)
{
cout<<sum/(counterPositive);
}
else
{
cout<< fixed<<setprecision(1)<<average;
}
return 0;
}
变形题目
描述
从输入任意个整型数,统计其中的负数个数并求所有非负数的平均值
输入
输入任意个整数
输出
输出负数个数以及所有非负数的平均值
样例输入
-13 -4 -7
样例输出
3 0.0
思想
循环cin,等待输入流停止。
代码
坑!!!!
注意 :
1. 上面代码不需要换行,这里需要换行!
2. 全部保留一位小数
3. 注意考虑没有正数的情况
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
int countMinus=0;
int counterPositive=0;
int sum=0;
double average=0;
int input;
while(cin>>input)
{
if(input<0)
{
countMinus++;//统计负数
}
else
{
counterPositive++;
sum+=input;
}
}
//平均正值
average=double(sum)/counterPositive;
cout<<countMinus<<endl;
if(sum==0)
{
cout<<"0.0";
}
else
{
cout<< fixed<<setprecision(1)<<average;
}
return 0;
}