| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3693 人关注过本帖
标题:C++,关于数组与结构体的结合。初学者,谢谢
只看楼主 加入收藏
yxs0924
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2016-3-10
结帖率:0
收藏
已结贴  问题点数:20 回复次数:7 
C++,关于数组与结构体的结合。初学者,谢谢
定义一个学生成绩结构体类型,包含“学号”、“姓名”、“性别”、“年龄”、“班级”、“英语”、“数学”、“物理”、“总分”、“名次”等信息。编写6个函数分别用于:
(1)    使用结构体数组,输入全班10名学生的上述信息;
(2)    计算每一个学生的总分、平均分;
(3)    计算每一门课程的平均分;
(4)    查找成绩有不及格的学生信息;
(5)    按学生成绩总分降序排序;
(6)    输出全班学生的学号、总分及名次。
搜索更多相关主题的帖子: 结构体 英语 课程 数学 
2016-03-10 11:29
yxs0924
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2016-3-10
收藏
得分:0 
2016-03-10 11:30
qq1023569223
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
注 册:2010-12-22
收藏
得分:4 
这个好做,很基本的,自己多看看。

   唯实惟新 至诚致志
2016-03-10 15:30
wengbin
Rank: 10Rank: 10Rank: 10
来 自:陕西西安
等 级:贵宾
威 望:19
帖 子:370
专家分:1846
注 册:2015-5-8
收藏
得分:4 
程序代码:
/**
定义一个学生成绩结构体类型,包含“学号”、“姓名”、“性别”、“年龄”、“班级”、“英语”、“数学”、“物理”、“总分”、“名次”等信息。编写6个函数分别用于:
(1)    使用结构体数组,输入全班10名学生的上述信息;
(2)    计算每一个学生的总分、平均分;
(3)    计算每一门课程的平均分;
(4)    查找成绩有不及格的学生信息;
(5)    按学生成绩总分降序排序;
(6)    输出全班学生的学号、总分及名次。

以下是简单写的几下,没做优化,容错性很差,必须按要求输入,正常情况下可以达到你的要求,只是没写查找不及格的代码,懒的写了,基本的方法都在以下代码中能找到,自己写剩下的吧
*/
#include<iostream>
#include<string>
#include<fstream>
#define MAX 2
struct Student
{
    unsigned int ID;
    std::string name;
    std::string sex;
    unsigned int age;
    unsigned int grade;
    unsigned int English;
    unsigned int Math;
    unsigned int Chinese;
    unsigned int Physics;
    unsigned int total=0;
    unsigned int average=0;
    unsigned int rank_=0;
};
struct StudentInfo
{
    Student student[MAX];
    int average[4];
};
std::ostream & operator<<(std::ostream & os,const Student stu)
{
    os<<"ID:"<<stu.ID<<"\ttotal:"<<stu.total<<"\trank:"<<stu.rank_<<std::endl;
    return os;
}
void show(Student ss[],const int n)
{
    int len=n;
    int i=0;
    for(;i<len;i++)
    {
        std::cout<<ss[i]<<std::endl;
    }
}
void SortByTotal(Student s[],const int n)
{
    int len=n;
    int i=0;
    for(;i<len;i++)
    {
        for(int j=i+1;j<len;j++)
        {
            if(s[i].total<s[j].total)
            {
                Student temp;
                temp=s[i];
                s[i]=s[j];
                s[j]=temp;
            }
        }
        s[i].rank_=i+1;
    }
}
void aver(StudentInfo &ss,int n)
{
    int len=n;
    int sum[4]={0};
    for(int i=0;i<len;i++)
    {
        sum[0]+=ss.student[i].English;
        sum[1]+=ss.student[i].Math;
        sum[2]+=ss.student[i].Chinese;
        sum[3]+=ss.student[i].Physics;
    }
    ss.average[0]=sum[0]/len;
    ss.average[1]=sum[1]/len;
    ss.average[2]=sum[2]/len;
    ss.average[3]=sum[3]/len;
}
void TotalAndAverageCalculate(Student& s)
{
    s.total=s.English+s.Math+s.Chinese+s.Physics;
    s.average=s.total/4;
}
void Calculate(Student* stu,const int length)
{
    int i=0;
    int temp=length;
    for(;i<temp;i++)
    {
        TotalAndAverageCalculate(*(stu+i));//计算第i个学生和平均分和总分
    }
}
void GetInfoFromKeyboard(Student StuArr[],const int length)//读入学生信息
{
    int i=0;
    int temp=length;
    for(;i<temp;i++)
    {
        std::cout<<"学号:";
        std::cin>>StuArr[i].ID;
        std::cout<<"姓名:";
        std::cin>>StuArr[i].name;
        std::cout<<"性别:";
        std::cin>>StuArr[i].sex;
        std::cout<<"年龄:";
        std::cin>>StuArr[i].age;
        std::cout<<"年级:";
        std::cin>>StuArr[i].grade;

        std::cout<<"英语:";
        std::cin>>StuArr[i].English;
        std::cout<<"数学:";
        std::cin>>StuArr[i].Math;
        std::cout<<"语文:";
        std::cin>>StuArr[i].Chinese;
        std::cout<<"物理:";
        std::cin>>StuArr[i].Physics;
    }
}
int main()
{
    StudentInfo ss;
    GetInfoFromKeyboard(ss.student,MAX);//录入信息
    std::cout<<"录入学生信息如下:\n";
    show(ss.student,MAX);
    Calculate(ss.student,MAX);//计算10个学生各自的总分与平均分
    aver(ss,MAX);//每门课的平均分
    std::cout<<"录入学生信息统计如下:\n";
    show(ss.student,MAX);

    SortByTotal(ss.student,MAX);
    std::cout<<"录入学生信息排序如下:\n";
    show(ss.student,MAX);
    return 0;
}
2016-03-11 11:26
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
收藏
得分:4 
还是wengbin版主有耐心
2016-03-11 12:35
wengbin
Rank: 10Rank: 10Rank: 10
来 自:陕西西安
等 级:贵宾
威 望:19
帖 子:370
专家分:1846
注 册:2015-5-8
收藏
得分:0 
回复 5楼 yangfrancis
谁让我也是菜鸟呢,就当练习了
2016-03-11 14:57
清风先生
Rank: 1
等 级:新手上路
帖 子:2
专家分:4
注 册:2015-8-18
收藏
得分:4 
楼上真有耐心
2016-03-12 21:52
lswdcyy
Rank: 1
等 级:新手上路
帖 子:1
专家分:4
注 册:2015-4-26
收藏
得分:4 
2016-03-15 23:12
快速回复:C++,关于数组与结构体的结合。初学者,谢谢
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021189 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved