#include<iostream>
#include<string>
#include<iomanip>//定义控制器setprecision,用于指明输出包含的位数
#include<ios> //定义类型streamsize,表示长度
using namespace std;
int main()
{
cout<<"Please enter your first name:";
string name;
cin>>name;
cout<<"Hello,"<<name<<"!"<<endl;
cout<<"Please enter your midterm and final exam grades:";
double midterm,final;
cin>>midterm>>final;
cout<<"Note that you must provide the end-of-file character when you're finished typing—typically, Ctrl-D"<<endl;
cout<<"请注意,您在结束键入时必须提供文件结束字符,通常为 Ctrl+D,也可以是Ctrl+D。 ---有道词典"<<endl;
cout<<"Please enter your homework grades:""followed by end-of-file:"; //多个成绩
int count=0;
double sum=0;
double x; //录入多个成绩
while(cin>>x)
{
++count;
sum+=x;
}
streamsize prec=cout.precision();
cout<<"Your final grade is "<<setprecision(3)<<0.2*midterm+0.4*final+0.4*sum/count<<setprecision(prec)<<endl;
return 0;
}
将数据集合存储在向量vector中:
1.读取每一个输入数据并存储
2.排序
3.查找
例子:计算一组输入数据的中值
#include<algorithm>
#include<iostream>
#include<string>
#include<iomanip>
#include<vector>
using namespace std;
int main()
{
cout<<"请输入多个数字:";
double x;
vector<double> numbers; //定义一个向量,向量名为numbers, 类型为vector<double>,保存一组double类型的值
// vector<string> character; 定义一个向量,向量名为character,类型为vector<string>, 保存一组string类型的值
while(cin>>x) //利用while循环从标准输入流读取数值,
numbers.push_back(x); //并存储在向量numbers.类似greeting.size(),push_back是一个成员函数。
cout<<"您已输入"<<numbers.size()<<"个数字"<<endl; //push_back副作用:向量名.size()的值会+1.
if(numbers.size()==0)
{
cout<<endl<<"请重新输入。"<<endl;
return 1; //表明程序运行失败
}
sort(numbers.begin(),numbers.end()); //sort函数定义在头文件<algorithm>
int mid=numbers.size()/2;
double median;
median=(numbers.size()%2==0)?(numbers[mid]+numbers[mid-1])/2:numbers[mid];
cout<<"中值为:"<<median<<endl;
/*
获取numbers的长度
typedef vector<double>::size_type vec_sz;
//vector类型定义了vector<double>::size_type类型和名为size的函数。使用size_type专门保存向量的最大长度,而int float是有范围的,
//而且位数与系统环境相关。
vec_sz size=numbers.size();
*/
}
原版完整程序(有修改):
#include<algorithm>
#include<iomanip>
#include<ios>
#include<iostream>
#include<string>
#include<vector>
using namespace std;
int main()
{
//输入输出问候语
cout<<"Please enter your first name:";
string name;
cin>>name;
cout<<"Hello,"+name<<"!"<<endl;
//输入期中和期末成绩
cout<<"Please enter your midterm and final exam grades:";
double midterm,final;
cin>>midterm>>final;
//输入多个家庭成绩
cout<<"Please enter your homework grades,""followed by end-of-file:";
vector<double> homework;
double x;
while(cin>>x)
homework.push_back(x); //至此,向量hoemework存放了多个家庭成绩
//检查homework是否为空,为空说明没有输入数据,弹出警告
typedef vector<double>::size_type vec_sz; //vector<double>::size_type 是无符号整数类型,不能存放负数,vector<double>类的对象会根据需要动态增长来容纳其输入。
vec_sz size=homework.size();
if(size==0){
cout<<endl<<"You must enter your grades."<<"Please try again!"<<endl;
return 1;
}
//对多个家庭成绩从大到小排序
sort(homework.begin(),homework.end());
//计算多个家庭成绩的中值median
vec_sz mid=size/2;
double median;
median=(size%2==0)?(homework[mid]+homework[mid-1])/2:homework[mid];
//输出总成绩
streamsize prec=cout.precision();
cout<<"Your final grade is "<<setprecision(3)<<0.2*midterm+0.4*final+0.4*median<<setprecision(prec)<<endl;
return 0;
}
3-2:
#include<iostream>
#include<string>
#include<vector> //使用vector类型
#include<algorithm> //使用sort
using namespace std;
int main()
{
cout<<"请输入4的倍数个整数,CTRL+D结束:";
vector<double> test;
double x;
while(cin>>x)
{
test.push_back(x);
}
typedef vector<double>::size_type vec_sz;
vec_sz size=test.size();
if(size==0)
{
cout<<"输入数据为空!"<<endl;
return 1;
}
sort(test.begin(),test.end());
cout<<"输入数据从小到大:";
for(vec_sz i=0;i<size;++i)
{
cout<<test[i]<<" ";
}
cout<<"\n";
//
cout<<"第1部分:";
for(vec_sz i=size/4*3;i<size;++i)
{
cout<<test[i]<<" ";
}
cout<<"\n";
//
cout<<"第2部分:";
for(vec_sz i=size/2;i<size/4*3;++i)
{
cout<<test[i]<<" ";
}
cout<<"\n";
//
cout<<"第3部分:";
for(vec_sz i=size/4;i<size/2;++i)
{
cout<<test[i]<<" ";
}
cout<<"\n";
cout<<"第4部分:";
for(vec_sz i=0;i<size/4;++i)
{
cout<<test[i]<<" ";
}
cout<<endl;
}
3-4: 不会 编写一个程序计算它的输入中每个不同单词
3-5:
#include<iostream>
#include<string>
#include<vector>
using namespace std;
int main()
{
cout<<"输入姓名:";
string x;
cin>>x;
cout<<"输入多个分数:";
vector<double> grade;
double y;
int count=0;
double sum=0;
while(cin>>y)
{
grade.push_back(y);
sum+=y;
++count;
}
cout<<"姓名:"<<x<<",平均分为"<<sum/count<<endl;
return 0;
}
收藏:
把c++的输入输出整理 - rainkin的专栏 - 博客频道 - CSDN.NET
http://blog.csdn.net/rainkin1993/article/details/8441611