【问题描述】 编写程序,提示用户输入一系列的数,0表示输入结束,输出这些数的最大值(largest),最小值(smallest),平均值(average),标准偏差(standard deviation). 标准偏差计算方法: standard_deviation = sqrt( sum_squares/Naverage*average)其中,sum_squares是输入数据的平方和,N为输入数的个数 【输入形式】
23 56 87 2.3 88 45 23.6 0
【输出形式】 Enter a series numbers: smallest:2.3 largest:88 average:35.228573 standard_deviation:27.734903
#include<iostream>
#include<cmath>
#include<iomanip>
using namespace std;
int main()
{
double x=0;
double arr[100];
int j= 0;
while(1) //输入数据
{
cin>>x;
if(x==0) /*用while(1)不断循环等输入0时
用if语句判断来break停止循环 */
{
break;
}
else
{
arr[j]=x;
j++;
}
}
int N= j;
double largest= arr[0]; //求最大值
for(int i=0;i<j-1;i++)
{
if(arr[i]<arr[i+1] && arr[i+1]>largest )
{
largest=arr[i+1];
}
}
cout<<"largest:"<<largest<<endl;
double smallest= arr[0]; //求最小值
for(int i=0;i<j-1;i++)
{
if(arr[i]>arr[i+1] && arr[i+1]<smallest )
{
smallest=arr[i+1];
}
}
cout<<"smallest:"<<smallest<<endl;
double sum=0; //求平均值
for(int i=0; i<j; i++)
{
sum+= arr[i];
}
double average=sum/N;
cout<<"average:"<<fixed<<setprecision(6)<<average<<endl;
double sum_squares =0; //先算平方和
for(int i=0; i<j; i++)
{
sum_squares+= arr[i]*arr[i];
}
double standard_deviation= sqrt(sum_squares/N- average*average); //再算偏差
cout<<"standard_deviation:"<<fixed<<setprecision(6)<<standard_deviation<<endl;
system("pause");
return 0;
}
|