欢迎使用本站,预祝练习时长两年半的选手们到成功! [本模块信息来自tem/def/head]

dxw 结构体

时间:2024-05-11 15:13 作者:admin 点击:
#include iostream using namespace std; 输入:n 学生人数 接下来输入n行 每行有一个字符串和三个整数,分别代表学生名字,语文、数学、英语成绩 输出:按照三科总分从大到小输出学生的名字

#include <iostream>

using namespace std;


输入:n 学生人数

接下来输入n行

每行有一个字符串和三个整数,分别代表学生名字,语文、数学、英语成绩


输出:按照三科总分从大到小输出学生的名字,空格隔开


int n;

string name[100000];

int a[100000],b[100000],c[100000];

int z[100000];

int main() {

   cin>>n;

   for(int i=0;i<n;i++){

       cin>>name[i]>>a[i]>>b[i]>>c[i];

       z[i]=a[i]+b[i]+c[i];

   }

   for(int i=0;i<n;i++){

       for(int j=0;j<n;j++){

           if(z[j]<z[j+1]){

               swap(z[j],z[j+1]);

               swap(name[j],name[j+1]);

           }

       }

   }

   for(int i=0;i<n;i++) cout<<name[i]<<" ";

   return 0;

}


结构体:

新建类型的功能


struct 类名{

   具体的属性:性质

   具体的功能:能力

};





struct stu{

   string name;

   int a,b,c;

   int z;

   void speak(string s){

       cout<<"我说"<<s;

   }

};

int n;

int main(){

   //stu a;a.speak("玩");

   stu b[10000];

   cin>>n;

   for(int i=0;i<n;i++){

       cin>>b[i].name>>b[i].a>>b[i].b>>b[i].c;

       b[i].z=b[i].a+b[i].b+b[i].c;

   }

   for(int i=0;i<n;i++){

       for(int j=0;j<n;j++){

           if(b[j].z<b[j+1].z){

               swap(b[j],b[j+1]);

           }

       }

   }

   for(int i=0;i<n;i++){

       cout<<b[i].name<<" ";

   }

   return 0;

}

bool cmp(int a,int b){

   return a>b;//返回值返回的是什么情况下第一个参数排放在第二个参数的前边

}

int main(){

   int a[5]={5,3,7,2,8};

   //sort(地址开始,地址结尾+1);//排序函数 默认从小到大

   sort(a,a+5);

   //sort(地址开始,地址结尾+1,规则);//排序函数 按照规则排序

   sort(a,a+5,cmp);//根据cmp定义的方式排序

   sort的使用限制:必须是它默认会比较的

}




struct stu{

   string s;

   int a,b,c;

};

bool cmp(stu a,stu b){

   return a.a+a.b+a.c>b.a+b.b+b.c;

}

int main(){

   int n;

   stu b[10000];

   cin>>n;

   for(int i=0;i<n;i++){

       cin>>b[i].s>>b[i].a>>b[i].b>>b[i].c;

   }

   sort(b,b+n,cmp);//algorithm

   //for()输出

   return 0;

}

输入5个人

姓名,年,月,日

按照年龄从大到小输出名字

struct stu{

   string s;

   int y,m,d;

};

bool cmp(stu a,stu b){

   if(a.y!=b.y) return a.y<b.y;

   if(a.m!=b.m) return a.m<b.m;

   if(a.d!=b.d) return a.d<b.d;

   return a.s<b.s;

}

int main(){

   int n;

   stu b[10000];

   cin>>n;

   for(int i=0;i<n;i++){

       cin>>b[i].s>>b[i].y>>b[i].m>>b[i].d;

   }

   sort(b,b+n,cmp);//algorithm

   //for()输出

   return 0;

}

练习:

输入5个学生的名字,月,日

输出同月同日生的同学输出在一行

多行输出按照生日从小到大,名字按照从小到大

格式如下:

A 5 4

B 5 4

C 3 2

D 4 12

E 3 2


C E

D

A B

sort(开头地址,结尾地址+1);

sort(开头地址,结尾地址+1,规则);


int a[10]={1,2,3,4,5,6,7,8,9,10};

排序:sort(a+3,a+8,cmp);//cmp是从大到小的规则

输出:1 2 3 8 7 6 5 4 9 10


自带比较(了解即可)

struct stu{

   string name;

   int a,b,c;

   bool operator<(stu &g){

       return a>g.a;

   }

};









//struct class  union

(责任编辑:admin)
    顶一下
    (0)
    0%
    踩一下
    (0)
    0%