结构体的应用(c++)

结构体是由一批数据组合而成的一种新的数据类型。组成结构数据的每个数据称为结构型数据的“成员”。

结构体是C语言中一种重要的数据类型,该数据类型由一组称为成员(或称为域,或称为元素)的不同数据组成,其中每个成员可以具有不同的类型。结构体通常用来表示类型不同但是又相关的若干数据。

结构体类型不是由系统定义好的,而是需要程序设计者自己定义的。C语言提供了关键字struct来标识所定义的结构体类型。

关键字struct和结构体名组合成一种类型标识符,其地位如同通常的int、char等类型标识符,其用途就像 int 类型标识符标识整型变量一样可以用来定义结构体变量。定义变量以后,该变量就可以像定义的其他变量一样使用了;成员又称为成员变量,它是结构体所包含的若干个基本的结构类型,必须用“{}”括起来,并且要以分号结束,每个成员应表明具体的数据类型。

其格式为:

struct{

        变量类型 变量名;

}(在这可以加个数组);

下面来几到练习题吧!

1.

考试结束后,同学们的成绩都不一样,知道了学生的考号以及分数,找出谁是第N名

输入描述

第一行有两个整数,分别是学生的人数m(1≤m≤100),和求第N名学生的(1≤N≤m)。 其后有m行数据,每行包括一个学号(整数)和一个成绩(浮点数),中间用一个空格分隔。

输出描述

输出第N名学生的学号和成绩,中间用空格分隔。

答案:

#include<bits/stdc++.h>
using namespace std;
struct student{
       int name;
       double chengji ;
}z[105],t;
int main(){
    int m,n;
    cin>>m>>n;
    for(int i=1;i<=m;i++){
        cin>>z[i].name>>z[i].chengji;
    }
    for(int i=1;i<=m-1;i++){
        for(int j=i+1;j<=m;j++){
            if(z[i].chengji<z[j].chengji){
                t=z[j];
                z[j]=z[i];
                z[i]=t;
            }
        }
    }
    cout<<z[n].name<<" "<<z[n].chengji;
    return 0;
}

2.我们知道,景点排队的时候都有优先通道,方便老人不用长时间的等待。请你编写一个程序,将排队的人按照以下原则排出入场的先后顺序: 1. 老年人(年龄 >= 60岁)比非老年人优先入场。2. 老年人按年龄从大到小的顺序入场,年龄相同的按登记的先后顺序入场。 3. 非老年人按登记的先后顺序入场。

输入描述

第1行,输入一个小于100的正整数,表示排队的人数;
后面按照登记的先后顺序,每行输入一个排队人员的信息,包括:一个长度小于10的字符串表示排队的人的ID(每个人的ID各不相同且只含数字和字母),一个整数表示排队的人的年龄,中间用单个空格隔开。

输出描述

按排好的顺序输出每个人的ID,每行一个。

答案:

#include<bits/stdc++.h>
using namespace std;
struct student{
        string id;
        int a;
        int num;
}o[105],y[105],t;
int main(){
    string s;
    int n,age,p=0,q=0;
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>s;
        cin>>age;
        if(age>=60){
           ++p;
           o[p].id=s;
           o[p].a=age;
           o[p].num=i;
        }
        else{
            ++q;
            y[q].id=s;
            y[q].a=age;
            y[q].num=i;
        }
    }
    for(int i=1;i<p;i++){
        for(int j=i+1;j<=p;j++){
            if(o[i].a<o[j].a){
                t=o[i];
                o[i]=o[j];
                o[j]=t;
            }
            else if(o[i].a==o[j].a&&o[i].num>o[j].num){
                t=o[i];
                o[i]=o[j];
                o[j]=t;
            }
        }
    }
    for(int i=1;i<=p;i++){
        cout<<o[i].id<<endl;
    }
    for(int i=1;i<=q;i++){
        cout<<y[i].id<<endl;
    }
    return 0;
}

会了吗?

猜你喜欢

转载自blog.csdn.net/ruirui118/article/details/120275667