Openjudge-计算概论(A)-谁考了第k名

描述:

在一次考试中,每个学生的成绩都不相同,现知道了每个学生的学号和成绩,求考第k名学生的学号和成绩。

输入第一行有两个整数,分别是学生的人数n(1≤n≤100),和求第k名学生的k(1≤k≤n)。
其后有n行数据,每行包括一个学号(整数)和一个成绩(浮点数),中间用一个空格分隔。输出输出第k名学生的学号和成绩,中间用空格分隔。(注:请用%g输出成绩)样例输入

5 3
90788001 67.8
90788002 90.3
90788003 61
90788004 68.4
90788005 73.9

样例输出

90788004 68.4思路:这题要用结构体的,只需要排序一下输出就行了。代码如下(本代码是来自我的老师):
 1 #include<stdio.h>
 2 struct stu
 3 {
 4     int num;
 5     double score;
 6 };
 7 int main()
 8 {
 9     int n,k,i,j,flag;
10     struct stu a[105],t;
11     scanf("%d%d",&n,&k);
12     for(i=0;i<n;i++)
13     {
14         scanf("%d%lf",&a[i].num,&a[i].score);
15     }
16
17     for(i=1;i<n;i++)
18     {
19         flag=1;
20         for(j=0;j<n-i;j++)
21         {
22             if(a[j].score<a[j+1].score)
23             {
24                 flag=0;
25                 t=a[j];
26                 a[j]=a[j+1];
27                 a[j+1]=t;
28             }
29         }
30         if(flag) break;
31     }
32     printf("%d %g\n",a[k-1].num,a[k-1].score);
33     return 0;
34 }
时间: 2024-10-18 20:12:43

Openjudge-计算概论(A)-谁考了第k名的相关文章

01:谁考了第k名

01:谁考了第k名 查看 提交 统计 提问 总时间限制:  1000ms 内存限制:  65536kB 描述 在一次考试中,每个学生的成绩都不相同,现知道了每个学生的学号和成绩,求考第k名学生的学号和成绩. 输入 第一行有两个整数,分别是学生的人数n(1≤n≤100),和求第k名学生的k(1≤k≤n).其后有n行数据,每行包括一个学号(整数)和一个成绩(浮点数),中间用一个空格分隔. 输出 输出第k名学生的学号和成绩,中间用空格分隔.(注:请用%g输出成绩) 样例输入 5 3 90788001

【北大先修课】计算概论(A)题库全代码

题目很水就是全都是坑真是丧心病狂啊 把代码留下造福后来人QωQ 结构体与链表练习 生日相同2.0 #include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> #define MAXN 200 using namespace std; struct st { int m,d; string name; bool operator&

计算概论(A)/基础编程练习2(8题)/7:整数的个数

1 #include<stdio.h> 2 int main() { 3 int k,temp,n[3] = {0}; 4 5 // 输入k个正整数 6 scanf("%d",&k); 7 8 // 循环读入和进行算术 9 while(scanf("%d",&temp)!=EOF) { 10 switch(temp) { 11 case 1: 12 n[0]++; 13 break; 14 case 5: 15 n[1]++; 16 br

计算概论(A)/基础编程练习2(8题)/5:点和正方形的关系

1 #include<stdio.h> 2 #include<math.h> 3 int main() { 4 // 输入坐标 5 float x, y; 6 while(scanf("%f %f", &x, &y) != EOF) { 7 // 计算坐标点与原点的欧氏距离 8 float dist=sqrt(x*x+y*y); 9 10 /* 11 // 简单判断横坐标和纵坐标的截距abs(x).abs(y)和与原点距离dist 注意:abs(

计算概论(A)/基础编程练习2(8题)/1:求平均年龄

1 #include<stdio.h> 2 int main() { 3 // 声明与初始化 4 int n, count=1, s=0, age=0; 5 6 // 输入学生人数 7 scanf("%d", &n); 8 9 // 循环读入 加和 10 while(count<=n) { 11 scanf("%d",&age); 12 s+=age; 13 count++; 14 } 15 16 // 计算平均年龄输出 17 pr

计算概论(A)/基础编程练习(数据成分)/1:短信计费

1 #include<stdio.h> 2 int main() { 3 // 输入当月发送短信的总次数n和每次短信的字数words 4 int n,words; 5 scanf("%d",&n); 6 float price=0.0; 7 8 while(scanf("%d",&words)!=EOF) { 9 // 所发送的短信超过了70个字,则会按照每70个字一条短信的限制把它分割成多条短信发送 10 price+=(words%7

计算概论(A)/基础编程练习1(8题):1:大象喝水

计算概论(A)/基础编程练习1(8题)/1:大象喝水 地址:http://pkuic.openjudge.cn/base1/1/ 1 #include<stdio.h> 2 int main() { 3 /* 圆周率常数 */ 4 const float Pi = 3.14159; 5 6 /* 深h厘米 半径r厘米 均为整数 */ 7 int h, r; 8 scanf("%d %d", &h, &r); 9 10 /* 一桶水的升数 1升 = 1000毫

【分治】计算概论(A) / 函数递归练习(1)多边形游戏

1 #include<cstdio> 2 #include<algorithm> 3 using namespace std; 4 int n,ans,v[41],c[41],s[2]; 5 int work(int L,int R)//分治 6 { 7 if(L==R) return v[L]; 8 int res=0; 9 for(int i=L;i<R;i++) 10 if(c[i]=='+') res=max(res,work(L,i)+work(i+1,R)); 1

认知计算概论

前段时间的"人机大战"--谷歌的Alpha Go战胜人类棋手的新闻甚嚣尘上,不禁有人会想起1997年IBM自主研发的深蓝战胜卡斯帕罗夫的事件."人工智能"这个词再次被推上风口浪尖,而"认知计算"却鲜有人听说,同样是人类模拟机器思索,让机器具有自主思考能力,都是具有跨时代意义和里程碑式的存在. 认知计算更加强调机器或人造大脑如何能够主动学习.推理.感知这个世界,并与人类.环境进行交互的反应.它会根据环境的变化做出动态的反应,所以认知更加强调它的动态