求解决问题

st_laohu 2012-03-23 08:52:05
如何从用户输入的10个学生的(学号,姓名,成绩)获取他们成绩之和呢?????
...全文
127 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
//下面是我以前写过的作业,程序正确,基本上可以满足你说的功能,类和结构体都实现了,自己拿去改改,别太懒了哦,有用的话就采纳

#include <iostream>
#include <iomanip>
using namespace std;

struct student
{
int no;
char name[10];
double math;
double english;
double politics;
double total;
}stu[5];

void input(struct student*stu_array,int n);
void sum(struct student*stu_array,int n);
void output(struct student*stu_array,int n);

void input(struct student*stu_array,int n)
{
for(int i=0;i<5;i++)
{
cout<<"请输入学生"<<i+1<<"学号"<<endl;
cin>>stu_array[i].no;
cout<<"请输入学生"<<i+1<<"姓名"<<endl;
cin>>stu_array[i].name;
cout<<"请输入学生"<<i+1<<"数学成绩"<<endl;
cin>>stu_array[i].math;
cout<<"请输入学生"<<i+1<<"英语成绩"<<endl;
cin>>stu_array[i].english;
cout<<"请输入学生"<<i+1<<"政治成绩"<<endl;
cin>>stu_array[i].politics;
}
}
void sum(struct student*stu_array,int n)
{
for(int i=0;i<5;i++)
{stu_array[i].total=stu_array[i].math+stu_array[i].english+stu_array[i].politics; }
for(int i=0;i<4;i++)
{
student temp;
for(int j=i+1;j<5;j++)
if(stu_array[i].total<stu_array[j].total)
{
temp=stu_array[i];
stu_array[i]=stu_array[j];
stu_array[j]=temp;
}

}
}
void output(struct student*stu_array,int n)
{
int i;
for( i=0;i<5;i++)
{cout<<"学号"<<setw(5)<<" 姓名"<<setw(5)<<" 数学"<<setw(5)<<" 英语"<<setw(5)<<" 政治 "<<setw(5)<<" 总成绩 "<<endl;
cout<<stu_array[i].no<<setw(8)<<stu_array[i].name<<setw(8)<<stu_array[i].math<<setw(8)<<stu_array[i].english<<setw(8);
cout<<stu_array[i].politics<<setw(8)<<stu_array[i].total<<endl;
}
}
int main()
{
input(stu,5);
sum(stu,5);
output(stu,5);
system("PAUSE");
return EXIT_SUCCESS;
}

——————————————————————————————————————————————
#include <iostream>
#include <iomanip>
using namespace std;

class student
{
public:
void input();
friend void sum(student*,int n);
void output();
private:
int no;
char name[10];
double math;
double english;
double politics;
double total;
};
void student::input()
{
cout<<"请输入学生学号"<<endl;
cin>>no;
cout<<"请输入学生姓名"<<endl;
cin>>name;
cout<<"请输入学生数学成绩"<<endl;
cin>>math;
cout<<"请输入学生英语成绩"<<endl;
cin>>english;
cout<<"请输入学生政治成绩"<<endl;
cin>>politics;
}

void sum(student*stu_array,int n)
{
for(int i=0;i<5;i++)
{stu_array[i].total=stu_array[i].math+stu_array[i].english+stu_array[i].politics; }
for(int i=0;i<4;i++)
{
student temp;
for(int j=i+1;j<5;j++)
if(stu_array[i].total<stu_array[j].total)
{
temp=stu_array[i];
stu_array[i]=stu_array[j];
stu_array[j]=temp;
}

}
}
void student::output()
{

cout<<"学号"<<setw(5)<<" 姓名"<<setw(5)<<" 数学"<<setw(5)<<" 英语"<<setw(5)<<" 政治 "<<setw(5)<<" 总成绩 "<<endl;
cout<<no<<setw(8)<<name<<setw(8)<<math<<setw(8)<<english<<setw(8);
cout<<politics<<setw(8)<<total<<endl;
}


