c++这个程序是怎么回事啊?谁能帮我看看(C++);

来源:百度知道 编辑:UC知道 时间:2024/06/06 12:30:00
#include<fstream>
#include<vector>
#include<algorithm>
#include<iomanip>
#include<iostream>
#include<string>
#include<iterator>
using namespace std;
vector<string>name;
vector<string>sex;
vector<int>age;
vector<double>mark1;
vector<double>mark2;
vector<double>mark3;
vector<int>number;
vector<double>total;
void main()
{
cout<<"请输入学生姓名"<<endl;
string NB;
cin>>NB;
vector<string>::iterator it;
it=find(name.begin(),name.end(),NB);
if(*it==NB)
{
vector<string>::iterator it1;
it1=name.begin();
int i=0;
while(*it1!=*it)
{
i++;
it1++;
}
cout<<"年龄"<<age[i]<<endl;
cout<<"性别"<<sex[i]<<endl;
cout<<"语文成绩

晕死,这样子当然容易出错,而且可读性极差
用下struct好么?给个大致的代码,iterator的具体用法忘了,标准C++的话用int main,如果要给你排除错误的话也要把报错信息拿出来
/*
vector<string>name;
vector<string>sex;
vector<int>age;
vector<double>mark1;
vector<double>mark2;
vector<double>mark3;
vector<int>number;
vector<double>total;
*/
struct student{
string name,sex;
int age,number;
double mark1,mark2,mark3,total;
};
int main(){
vector<student> sdt;
//估计你应该有一个读文件的操作,把文件中的数据先放到sdt里去,用push_back();
/*
给个样例
student sdtin;
cin>>sdtin.name>>sdtin.mark1....
sdt.push_back(sdtin);
这样就行了
*/
//输入用户名,查找可以不用find,顺序查找就行了,还是用NB
int flag;
for(int i=0; i<sdt.end(); i++){
flag=0;
if(NB==sdt[i].name){
flag=1;
//输出
cout<<"年龄"<<sdt[i].age<<endl;
……