概述
成绩排序是常有的需求,现在就来用c++实现一下(简洁开场)
/1.需求/
1.输入的第一行数据是学生的总数n,正整数,不会超过int的范围。
2.接下来n行格式是:学生名称 学生语文成绩 学生数学成绩 学生英语成绩
3.输出有n行,格式是:排名 学生名 学生总成绩
4.输出按排名升序排列,排名根据总成绩计算。
我们来分析一下这个需求,首先储存数据我们肯定需要数组,而这个数组的长度不定,需要让用户来定义,学生名称、学生成绩的数据类型不同,需要一个“可以同时盛放多个类型的复合类型”,排序就根据我们之前讲过的冒泡排序来排序。
/2.让用户定义长度的数组/
之前讲过普通数组的定义方式:
类型 名称[长度] = {元素1,元素2...}
有些时候,长度是一个不确定的值,这时候我们就需要使用变长数组来实现,注意,像下面的第二条语句是非法的:
类型 * 名称 = new 类型[不确定长度]// 类型 名称[不确定长度] = {...}使用数组delete[] 名称
new用于申请一些内存空间并返回他们的地址,*代表指针,它指向这块地址,注意!new必须和delete配对!
我们先定义一个用于存放学生数据的可变长数组:
#include using namespace std;int main(){ int n; cin >> n; ??? * stu = new ???[n]; delete[] stu; return 0;}
由于???这个数据类型必须要能储存多种类型的数据,所以我们要学习一种新的数据结构——结构体。
/2.结构体/
结构体的定义简直不要太简单:
struct 结构体名{ 数据类型 数据名; 数据类型 数据名; ...};
比如需要一个student结构体就可以这样定义:
struct student{ string name; int chinese; int math; int english;};
里面可以储存int类型的三个成绩和string类型的名字。
string类型和char[]类型一样,都表示字符串,不过string包含在string头文件里且没有长度限制。
那么如何创建一个结构体变量呢?很简单:
结构体名 变量名 = {数据1,数据2,数据3...};
比如给student创建一个变量piggy,name为piggy,三门分数全部为100:
student piggy = {"piggy",100,100,100};
那么如何访问结构体里的数据呢?很简单,只需要用成员操作符 . 就可以了:
cout << piggy.name << ' ' << piggy.chinese << ' ' << piggy.math << ' ' << piggy.english;
这样就输出:
piggy 100 100 100
记住,定义了一个结构体之后,要是使用这个结构体,就把这个结构体的名字当成一个类型就好了,定义结构体数组的格式如下:
普通数组:结构体名 名称[长度] = {{数据1,数据2,数据3...},{数据1,数据2,数据3...}...}变长数组:结构体名 * 名称 = new 结构体名[不确定长度]
这样就可以把上面的问号补充完整了:
student * stu = new student[n];
/3.逐个读取数据/
int n; cin >> n; student * stu = new student[n]; string na; int c,m,e; for (int i=0;i cin >> na >> c >> m >> e; stu[i].name = na; stu[i].chinese = c; stu[i].math = m; stu[i].english = e; }
在8-11行,我们动态更改了结构体(数组里的结构体)变量,格式如下:
结构体(数组里的结构体)变量名.属性名 = 值
/4.排序数据/
根据我们之前讲到过的算法,写出排序代码:
for (int i = 0;i-1;i++){ for (int j=0;j-1);j++){ if (stu[j].chinese + stu[j].math + stu[j].english < stu[j+1].chinese + stu[j+1].math + stu[j+1].english){ student tmp=stu[j]; stu[j]=stu[j+1]; stu[j+1]=tmp; } } }
接下来输入数据会输出相应排名:
今天你学废了吗源代码原文,提取码65kv。
最后
以上就是虚幻铅笔为你收集整理的c++ 字符串数组长度排序_c++实现成绩排序的全部内容,希望文章能够帮你解决c++ 字符串数组长度排序_c++实现成绩排序所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复