每个测试输入包含1个测试用例,格式为
第1行:正整数n
第2行:第1个学生的姓名 学号 成绩
第3行:第2个学生的姓名 学号 成绩
... ... ...
第n+1行:第n个学生的姓名 学号 成绩
其中姓名和学号均为不超过10个字符的字符串,成绩为0到100之间的一个整数,这里保证在一组测试用例中没有两个学生的成绩是相同的。
对每个测试用例输出2行,第1行是成绩最高学生的姓名和学号,第2行是成绩最低学生的姓名和学号,字符串间有1空格。
3<br/>Joe Math990112 89<br/>Mike CS991301 100<br/>Mary EE990830 95
Mike CS991301<br/>Joe Math990112
#include<iostream> #include<string> using namespace std; int main() { int n;//人数 int i = 0; string name;//临时姓名 string id;//临时学号 int score, maxscore = 0, minscore = 100;//score临时分数 string max_name_id, min_name_id;//max_name_id最高分数对应的姓名和学号 cin >> n; for (i = 0; i < n; i++) { cin >> name >>id >>score; if (score >= maxscore)//找最高分 { maxscore =score; max_name_id = name + ' ' + id;//姓名和学号放在一个字符变量里,之间添加一个空格 } if (score <= minscore)//找最低分 { minscore = score; min_name_id = name + ' ' + id; } } cout <<max_name_id << endl << min_name_id; return 0; }
#include "bits/stdc++.h" using namespace std; #define MAX 10000 struct student { char id[100]; float score; char name[100]; } stu[MAX]; bool cmp(struct student a,struct student b) { return a.score>b.score; } int main() { int n,i=0; cin>>n; for(i=0; i<n; i++) { cin>>stu[i].name>>stu[i].id>>stu[i].score; } sort(stu,stu+n,cmp); cout<<stu[0].name<<" "<<stu[0].id<<endl; cout<<stu[n-1].name<<" "<<stu[n-1].id<<endl; return 0; }
import java.util.ArrayList; import java.util.Collections; import java.util.Scanner; public class Main implements Comparable<Main>{ String name; String number; int score; public Main(String name, String number, int score) { super(); this.name = name; this.number = number; this.score = score; } public static void main(String[] args) { Scanner in=new Scanner(System.in); int n=in.nextInt(); ArrayList<Main> array=new ArrayList<Main>(); while(n-->0){ Main main=new Main(in.next(),in.next(),in.nextInt()); array.add(main); } Collections.sort(array); System.out.println(array.get(0).name+" "+array.get(0).number); System.out.println(array.get(array.size()-1).name+" "+array.get(array.size()-1).number); } public int compareTo(Main o) { return o.score-this.score; } }
#include <stdio.h> #include <string.h> typedef struct Student{ char name[11]; char num[11]; int score; }Student; int main() { int i,n; struct Student Student[2]; Student[0].score=-1; Student[1].score=101; scanf("%d",&n); for(i=0;i<n;i++){ char name[11],num[11]; int score; scanf("%s %s %d",name,num,&score); if(score>Student[0].score){ strcpy(Student[0].name,name); strcpy(Student[0].num,num); Student[0].score=score; } if(score<Student[1].score){ strcpy(Student[1].name,name); strcpy(Student[1].num,num); Student[1].score=score; } } printf("%s %s\n",Student[0].name,Student[0].num); printf("%s %s",Student[1].name,Student[1].num); return 0; }
#include <stdio.h> #include <string.h> int main(){ int n,i,j,chengji; char name[10],xuehao[10]; char a[10001][11],b[10001][11]; int c[10001]; scanf("%d",&n); for(i=0;i<n;i++){ scanf("%s%s%d",name,xuehao,&chengji); for(j=0;j<strlen(name);j++){ a[i][j]=name[j]; } for(j=0;j<strlen(xuehao);j++){ b[i][j]=xuehao[j]; } c[i]=chengji; } int max=c[0],min=c[0]; int MAX=0,MIN=0; for(i=0;i<n;i++){ if(c[i]>max){ max=c[i];MAX=i; } if(c[i]<min){ min=c[i];MIN=i; } } printf("%s %s\n",a[MAX],b[MAX]); printf("%s %s\n",a[MIN],b[MIN]); }求dl帮忙看看,样例本地输出无误,但上传后却说答案错误,不知道哪个细节没注意到
import java.util.*; public class Main{ public static void main(String[] args){ Scanner sc=new Scanner(System.in); while(sc.hasNext()){ int n=sc.nextInt(); ArrayList<Student> list=new ArrayList<Student>(); for(int i=0;i<n;i++){ String name=sc.next(); String course=sc.next(); int score=sc.nextInt(); Student student=new Student(name,course,score); list.add(student); } Collections.sort(list, new Comparator<Student>() { @Override public int compare(Student o1, Student o2) { if(o1.score<o2.score){ return -1; }else if(o1.score>o2.score){ return 1; }else{ return 0; } } }); System.out.println(list.get(list.size()-1).name+" "+list.get(list.size()-1).course); System.out.println(list.get(0).name+" "+list.get(0).course); } } } class Student { String name; String course; int score; public Student(String name,String course,int score){ this.name=name; this.course=course; this.score=score; } }
// 每次输入比较分数,大于最高分则赋予最大值,小于最小值则赋予最小值 #include <iostream>
#include <string>
using namespace std;
int main()
{
int n;
string name, IDNum;
int score;
string max_name, max_IDNum, min_name, min_IDNum;
int max_score, min_score;
max_score = 0;
min_score = 100;
cin>>n;
while(n--)
{
cin>>name>>IDNum>>score;
if (score > max_score)
{
max_score = score;
max_name = name;
max_IDNum = IDNum;
}
if (score < min_score)
{
min_score = score;
min_name = name;
min_IDNum = IDNum;
}
}
cout<<max_name<<' '<<max_IDNum<<endl;
cout<<min_name<<' '<<min_IDNum<<endl;
system("pause");
return 0;
}
__author__ = 'Yaicky' while True: try: n = input() highmarks = [] lowmarks = [] highmark = -1 lowmark = 101 for i in range(n): string = raw_input().strip().split() if int(string[2]) < lowmark: lowmarks.append([string[0], string[1]]) lowmark = int(string[2]) if int(string[2]) > highmark: highmarks.append([string[0], string[1]]) highmark = int(string[2]) rltStr = highmarks.pop() print ' '.join(rltStr) rltStr = lowmarks.pop() print ' '.join(rltStr) except: break
#include<bits/stdc++.h> using namespace std; const int Max=1001; struct Student{ string name; string id; int score; bool operator <(const Student & a){ return score>a.score; } }s[Max]; int main(){ int n; cin>>n; for(int i=0;i<n;i++){ cin>>s[i].name>>s[i].id>>s[i].score; } sort(s,s+n); cout<<s[0].name<<" "<<s[0].id<<endl; cout<<s[n-1].name<<" "<<s[n-1].id<<endl; return 0; }
水题吧,砍瓜切菜。。。
记录最大、最小得分,如果超过了两个界限值,更新记录的信息即可。
#include <iostream> (720)#include <cstring> using namespace std; int main() { //最大分数、最小分数,注意初始化赋值 int n = 0, maxScore = 0, minScore = 100, score = 0; //最大得分者的name、no、最小得分者的name、no char maxName[11], maxNo[11], minName[11], minNo[11], name[11], no[11]; scanf("%d", &n); for (int i = 0; i < n; ++i) { scanf("%s %s %d", name, no, &score); if (score > maxScore) { //超过了已有的最大分数,更新 maxScore = score; strcpy(maxName, name); strcpy(maxNo, no); } if (score < minScore) { //小于已有的最小得分,更新 minScore = score; strcpy(minName, name); strcpy(minNo, no); } } printf("%s %s\n%s %s\n", maxName, maxNo, minName, minNo); return 0; } ———————————————— 版权声明:本文为CSDN博主「hestyle」的原创文章,遵循 CC 4.0 BY 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://hestyle.blog.csdn.net/article/details/104754806
#include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX 65535 typedef struct student { char name[20]; char no[20]; int grade; }STU; STU stu[MAX]; int cmp(const void* a, const void* b) { STU *stu1 = (STU*) a; STU *stu2 = (STU*) b; return (stu2->grade - stu1->grade); } int main() { int n; while(~scanf("%d", &n)) { for(int i = 0; i < n; i++) scanf("%s %s %d", stu[i].name, stu[i].no, &stu[i].grade); qsort(stu, n, sizeof(stu[0]), cmp); printf("%s %s\n%s %s\n", stu[0].name, stu[0].no, stu[n-1].name, stu[n-1].no); } return 0; }
请大佬康康#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
int num, score, i, j, minscore = 101, maxscore = -1, count = 0;
char sname[10],sno[10];
char min_sname[10], max_sname[10], min_sno[10], max_sno[10];
scanf("%d",&num);
for(i = 0; i < num; i++){
scanf("%s %s %d",sname, sno, &score);
if(score>maxscore){ // 找最高分
maxscore = score;
for(j = 0; j < 10; j++){
max_sname[j] = sname[j];
max_sno[j] = sno[j];
count = j;
}
max_sname[count] = '\0';
max_sno[count] = '\0';
}
if(score<minscore){ // 找最低分
minscore = score;
for(j = 0; j < 10; j++){
min_sname[j] = sname[j];
min_sno[j] = sno[j];
count = j;
}
min_sname[count] = '\0';
min_sno[count] = '\0';
}
}
printf("%s %s\n",max_sname,max_sno);
printf("%s %s\n",min_sname,min_sno);
return 0;
}
def main(): num = int(input()) low = ['','','100'] high = ['','','0'] for i in range(num): temp = input().split() if int(temp[-1]) < int(low[-1]): low = temp if int(temp[-1]) > int(high[-1]): high = temp print(high[0],high[1]) print(low[0],low[1]) if __name__ == '__main__': main()
#include <iostream> #include <string> #include <vector> using namespace std; typedef struct student{ string name; string stn;//student'snumber int grd;//student's grade }student; int main(){ int n; cin>>n; student stud; cin>>stud.name>>stud.stn>>stud.grd; student goodstud=stud,badstud=stud; while(--n){ cin>>stud.name>>stud.stn>>stud.grd; if(stud.grd<badstud.grd)badstud=stud; if(stud.grd>goodstud.grd)goodstud=stud; } cout<<goodstud.name<<" "<<goodstud.stn<<endl; cout<<badstud.name<<" "<<badstud.stn<<endl; return 0; }
import java.util.*; /** * 成绩排名 * 利用集合的sort方法进行排序 */ public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); List<Student> list = new ArrayList<>(); for (int i = 0; i < n; i++) { list.add(new Student(scanner.next(), scanner.next(), scanner.nextInt())); } Collections.sort(list); System.out.println(list.get(0).name + " " + list.get(0).id); System.out.println(list.get(n - 1).name + " " + list.get(n - 1).id); } } class Student implements Comparable<Student> { String name; String id; Integer score; public Student(String name, String id, int score) { this.name = name; this.id = id; this.score = score; } @Override public int compareTo(Student student) { return student.score.compareTo(this.score); } }
思路: 快排的应用。 #include <iostream> #include <algorithm> #include <vector> #include <string> using namespace std; struct stu { string name; string ID; int score; }; bool Cmp(struct stu & a, struct stu & b) { return a.score > b.score; } int main() { int n; while (cin >> n) { vector<struct stu> v(n); for (int i = 0; i < n; i++) { cin >> v[i].name >> v[i].ID >> v[i].score; } sort(v.begin(), v.end(), Cmp); cout << v[0].name << " " << v[0].ID << endl; cout << v[v.size()-1].name << " " << v[v.size() - 1].ID << endl; } }
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Map<String, Integer> map = new HashMap<String, Integer>();
while(scanner.hasNext()){
int n = scanner.nextInt();
for(int i=0;i<n;i++){ String name = scanner.next(); String xh = scanner.next(); int value = scanner.nextInt(); String key = name+" "+xh; map.put(key, value); } Collection<Integer> collection = map.values();
Object[] objects = collection.toArray();
Arrays.sort(objects);
Object maxValue = objects[objects.length-1];
Object minValue = objects[0];
String maxKey = getKey(map,maxValue);
String minKey = getKey(map,minValue);
System.out.println(maxKey);
System.out.println(minKey);
}
}
private static String getKey(Map<String, Integer> map, Object value) {
String key = null;
for(String getKey:map.keySet()){
if (map.get(getKey).equals(value)) {
key = getKey;
}
}
return key;
}