精华内容
下载资源
问答
  • 宿舍谁最高

    千次阅读 2020-04-07 20:43:15
    现给出宿舍列表,请找出每个宿舍最高的同学。定义一个学生类Student,有身高height,体重weight等 。 输入格式: 首先输入一个整型数n (1<=n<=1000000),表示n位同学。 紧跟着n行输入,每一行格式为:宿舍号,...

    学校选拔篮球队员,每间宿舍最多有4个人。现给出宿舍列表,请找出每个宿舍最高的同学。定义一个学生类Student,有身高height,体重weight等


    输入格式:
    首先输入一个整型数n (1<=n<=1000000),表示n位同学。
    紧跟着n行输入,每一行格式为:宿舍号,name,height,weight。
    宿舍号的区间为[0,999999], name 由字母组成,长度小于16,height,weight为正整数。
    输出格式:
    按宿舍号从小到大排序,输出每间宿舍身高最高的同学信息。题目保证每间宿舍只有一位身高最高的同学。
    输入样例:
    7
    000000 Tom 175 120
    000001 Jack 180 130
    000001 Hale 160 140
    000000 Marry 160 120
    000000 Jerry 165 110
    000003 ETAF 183 145
    000001 Mickey 170 115

    输出样例:
    000000 Tom 175 120
    000001 Jack 180 130
    000003 ETAF 183

    分析:对于name,可以定义为string类型,需要包含string的头文件,长度小于16,刚好可以用size判断name长度的大小,后运用if语句。 因为按宿舍号从小到大排序 并且输出宿舍身高最高的同学信息,map容器最合适,切输出结果是排序后的。

    #include <iostream>
    #include <string>
    #include <map>
    #include <iomanip>
    #include <stdlib.h>
    using namespace std;
    class Student
    {
    public:
        int dormitory;
        string name;
        int height;
        int weight;
    };
    int main()
    {
       int n;    //n 表示需要输入几个同学的信息
       cin>>n;
       int size=0;
       while(n<0||n>1000000)
       {
           cout<<"error,please input again"<<endl;
           cin>>n;
           continue;
       }
       Student *stus=new Student[n];
       map<int,Student>stu_map; //记录每个宿舍身高最高的学生信息
       // int 是dormitory宿舍的类型,Student是学生类
       for(int i=0;i<n;i++)
       {
           cin>>stus[i].dormitory>>stus[i].name>>stus[i].height
           >>stus[i].weight;
           size=stus[i].name.size();
           if(size>16)  //判断name大小,此时name长度需要小于16
            exit(1);
             if(stu_map[stus[i].dormitory].height<stus[i].height)
            //同一个宿舍升高比较,进行替换
           {
               stu_map[stus[i].dormitory].height=stus[i].height;
               stu_map[stus[i].dormitory].name=stus[i].name;
               stu_map[stus[i].dormitory].weight=stus[i].weight;
           }
       }
        for(map<int,Student>::iterator iter=stu_map.begin();
       iter!=stu_map.end();iter++)
       {
           cout<<setfill('0')<<setw(6)<<iter->first<<" ";
           cout<<iter->second.name<<" "<<iter->second.height<<" "
           <<iter->second.weight<<endl;
       }
    }
      
     }
    

    补充:

    **String 类型 的用法(含string类型长度求解)

    #include
    #include
    using namespace std;
    int main ()
    {
    int size = 0;
    int length = 0;
    unsigned long maxsize = 0;
    int capacity=0;
    string str (“12345678”);
    string str_custom;
    str_custom = str;
    str_custom.resize (5);
    size = str_custom.size();
    length = str_custom.length();
    maxsize = str_custom.max_size();
    capacity = str_custom.capacity();
    cout << "size = " << size << endl;
    cout << "length = " << length << endl;
    cout << "maxsize = " << maxsize << endl;
    cout << "capacity = " << capacity << endl;
    return 0;
    }
    在这里插入图片描述

    展开全文
  • PTA:宿舍谁最高

    千次阅读 2019-03-14 16:39:55
    PTA——宿舍谁最高7-1 宿舍谁最高? (20 分) 学校选拔篮球队员,每间宿舍最多有4个人。现给出宿舍列表,请找出每个宿舍最高的同学。定义一个学生类Student,有身高height,体重weight等。 输入格式: 首先输入一个...

    PTA——宿舍谁最高7-1 宿舍谁最高? (20 分)

    学校选拔篮球队员,每间宿舍最多有4个人。现给出宿舍列表,请找出每个宿舍最高的同学。定义一个学生类Student,有身高height,体重weight等。

    输入格式:

    首先输入一个整型数n (1<=n<=1000000),表示n位同学。
    紧跟着n行输入,每一行格式为:宿舍号,name,height,weight。
    宿舍号的区间为[0,999999], name 由字母组成,长度小于16,height,weight为正整数。

    输出格式:

    按宿舍号从小到大排序,输出每间宿舍身高最高的同学信息。题目保证每间宿舍只有一位身高最高的同学。

    输入样例:

    7
    000000 Tom 175 120
    000001 Jack 180 130
    000001 Hale 160 140
    000000 Marry 160 120
    000000 Jerry 165 110
    000003 ETAF 183 145
    000001 Mickey 170 115
    

    输出样例:

    000000 Tom 175 120
    000001 Jack 180 130
    000003 ETAF 183 145
    

    wa :

    #include<iostream>
    #include<string>
    using namespace std;
    class student
    {
    	public:
    		float fight;
    		float weight;
    		string num;
    		string name;
    	public:
    		void input();
    		void output();
    };
    void student::input()
    {
        cin>>num>>name>>fight>>weight;
        getchar();
    }
    void student::output()
    {
        cout<<num<<" "<<name<<" "<<fight<<" "<<weight<<endl ;
    }
    void sort(student *c,int n)
    {
    	student temp;
    	
    	for(int i=0;i<n-1;++i)
    	{
    		for(int j=i;j<n-1-i;++j)
    		{
    		   if(c[j].num>c[j+1].num)
    		   {
    			  temp=c[j];
    			  c[j]=c[j+1];
    			  c[j+1]=temp;
    		   }
    		}
    	}
    }
    student sorts(student *c,int z,int n)
    {
        student temp=c[z];
    	for(int i=z+1;i<n+z;++i)
    	{
    		if(c[i].fight>temp.fight)
    		{
    			temp=c[i];
    		}
    	}
    	return temp;
    }
    int main()
    {
    	int n,i;
    	student *std=NULL;
    	cin>>n;
    	getchar();
    	std = new student[n+1];
    	
    	//cout<<"hello"<<endl;
    	for(i=0;i<n;++i)
    	{
    		std[i].input();
    	}
    	std[i].name ="0000";
    	std[i].num ="-9999";
    	std[i].fight=-99;
    	std[i].weight =-99;
    	if(n>1)
    	{
            sort(std,n);
    		student temp;
    		int  flag=1;
    		for(i=0;i<n;++i)
    		{
    			if(std[i].num ==std[i+1].num )
    			{
    			   	flag++;
    			}
    			else
    			{
    	              temp=sorts(std,i-flag+1,flag);
    				  temp.output();
    				  flag=1;
    			}
          	}
        }
    	else
    	{
    		std[0].output();
    	}
     	return 0;
    }

    一开始采用string来存放宿舍号其实是不对的,比如:宿舍号为"1"与“23”的,如果输入“1”,“023”,则 “1”>“23”

    AC:

    #include<iostream>
    #include<string>
    #include<stdio.h>
    #include<iomanip>
    using namespace std;
    class student
    {
    	public:
    		float fight;
    		float weight;
    		int  num;
    		string name;
    	public:
    		void input();
    		void output();
    };
    void student::input()
    {
        cin>>num>>name>>fight>>weight;
        getchar();
    }
    void student::output()
    {
        cout<<setw(6)<<setfill('0')<<num;
        cout<<" "<<name<<" "<<fight<<" "<<weight<<endl ;
    }
    void sort(student *c,int n)
    {
    	student temp;
    
    	for(int i=0;i<n-1;++i)
    	{
    		for(int j=i;j<n-1-i;++j)
    		{
    		   if(c[j].num>c[j+1].num)
    		   {
    			  temp=c[j];
    			  c[j]=c[j+1];
    			  c[j+1]=temp;
    		   }
    		}
    	}
    }
    student sorts(student *c,int z,int n)
    {
        student temp=c[z];
    	for(int i=z+1;i<n+z;++i)
    	{
    		if(c[i].fight>temp.fight)
    		{
    			temp=c[i];
    		}
    	}
    	return temp;
    }
    int main()
    {
    	int n,i;
    	student *std=NULL;
    	cin>>n;
    	getchar();
    	std = new student[n+1];
    
    	//cout<<"hello"<<endl;
    	for(i=0;i<n;++i)
    	{
    		std[i].input();
    	}
    	std[i].name ="0000";
    	std[i].num =-99999;
    	std[i].fight=-99;
    	std[i].weight =-99;
    	if(n>1)
    	{
            sort(std,n);
    		student temp;
    		int  flag=1;
    		for(i=0;i<n;++i)
    		{
    			if(std[i].num ==std[i+1].num )
    			{
    			   	flag++;
    			}
    			else
    			{
    	              temp=sorts(std,i-flag+1,flag);
    				  temp.output();
    				  flag=1;
    			}
          	}
        }
    	else
    	{
    		std[0].output();
    	}
     	return 0;
    }
    

    another:使用map进行存放,可以直接省略掉sort()函数(在我们插入<key, value>键值对时,map就会自动按照key的大小顺序进行存储)

    PTA——宿舍谁最高

    展开全文
  • PTA——宿舍谁最高

    千次阅读 2017-04-27 16:14:02
    -14 宿舍谁最高? (20分) 学校选拔篮球队员,每间宿舍最多有4个人。现给出宿舍列表,请找出每个宿舍最高的同学。定义一个学生类Student,有身高height,体重weight等。 输入格式: 首先输入一个整型数n (1 ...
    -14 宿舍谁最高?   (20分)
    

    学校选拔篮球队员,每间宿舍最多有4个人。现给出宿舍列表,请找出每个宿舍最高的同学。定义一个学生类Student,有身高height,体重weight等。

    输入格式:

    首先输入一个整型数n (1<=n<=1000000),表示n位同学。
    紧跟着n行输入,每一行格式为:宿舍号,name,height,weight。
    宿舍号的区间为[0,999999], name 由字母组成,长度小于16,height,weight为正整数。

    输出格式:

    按宿舍号从小到大排序,输出每间宿舍身高最高的同学信息。题目保证每间宿舍只有一位身高最高的同学。



    输入样例:

    7
    000000 Tom 175 120 
    000001 Jack 180 130
    000001 Hale 160 140
    000000 Marry 160 120
    000000 Jerry 165 110
    000003 ETAF 183 145
    000001 Mickey 170 115
    

    输出样例:

    000000 Tom 175 120 
    000001 Jack 180 130
    000003 ETAF 183 145
    
    
    分析:刚开始用string负责宿舍号但是wa了,后来发现要求是6位整数补齐,用map轻松搞定,没有必要排序
    
    
    #include <bits/stdc++.h>
    
    using namespace std;
    
    struct node
    {
        string name;
    
        int h;
    
        int w;
    
        node()
        {
            h=-1;
            w=-1;
        }
    };
    
    node a[1000005];
    
    map<int,node> mp;
    
    int main()
    {
        int n;
    
        cin>>n;
    
        int e;
    
        for(int i=0;i<n;i++)
        {
            cin>>e;
    
            cin>>a[i].name>>a[i].h>>a[i].w;
    
            if(mp[e].h<a[i].h )
            {
                 mp[e]=a[i];
            }
    
        }
    
        map<int,node> :: iterator it;
    
        int cnt1=mp.size();
        int cnt=0;
    
        for(it=mp.begin();it!=mp.end();it++)
        {
            cnt++;
    
            int num=it->first;
    
            printf("%06d",num);
    
            cout<<' '<<(it->second).name<<' '<<(it->second).h<<' '<<(it->second).w;
            if(cnt!=cnt1) cout<<endl;
        }
    
        return 0;
    }
    

    展开全文
  • 宿舍谁最高? (15分)

    2021-01-31 15:29:36
    宿舍谁最高? (15分) 学校选拔篮球队员,每间宿舍最多有4个人。现给出宿舍列表,请找出每个宿舍最高的同学。定义一个学生类Student,有身高height,体重weight等。 输入格式: 首先输入一个整型数n (1<=n<=...

    宿舍谁最高? (15分)

    学校选拔篮球队员,每间宿舍最多有4个人。现给出宿舍列表,请找出每个宿舍最高的同学。定义一个学生类Student,有身高height,体重weight等。

    输入格式:
    首先输入一个整型数n (1<=n<=1000000),表示n位同学。
    紧跟着n行输入,每一行格式为:宿舍号,name,height,weight。
    宿舍号的区间为[0,999999], name 由字母组成,长度小于16,height,weight为正整数。

    输出格式:
    按宿舍号从小到大排序,输出每间宿舍身高最高的同学信息。题目保证每间宿舍只有一位身高最高的同学。

    输入样例:
    7
    000000 Tom 175 120
    000001 Jack 180 130
    000001 Hale 160 140
    000000 Marry 160 120
    000000 Jerry 165 110
    000003 ETAF 183 145
    000001 Mickey 170 115
    输出样例:
    000000 Tom 175 120
    000001 Jack 180 130
    000003 ETAF 183 145

    C(gcc 6.5.0):

    #include<stdio.h>
    #include<string.h>
    struct people{
        int number;
        char name[16];
        int h;
        int tz;
    }p[1000000],stu;//创建学生的结构体包括宿舍号number,姓名name,身高h,体重tz;
    
    int main(){
        int n,max;
        scanf("%d",&n);
        for(int i=0;i<=999999;i++){
            p[i].number=i;
            p[i].h=0;
            p[i].tz=0;//将所有宿舍号的学生的身高体重初始化为0;
        }
        for(int i=0;i<n;i++){
            scanf("%d %s %d %d",&stu.number,&stu.name,&stu.h,&stu.tz);
            if(stu.h>p[stu.number].h){//相同的宿舍号进行比较,p[stu.number]中的stu.number是宿舍号,输入的相同的宿舍号数组p就是一个宿舍里的;          
                p[stu.number].h=stu.h;//身高传入数组p中;
                p[stu.number].tz=stu.tz;//体重传入数组p中;
                strcpy(p[stu.number].name,stu.name);//复制姓名
            }
        }
        for(int i=0;i<=999999;i++){
            if(p[i].h!=0)
                printf("%06d %s %d %d\n",p[i].number,p[i].name,p[i].h,p[i].tz);
        }
        return 0;
    }
    
    展开全文
  • 7-10 宿舍谁最高? (20分) 学校选拔篮球队员,每间宿舍最多有4个人。现给出宿舍列表,请找出每个宿舍最高的同学。定义一个学生类Student,有身高height,体重weight等。 输入格式: 首先输入一个整型数n (1<=n<...
  • 宿舍谁最高?

    千次阅读 2019-03-14 22:13:09
    现给出宿舍列表,请找出每个宿舍最高的同学。定义一个学生类Student,有身高height,体重weight等。 输入格式: 首先输入一个整型数n (1&lt;=n&lt;=1000000),表示n位同学。 紧跟着n行输入,每一行格式为:...
  • PTA 7-1宿舍谁最高? 这是一个菜鸡的挣扎过程!!不要嫌弃本辣鸡55555 输入格式: 首先输入一个整型数n (1<=n<=1000000),表示n位同学。 紧跟着n行输入,每一行格式为:宿舍号,name,height,weight。 宿舍号的...
  • 7-1 宿舍谁最高? (20分) 学校选拔篮球队员,每间宿舍最多有4个人。现给出宿舍列表,请找出每个宿舍最高的同学。定义一个学生类Student,有身高height,体重weight等。 输入格式: 首先输入一个整型数n (1<=n<=...
  • 7-1 宿舍谁最高? (20 分)

    千次阅读 2019-09-25 21:40:16
    7-1 宿舍谁最高? (20 分) 学校选拔篮球队员,每间宿舍最多有4个人。现给出宿舍列表,请找出每个宿舍最高的同学。定义一个学生类Student,有身高height,体重weight等。 输入格式: 首先输入一个整型数n (1<=n<...
  • 7-3 宿舍谁最高? (10分) 学校选拔篮球队员,每间宿舍最多有4个人。现给出宿舍列表,请找出每个宿舍最高的同学。定义一个学生类Student,有身高height,体重weight等。 输入格式: 首先输入一个整型数n (1<=n<=...
  • 7-4 宿舍谁最高? (20 分)

    千次阅读 2019-03-19 11:33:45
    7-4 宿舍谁最高? (20 分) 学校选拔篮球队员,每间宿舍最多有4个人。现给出宿舍列表,请找出每个宿舍最高的同学。定义一个学生类Student,有身高height,体重weight等。 输入格式: 首先输入一个整型数n (1<=n<...
  • 宿舍谁最高

    千次阅读 2015-05-29 09:47:30
    现给出宿舍列表,请找出每个宿舍最高的同学。定义一个学生类Student,有私有成员身高height,体重weight等。 Input Specification: 题目首先输入一个整型数n (1 Output Specification: 对于每一间宿舍,请找出...
  • 7-1 宿舍谁最高

    2021-04-20 16:19:15
    现给出宿舍列表,请找出每个宿舍最高的同学。定义一个学生类Student,有身高height,体重weight等。 输入格式: 首先输入一个整型数n (1<=n<=1000000),表示n位同学。 紧跟着n行输入,每一行格式为:宿舍号,...
  • 7-4 宿舍谁最高? (20 分) 学校选拔篮球队员,每间宿舍最多有4个人。现给出宿舍列表,请找出每个宿舍最高的同学。定义一个学生类Student,有身高height,体重weight等。 输入格式: 首先输入一个整型数n (1<=n<...
  • 7-8宿舍谁最高?(25分) 学校选拔篮球队员,每间宿舍最多有4个人。现给出宿舍列表,请找出每个宿舍最高的同学。定义一个学生类Student,有身高height,体重weight等。 输入格式: 首先输入一个整型数n (1&lt;=...
  • PTA测试题:7-2 宿舍谁最高? (20分) 输出格式: 按宿舍号从小到大排序,输出每间宿舍身高最高的同学信息。题目保证每间宿舍只有一位身高最高的同学。 输入样例: 7 000000 Tom 175 120 000001 Jack 180 130 000001 ...
  • 宿舍谁最高? (20分)

    千次阅读 2020-03-15 16:46:46
    现给出宿舍列表,请找出每个宿舍最高的同学。定义一个学生类Student,有身高height,体重weight等。 输入格式: 首先输入一个整型数n (1<=n<=1000000),表示n位同学。 紧跟着n行输入,每一行格式为:宿舍号,...
  • 7-9 宿舍谁最高? (20 分) 学校选拔篮球队员,每间宿舍最多有4个人。现给出宿舍列表,请找出每个宿舍最高的同学。定义一个学生类Student,有身高height,体重weight等。 输入格式: 首先输入一个整型数n (1<=n<...
  • PTA:7-6 宿舍谁最高

    千次阅读 2020-02-15 22:59:12
    现给出宿舍列表,请找出每个宿舍最高的同学。定义一个学生类Student,有身高height,体重weight等。 输入格式: 首先输入一个整型数n (1<=n<=1000000),表示n位同学。 紧跟着n行输入,每一行格式为:宿舍号,...
  • 现给出宿舍列表,请找出每个宿舍最高的同学。定义一个学生类Student,有身高height,体重weight等。 输入格式: 首先输入一个整型数n (1<=n<=1000000),表示n位同学。 紧跟着n行输入,每一行格式为:宿舍号,...

空空如也

空空如也

1 2 3 4
收藏数 74
精华内容 29
关键字:

宿舍谁最高