怎样在几名学生成绩中找取第二名的成绩?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎样在几名学生成绩中找取第二名的成绩?相关的知识,希望对你有一定的参考价值。

在A列输入张三、李四、赵五,在B列与A列对应输入500、521、550分,李四为第二名,怎样用函数将第二名李四与他的分数对应的显示出来?
在EXCEL中,如果不用数据库,有没有别的方法?用其它的函数?我要用在报告中。

excel 你用下面的公式:

=INDEX(A$2:A$4,MATCH(LARGE(B$2:B$4,2),B$2:B$4))

解释:
1、LARGE(B$2:B$4,2): 求出B列第二大的值
如果有重复的值,用:
LARGE(B$2:B$4,COUNTIF(B$2:B$4,MAX(B$2:B$4))+1)
2、MATCH(LARGE(B$2:B$4,2),B$2:B$4) 找出第二大的值在数组中的位置
3、INDEX(A$2:A$4,MATCH(LARGE(B$2:B$4,2),B$2:B$4))
找出A列数组中,与B列相同行所对应的值

select top 1 A,B from (
select top 2 A,B from 表 order by B desc
)
order by B
参考技术A 使用TOP 方式,应该还有个用户ID吧
SELECT TOP 1 A,B
FROM 表
WHERE 用户ID NOT IN ( SELECT TOP 1 用户ID FROM 表 ORDER BY ORDER BY B DESC )
ORDER BY B DESC

也就是字查询查询出第1名的ID,外面查询含第1名

如果要取第3名 改成
SELECT TOP 1 A,B
FROM 表
WHERE 用户ID NOT IN ( SELECT TOP 2 用户ID FROM 表 ORDER BY ORDER BY B DESC )
ORDER BY B DESC
参考技术B select * from (
select rownum r, b.* from biao b order by b.分数 ) t where t.r=2 你试试应该可以
参考技术C 尖子生

某班有5个学生, 每名学生的数据包括学号,姓名,3门课成绩,从键盘上输入5名学生数据,要求打印出3门课的总平均成绩以及最高分的学生数据(包括学号,姓名,3门课成绩)

 1 #define _CRT_SECURE_NO_WARNINGS        //关闭安全检查
 2 #include<stdio.h>
 3 #include<stdlib.h>
 4 
 5 //定义结构体类型
 6 struct ST
 7 {
 8     int ID;
 9     char name[20];
10     float score[3];
11 };
12 
13 //方法1 : 结构体数组作为函数参数 开销大
14 float avg(struct ST sts[], int n)
15 {
16     float sum = 0, avg;
17     for (int i = 0; i < n; i++)
18     {
19         for (int j = 0; j < 3; j++)
20         {
21             sum += sts[i].score[j];
22         }
23     }
24     avg = sum / n / 3;
25     return avg;
26 }
27 
28 //方法2 : 结构体数组指针作为函数参数 开销小
29 float avg1(struct ST *p, int n)
30 {
31     float sum = 0, avg;
32     for (int i = 0; i < n; i++)
33     {
34         for (int j = 0; j < 3; j++)
35         {
36             sum += p[i].score[j];
37         }
38     }
39     avg = sum / n / 3;
40     return avg;
41 }
42 
43 //输出最高分数学生信息
44 void high(struct ST *p, int n)
45 {
46     int index = 0;
47     float max = 0, sum = 0;
48     for (int i = 0; i < n; i++)
49     {
50         for (int j = 0; j < 3; j++)
51         {
52             sum = p[i].score[0] + p[i].score[1] + p[i].score[2];
53             if (sum > max)
54             {
55                 max = sum;
56                 index = i;
57             }
58         }
59     }
60     printf("最高学生信息为:\\n");
61     //(p+index)->ID 等价于 p[index].ID
62     printf("学号:%d\\n", (p+index)->ID);
63     printf("姓名:%s\\n", p[index].name);
64     printf("成绩:%.2f, %.2f, %.2f\\n", p[index].score[0], p[index].score[1], p[index].score[2]);
65 }
66 
67 int main()
68 {
69     int i, j;
70     struct ST sts[5];
71     for (i = 0; i < 5; i++)
72     {
73         printf("请输入第%d个学生信息\\n", i+1);
74         scanf("%d", &sts[i].ID);
75         //加不加&都可以
76         scanf("%s", sts[i].name);
77         printf("输入各科成绩\\n");
78         for (j = 0; j < 3; j++)
79         {
80             scanf("%f", &sts[i].score[j]);
81         }
82     }
83 
84     printf("平均成绩为:%f\\n", avg1(sts, 5));
85     high(sts, 5);
86     system("pause");
87     return 0;
88 }

技术分享

 

以上是关于怎样在几名学生成绩中找取第二名的成绩?的主要内容,如果未能解决你的问题,请参考以下文章

某班有5个学生, 每名学生的数据包括学号,姓名,3门课成绩,从键盘上输入5名学生数据,要求打印出3门课的总平均成绩以及最高分的学生数据(包括学号,姓名,3门课成绩)

C语言 n名学生的成绩存储在一个结构体数组变量scoreLists中,计算学生成绩的平均分

C语言 输入两名学生的四科成绩,并输出每名学生的平均成绩

n名学生成绩在主函数中放入一个带头结点链表中,h指向链表头结点。它功能是:找出学生的最高分,由函数返

1018:统计同成绩学生人数

P 1038 统计同成绩学生