请帮我看看这个C++程序到底问题在哪,怎么改

#include <algorithm>
#include <iomanip>
#include <ios>
#include <iostream>
#include <string>
#include <vector>

using std::cin; using std::sort;
using std::cout; using std::string;
using std::endl; using std::streamsize;
using std::vector;
using std::setprecision; using std::precision;
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 << "Enter all your homework grades," //输完后输个结束位 ctrl+z
"follwed by end-of-file:";

double x;
vector<double> homework;
//不变式:到目前为止,homework包含了所有读到的家庭作业成绩
while (cin>>x)
homework.push_back(x);
//检查homework是否为空
typedef vector<double>::size_type vec_sz;
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());
//计算家庭作业的中值
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 greade is " <<setprecision(3)
<<0.2*midterm+0.4*final+0.4*median
<<setprecision(prec)<<endl;
return 0;

}
以下为调试信息
:\Program Files\Microsoft Visual Studio\各章程序\3\3.2课内用中值代替平均值求学生成绩.cpp(12) : error C2039: 'precision' : is not a member of 'std'
F:\Program Files\Microsoft Visual Studio\各章程序\3\3.2课内用中值代替平均值求学生成绩.cpp(12) : error C2873: 'precision' : symbol cannot be used in a using-declaration
F:\Program Files\Microsoft Visual Studio\各章程序\3\3.2课内用中值代替平均值求学生成绩.cpp(35) : error C2653: 'vector<double,class std::allocator<double> >' : is not a class or namespace name
F:\Program Files\Microsoft Visual Studio\各章程序\3\3.2课内用中值代替平均值求学生成绩.cpp(35) : error C2146: syntax error : missing ';' before identifier 'vec_sz'
F:\Program Files\Microsoft Visual Studio\各章程序\3\3.2课内用中值代替平均值求学生成绩.cpp(35) : error C2065: 'vec_sz' : undeclared identifier
F:\Program Files\Microsoft Visual Studio\各章程序\3\3.2课内用中值代替平均值求学生成绩.cpp(36) : error C2146: syntax error : missing ';' before identifier 'size'
F:\Program Files\Microsoft Visual Studio\各章程序\3\3.2课内用中值代替平均值求学生成绩.cpp(36) : error C2065: 'size' : undeclared identifier
F:\Program Files\Microsoft Visual Studio\各章程序\3\3.2课内用中值代替平均值求学生成绩.cpp(46) : error C2146: syntax error : missing ';' before identifier 'mid'
F:\Program Files\Microsoft Visual Studio\各章程序\3\3.2课内用中值代替平均值求学生成绩.cpp(46) : error C2065: 'mid' : undeclared identifier

using std::cin; using std::sort;
using std::cout; using std::string;
using std::endl; using std::streamsize;
using std::vector;
using std::setprecision; using std::precision
把上面这一堆改成 using namespace std;试试
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-10-14
using std::precision这个去掉,程序不需要,名字空间std中也没有precision这个关键字。
修改后的程序如下:
#include <algorithm>
#include <iomanip>
#include <ios>
#include <iostream>
#include <string>
#include <vector>

using std::cin; using std::sort;
using std::cout; using std::string;
using std::endl; using std::streamsize;
using std::vector;
using std::setprecision;/* using std::precision; */
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 << "Enter all your homework grades," //输完后输个结束位 ctrl+z
"follwed by end-of-file:";

double x;
vector<double> homework;
//不变式:到目前为止,homework包含了所有读到的家庭作业成绩
while (cin>>x)
homework.push_back(x);
//检查homework是否为空
typedef vector<double>::size_type vec_sz;
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());
//计算家庭作业的中值
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 greade is " <<setprecision(3)
<<0.2*midterm+0.4*final+0.4*median
<<setprecision(prec)<<endl;
return 0;

}
相似回答