以下程序用来计算任意个学生三门课的平均分并按平均分由高到低排序并打印输出。其中函数Input用来读取m个学生的信息,Total1函数用来计算总分和平均分,Sort函数按平均分由高到低排序,Print函数打印排序后的名次、学号、姓名、各科成绩及总分和平均分。请在主函数空白处填写适当内容将程序补充完整(分隔符请用英文输入法下的逗号顶格填写不要有多余的空格,每一空白处占用一行填写后请换行)。 #include <stdio.h> #include <stdlib.h> struct student { long num; char name[20]; int Eng; int Com; int Mth; }; void Input(struct student *p, int n); void Total1(struct student *p, int *psum, float *pave, int n); void Sort(struct student *p, int *psum, float *pave, int n); void Print(struct student *p, int *psum, float *pave, int n); main() { struct student *p=NULL; int *psum=NULL; float *pave=NULL; int m; printf("请输入班级实际人数:\n"); scanf("%d",&m); p = (struct student * )malloc(m*sizeof (struct student )); psum = (int * )malloc(m*sizeof (int )); pave = (float * )malloc(m*sizeof(float )); if(p ==NULL || psum == NULL || pave == NULL ) exit(0); Input(); Total1(); Sort(); Print(); } void Input(struct student *p, int n) { int i; for(i=0;i<n;i++) { scanf("%ld%s%d%d%d", &(p+i)->num, (p+i)->name,&(p+i)->Eng, &(p+i)->Com, &(p+i)->Mth ); } } void Total1(struct student *p,int *psum, float *pave,int n) { int i; for(i = 0; I < n; i++ ) { psum[i] = 0; psum[i] = psum[i] + p[i].Eng+p[i].Com + p[i].Mth; pave[i] =(float )psum[i]/3; } } void Sort(struct student *p, int *psum, float *pave, int n) { int i,j,iterm; float fterm; struct student pterm; for (i = 0; i < n-1; i++ ) { for (j = i+1; j < n; j++ ) { if (pave[i] < pave[j] ) { iterm = psum[i]; psum[i] = psum[j]; psum[j] = iterm; fterm = pave[i]; pave[i] = pave[j]; pave[j] = fterm; pterm = p[i]; p[i] = p[j]; p[j] = pterm; } } } } void Print(struct student *p, int *psum, float *pave, int n) { int i; printf("名次\t%学号\t姓名\t英语\t计算机\t数学\t总分\t平均分\n"); for (i = 0; i < n; i++ ) { printf("%d\t%ld\t%s\t%d\t%d\t%d\t%d\t%.0f\n",i+1, (p+i)->num, (p+i)->name, (p+i)->Eng, (p+i)->Com,(p+i)->Mth, psum[i], pave[i] ); } }
第1题
第2题
A、手工计算
B、编写程序
C、计算器
D、某款计算机软件
第4题
第8题
“学生”表:
学号 姓名 政治面貌 年龄 学分 科目号
20001 王 海 团员 25 4 01
20002 李 盐 预备党员 20 3 02
20003 刘小鹏 团员 22 4 01
20004 隋小新 团员 20 6 03
20005 李明月 预备党员 24 4 01
20006 孙民主 预备党员 21 3 02
20007 赵福来 预备党员 22 6 03
“选修课”表:
科目号 科目名
01 日语
02 法律
03 微积分
【程序说明一】 使用SQL语句查询每个学生及其选修课程的情况:
【程序一】
SELECT 学生.*,选修课.*;
FROM 学生,选修课;
WHERE (1) = (2)
【程序说明二】 使用SQL语句求选修了法律课程的所有学生的学分总和:
【程序二】
SELECT (3) (学生分);
FROM 学生;
WHERE 科目号 IN;
(SELECT 科目号;
FROM (4) ;
WHERE 科目号=“法律”)
【程序说明三】 设有s(学号,姓名,性别)和sc(学号,课程号,成绩)两个表,下面SQL的
SELECT 语句检索选修的每门课程的成绩都高于或等于85分的学生的学号、姓名和性别。
【程序三】
SELECT 学号,姓名,性别FROM s
WHERE (5) (SELECT * FROM sc WHERE sc. 学号=s. 学号 AND 成绩<85)
(1)
A.科目号
B.学生.科目号
C.学生.姓名
D.选修课.科目号
为了保护您的账号安全,请在“上学吧”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!