int main()
{
student s[5];
for(int i=0;i<5;i++)
{ cout<<"please input information of students:"<<endl;
s[i].input();
cout<<endl;
}
sum(s,5);
for(int i=0;i<5;i++)
{
cout<<"print information of students:"<<endl;
s[i].output();
}
system("PAUSE");
return EXIT_SUCCESS;
}
  • 打赏
  • 举报
回复
//下面是我以前写过的作业,程序正确,基本上可以满足你说的功能,类和结构体都实现了,自己拿去改改,别太懒了哦,有用的话就采纳

#include <iostream>
#include <iomanip>
using namespace std;

struct student
{
int no;
char name[10];
double math;
double english;
double politics;
double total;
}stu[5];

void input(struct student*stu_array,int n);
void sum(struct student*stu_array,int n);
void output(struct student*stu_array,int n);

void input(struct student*stu_array,int n)
{
for(int i=0;i<5;i++)
{
cout<<"请输入学生"<<i+1<<"学号"<<endl;
cin>>stu_array[i].no;
cout<<"请输入学生"<<i+1<<"姓名"<<endl;
cin>>stu_array[i].name;
cout<<"请输入学生"<<i+1<<"数学成绩"<<endl;
cin>>stu_array[i].math;
cout<<"请输入学生"<<i+1<<"英语成绩"<<endl;
cin>>stu_array[i].english;
cout<<"请输入学生"<<i+1<<"政治成绩"<<endl;
cin>>stu_array[i].politics;
}
}
void sum(struct student*stu_array,int n)
{
for(int i=0;i<5;i++)
{stu_array[i].total=stu_array[i].math+stu_array[i].english+stu_array[i].politics; }
for(int i=0;i<4;i++)
{
student temp;
for(int j=i+1;j<5;j++)
if(stu_array[i].total<stu_array[j].total)
{
temp=stu_array[i];
stu_array[i]=stu_array[j];
stu_array[j]=temp;
}

}
}
void output(struct student*stu_array,int n)
{
int i;
for( i=0;i<5;i++)
{cout<<"学号"<<setw(5)<<" 姓名"<<setw(5)<<" 数学"<<setw(5)<<" 英语"<<setw(5)<<" 政治 "<<setw(5)<<" 总成绩 "<<endl;
cout<<stu_array[i].no<<setw(8)<<stu_array[i].name<<setw(8)<<stu_array[i].math<<setw(8)<<stu_array[i].english<<setw(8);
cout<<stu_array[i].politics<<setw(8)<<stu_array[i].total<<endl;
}
}
int main()
{
input(stu,5);
sum(stu,5);
output(stu,5);
system("PAUSE");
return EXIT_SUCCESS;
}

——————————————————————————————————————————————
#include <iostream>
#include <iomanip>
using namespace std;

class student
{
public:
void input();
friend void sum(student*,int n);
void output();
private:
int no;
char name[10];
double math;
double english;
double politics;
double total;
};
void student::input()
{
cout<<"请输入学生学号"<<endl;
cin>>no;
cout<<"请输入学生姓名"<<endl;
cin>>name;
cout<<"请输入学生数学成绩"<<endl;
cin>>math;
cout<<"请输入学生英语成绩"<<endl;
cin>>english;
cout<<"请输入学生政治成绩"<<endl;
cin>>politics;
}

void sum(student*stu_array,int n)
{
for(int i=0;i<5;i++)
{stu_array[i].total=stu_array[i].math+stu_array[i].english+stu_array[i].politics; }
for(int i=0;i<4;i++)
{
student temp;
for(int j=i+1;j<5;j++)
if(stu_array[i].total<stu_array[j].total)
{
temp=stu_array[i];
stu_array[i]=stu_array[j];
stu_array[j]=temp;
}

}
}
void student::output()
{

cout<<"学号"<<setw(5)<<" 姓名"<<setw(5)<<" 数学"<<setw(5)<<" 英语"<<setw(5)<<" 政治 "<<setw(5)<<" 总成绩 "<<endl;
cout<<no<<setw(8)<<name<<setw(8)<<math<<setw(8)<<english<<setw(8);
cout<<politics<<setw(8)<<total<<endl;
}


