#include <iostream>
#include <string.h>
using namespace std;
class Student{
private:
char name[20];
int number;
int score;
public:
friend int Find(Student *s,int x);
void print(){
cout<<number<<" "<<score<<endl;}
Student(char na[],int x,int y);
};
int main()
{
int no,i;
Student s[3]={Student("zangsan",91001,89),Student("wangmimng",91002,92),Student("jiajing",91003,65)};
cin>>no;
i=Find(s,no);
if(i==-1)
cout<<"Error"<<endl;
else
s[i].print();
return 0;
}
int Find(Student *s,int x)
{
int i,n=0,k=-1;
for(i=0;i<=2;i++)
{
if(s->number==x)
{return i;
break;}
else
{
s++;
n++;
}
}
if(n==i)
return k;
}
Student::Student(char na[],int x,int y)
{
strcpy(name,na);
number=x;
score=y;
}
这个上面两张是要求,下面是我写根据给的条件的大致代码,静态数据成员这里写不下去了,还有在输入信息循环这里老有问题,我刚接触C++,其中有好多低级问题,麻烦看一下,给个正确的,方法,过程
使用一个结构体定义student,然后使用一个vector进行存储所有的学生信息。最后取所有学生成绩进行相加,最后输出就行
#include <iostream>
#include <string.h>
#include <vector>
using namespace std;
struct Student{
int Id=0;
string Name="";
int Achievement=0;
};
int main()
{
vector<Student> students;
int n;
cout<<"输入学生数量";
cin>>n;
cout<<"请输入学生编号,名字,成绩";
for(int i=0;i<n;++i)
{
int id,achievement;
string name;
cin>>id>>name>>achievement;
Student student;
student.Id=id;
student.Name=name;
student.Achievement=achievement;
students.push_back(student);
}
int Count=0;
for(int i=0;i<students.size();++i)
{
Count+=students[i].Achievement;
}
cout<<"总成绩:"<<Count<<endl;
for(int i=0;i<students.size();++i)
{
cout<<students[i].Id<<" "<<students[i].Name<<" "<<students[i].Achievement<<endl;
}
}