这个程序如何返回最高分的学生号和课程号?用函数做。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了这个程序如何返回最高分的学生号和课程号?用函数做。相关的知识,希望对你有一定的参考价值。
输入10个学生5门课的成绩,分别用函数实现功能:1、计算每个学生的平均分2、计算每门课的平均分3、找出所有50个分数中最高的分数所对应的学生和课程。
#include<stdio.h>
void main()
int score[10][5]=91,92,93,94,95,94,95,96,95,94,89,87,88,84,79,67,68,69,78,98,65,78,89,87,76,67,87,89,90,87,90,80,70,60,50,67,65,64,63,61,98,97,96,95,99,100,56,78,89,90;
int ia,ja;
int average1(int score[][5]);
int average2(int score[][5]);
int max_value(int score[][5]);
int f1(int);
for(ia=0;ia<10;ia++)
printf("第%d个学生的平均分为:%d\n",ia+1,average1(score));
for(ja=0;ja<5;ja++)
printf("第%d门课程的平均分为:%d\n",ja+1,average2(score));
printf("所有50个分数中最高的分数为:%d\n",max_value(score));
int average1(int score[10][5])
int aver1,j,sum1=0;
static int i=0;
for(j=0;j<5;j++)
sum1=sum1+score[i][j];
i++;
aver1=sum1/5;
return(aver1);
int average2(int score[10][5])
int sum2=0,aver2,ib;
static int jb=0;
for(ib=0;ib<10;ib++)
sum2=sum2+score[ib][jb];
jb++;
aver2=sum2/10;
return(aver2);
int max_value(int score[10][5])
int ic,jc,max;
max=score[0][0];
for(ic=0;ic<10;ic++)
for(jc=0;jc<5;jc++)
if(max<score[ic][jc])
max=score[ic][jc];
return(max);
用SQL语句写出完成如下查询
1.查询同时只选修了1号和2号课程的学生的学号
2.查询至少选修了1号和2号课程的学生的学号,按学号降序排列
3.查询被3门以上(包含3门)课程作为直接先行课的课程号
5.查询平均分在80分以下的学生的学号和选修的课程名
表student
学号 姓名 性别 年龄 所在系
Sno Sname Ssex Sage Sdept
200215121 李勇 男 20 CS
200215122 刘晨 女 19 IS
200215123 王敏 女 18 MA
200215125 张立 男 19 IS
表course
课程号 课程名 先行课 学分
Cno Cname Cpno Ccredit
1 数据库 5 4
2 数学 2
3 信息系统 1 4
4 操作系统 6 3
5 数据结构 7 4
6 数据处理 2
7 PASCAL语言 6 4
表sc
学号 课程号 成绩
Sno Cno Grade
200215121 1 92
200215121 2 85
200215121 3 88
200215122 2 90
200215122 3 80
--1.查询同时只选修了1号和2号课程的学生的学号
SELECT DISTINCT SNO FROM SC WHERE SNO IN (SELECT DISTINCT S1.SNO FROM SC AS S1,SC AS S2 WHERE S1.SNO=S2.SNO AND ((S1.CNO=1 AND S2.CNO=2) OR (S1.SNO=2 AND S2.SNO=1))) GROUP BY SNO HAVING COUNT(*)=2
或者:
SELECT SNO FROM SC GROUP BY SNO HAVING (COUNT(*)=2 AND MIN(CNO)=1 AND MAX(CNO)=2)
--2.查询至少选修了1号和2号课程的学生的学号,按学号降序排列
SELECT DISTINCT S1.SNO FROM SC AS S1,SC AS S2 WHERE S1.SNO=S2.SNO AND ((S1.CNO=1 AND S2.CNO=2) OR (S1.CNO=2 AND S2.CNO=1) ) ORDER BY S1.SNO DESC
--3.查询被3门以上(包含3门)课程作为直接先行课的课程号
SELECT CPNO FROM C GROUP BY CPNO HAVING COUNT(*)>=3
--4.查询平均分在80分以下的学生的学号和选修的课程名
SELECT DISTINCT SNO,(SELECT CNAME FROM C WHERE CNO=SC.CNO) FROM SC GROUP BY SNO,CNO HAVING AVG(GRADE)<80 参考技术B 1.select sno from sc where exists (select SNO FROM SC WHERE CNO=1) and exists (select SNO FROM SC WHERE CNO=2) ;
2.SELECT SNO FROM SC WHERE CNO IN (1,2) order by sno desc;
3. select distinct c.cno from ( select sno from (select sno,count(cno) n from sc group by sno) where n>=3)a,sc c where a.sno=c.sno
第四个题目有点不理解!!!!
不知道是学生平均分还是课程平均分本回答被提问者采纳 参考技术C 1.查询同时只选修了1号和2号课程的学生的学号
SELECT DISTINCT Sno FROM (SELECT Sno FROM sc WHERE Cno=1) AS A INNER JOIN (SELECT Sno FROM sc WHERE Cno=2) B ON A.Sno=B.Sno
2.查询至少选修了1号和2号课程的学生的学号,按学号降序排列
SELECT DISTINCT Sno FROM sc WHERE Cno=1 OR Cno=2 ORDER BY Sno DESC
3.查询被3门以上(包含3门)课程作为直接先行课的课程号
不知道什么是直接先行课.
5.查询平均分在80分以下的学生的学号和选修的课程名
平均分是指什么?如果按课程平均,则不会有课程名,如果按照每种课程不同次考试的成绩:
SELECT A.Sno,B.CName FROM (SELECT Sno,Cno,AVG(Grade) FROM sc GROUP BY Sno,Cno HAVING AVG(Grade)<80) AS A INNER JOIN Course B ON A.Cno=B.Cno 参考技术D 出题目要给高分 第5个回答 2008-11-04 你自己参考相关书籍,自己写吧
以上是关于这个程序如何返回最高分的学生号和课程号?用函数做。的主要内容,如果未能解决你的问题,请参考以下文章
建立一个存储过程student_info,要求根据班级查询学生的学号、姓名、课程号和分数(表结构如表2,表3)