int main()
{
student s[5];
for(int i=0;i<5;i++)
{ cout<<"please input information of students:"<<endl;
s[i].input();
cout<<endl;
}
sum(s,5);
for(int i=0;i<5;i++)
{
cout<<"print information of students:"<<endl;
s[i].output();
}
system("PAUSE");
return EXIT_SUCCESS;
}
st_laohu 2012-03-24
  • 打赏
  • 举报
回复
那要求英语的总分呢~[Quote=引用 12 楼 zhangshuaizaxia 的回复:]
讲下思路啦
你把每科的成绩求和如:sum=arr_[0].english+arr_[1].english……arr_[i].english,然后average=sum/i,就可以了啦
[/Quote]
ziyue007 2012-03-24
  • 打赏
  • 举报
回复
帮顶,不难的,机构体就成
  • 打赏
  • 举报
回复
这是函数原型说明,没必要写参数,写参数其实也没用,但是类型申明不能省,所以必须写students*
st_laohu 2012-03-24
  • 打赏
  • 举报
回复
friend void sum(student*,int n);
为什么*号后面没参数呢?

[Quote=引用 10 楼 zhangshuaizaxia 的回复:]
//下面是我以前写过的作业,程序正确,基本上可以满足你说的功能,类和结构体都实现了,自己拿去改改,别太懒了哦,有用的话就采纳

#include <iostream>
#include <iomanip>
using namespace std;

struct student
{
int no;
char name[10];
double math;
do……
[/Quote]
  • 打赏
  • 举报
回复
讲下思路啦
你把每科的成绩求和如:sum=arr_[0].english+arr_[1].english……arr_[i].english,然后average=sum/i,就可以了啦
st_laohu 2012-03-24
  • 打赏
  • 举报
回复
那怎么求他们每科总分的平均分?

[Quote=引用 10 楼 zhangshuaizaxia 的回复:]
//下面是我以前写过的作业,程序正确,基本上可以满足你说的功能,类和结构体都实现了,自己拿去改改,别太懒了哦,有用的话就采纳

#include <iostream>
#include <iomanip>
using namespace std;

struct student
{
int no;
char name[10];
double math;
do……
[/Quote]
shn521 2012-03-23
  • 打赏
  • 举报
回复
如果只存信息,那类和结构体都行
st_laohu 2012-03-23
  • 打赏
  • 举报
回复
还要查询每个学生的信息啊~
[Quote=引用 6 楼 shn521 的回复:]
你的学号,姓名需要记录吗?
如果不需要,那你直接把成绩存到一个int数组里,然后求和就可以了啊
[/Quote]
shn521 2012-03-23
  • 打赏
  • 举报
回复
你的学号,姓名需要记录吗?
如果不需要,那你直接把成绩存到一个int数组里,然后求和就可以了啊
st_laohu 2012-03-23
  • 打赏
  • 举报
回复
是否一定要用结构体数组??
[Quote=引用 2 楼 shn521 的回复:]
定义个结构体数组
[/Quote]
st_laohu 2012-03-23
  • 打赏
  • 举报
回复
我用了类来做了=。=
[Quote=引用 2 楼 shn521 的回复:]
定义个结构体数组
[/Quote]
st_laohu 2012-03-23
  • 打赏
  • 举报
回复
每次输的是(学号,姓名 ,成绩)啊 ~

[Quote=引用 1 楼 w170532934 的回复:]
每输入一个成绩就累加起来不就可以了么?
[/Quote]
shn521 2012-03-23
  • 打赏
  • 举报
回复
定义个结构体数组
W170532934 2012-03-23
  • 打赏
  • 举报
回复
每输入一个成绩就累加起来不就可以了么?

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