怎样在几名学生成绩中找取第二名的成绩?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎样在几名学生成绩中找取第二名的成绩?相关的知识,希望对你有一定的参考价值。
在A列输入张三、李四、赵五,在B列与A列对应输入500、521、550分,李四为第二名,怎样用函数将第二名李四与他的分数对应的显示出来?
在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中,计算学生成绩的平均分