高分求解C语言 综合设计 问题!!高手们帮帮忙啊!谢谢了先!
- 提问者网友:玫瑰园
- 2021-04-28 15:59
内容如下:
某班能级一共有学生N名,本学期一共选修了M门课程,设计一个成绩测评系统,功能要求如下:
逐一输入每个学生的成绩;
计算每个学生的总平均成绩,并按降序排序输出;
输入某个学生的学号,输出其各课考试情况;
对每门课按降序排序输出;
统计课程不同分数段的人数;
希望能具体一些 有具体程序步骤 配上思路更好 答案好再加分!!
由于我的上限是100分 先悬赏100!
- 五星知识达人网友:孤独的牧羊人
- 2021-04-28 17:26
这个在谭浩强的《C语言设计》3版的第13章课本上有相似的例题,仿照过来就OK了~
#include <stdio.h>
#include <stdlib.h>
#define N 30//假如班级内30名学生
struct students //假如有两门课程
{
int xuehao;//学号
float English;// 化学
float shengwu;//物理
}Member[N];//全班的人数 30人
void menu()
{
printf(" =---------------C语言综合设计-----------------=\n");
printf(" 0.输入成绩\n");
printf(" 1.计算每个人的平均成绩\n");
printf(" 2.平均成绩按降序输出\n");
printf(" 3.学生学号,输出课程成绩\n");
printf(" 4.输出各科成绩\n");
printf(" 5.及格和不及格的人数\n");
printf(" 6.退出\n");
}
void print(float English[])//各科成绩排序
{
float temp;
for(int i=0;i<N-1;i++)
{
for(int j=0;j<(N-1)-i;j++)
if(huaxue[j]<huaxue[j+1])
{
temp=huaxue[j];
huaxue[j]=huaxue[j+1];
huaxue[j+1]=temp;
}
}
for(int i=0;i<N;i++)
printf("huauxe:%.1f分\n",huaxue[i]);
}
void main()
{
int xuehao,shu;
int huaxue1=0,huaxue2=0,wuli1=0,wuli2=0;
start:menu();
float temp,score[N],huaxue[N],wuli[N];
printf(" ☆请输入序号:");
scanf("%d",&shu);
switch(shu)
{
case 0:
for(int i=0;i<N;i++)//输入成绩
{
printf("输入第%d名的学生成绩:\n",i+1);
printf("学号:");
scanf("%d",&Member[i].xuehao);
printf("huaxue:");
scanf("%f",&Member[i].huaxue);
if(Member[i].huauxe>=60)
huaxue1++;
else
huaxue2++;
huaxue[i]=Member[i].English;
~~~~~下边的在课本上有~~自己找下 呵呵!如非要不可,我做好给你传~
- 1楼网友:鱼忧
- 2021-04-28 19:15
- 2楼网友:天凉才是好个秋
- 2021-04-28 19:10
整整写了两个多小时,希望对你有帮助!不合适的地方追问我!我帮你改下!
#include <stdio.h> #include <stdlib.h> #define N 40//假如班级内40名学生 struct students //假如有三门课程 { int xuehao;//学号 float English;// 英语 float Math;//数学 float shengwu;//生物 }Member[N];//全班的人数 40人 void menu() {
printf(" =---------------C语言综合设计-----------------=\n"); printf(" 0.输入学生的成绩信息\n"); printf(" 1.计算每个学生的平均成绩\n"); printf(" 2.平均成绩按降序输出\n"); printf(" 3.输入某学生学号,输出课程成绩\n"); printf(" 4.降序输出各成绩\n"); printf(" 5.统计及格和不及格的人数\n"); printf(" 6.退出评测系统\n"); } void print(float English[])//各科成绩排序 { float temp;
for(int i=0;i<N-1;i++) {
for(int j=0;j<(N-1)-i;j++) if(English[j]<English[j+1]) { temp=English[j]; English[j]=English[j+1]; English[j+1]=temp; } } for(int i=0;i<N;i++) printf("English:%.1f分\n",English[i]); } void main() { int xuehao,shu; int English1=0,English2=0,Math1=0,Math2=0,shengwu1=0,shengwu2=0; start:menu(); float temp,score[N],English[N],Math[N],shengwu[N]; printf(" ☆请输入序号:"); scanf("%d",&shu); switch(shu) { case 0: for(int i=0;i<N;i++)//输入学生成绩 N是学生的个数 { printf("请输入第%d名的学生成绩:\n",i+1); printf("学号:"); scanf("%d",&Member[i].xuehao); printf("English:"); scanf("%f",&Member[i].English); if(Member[i].English>=60) English1++; else English2++; English[i]=Member[i].English; printf("Math:"); scanf("%f",&Member[i].Math); if(Member[i].Math>=60) Math1++; else Math2++; Math[i]=Member[i].Math; printf("shengwu:"); scanf("%f",&Member[i].shengwu); if(Member[i].shengwu>=60) shengwu1++; else shengwu2++; shengwu[i]=Member[i].shengwu; // printf("第%d名的总平均成绩是:%f分\n",i+1,(Member[i].English+Member[i].Math+Member[i].shengwu)/3); score[i]=(Member[i].English+Member[i].Math+Member[i].shengwu)/3; } break; case 1: for(int i=0;i<N;i++) printf("第%d名的平均成绩是:%.1f\n",i+1,score[i]); break; case 2: for(int i=0;i<N-1;i++) {
for(int j=0;j<(N-1)-i;j++) if(score[j]<score[j+1]) { temp=score[j]; score[j]=score[j+1]; score[j+1]=temp; } } for(int i=0;i<N;i++) printf("第%d名:%.1f分\n",i+1,score[i]); case 3: printf("请输入你要查询的学号:"); scanf("%d",&xuehao); for(int i=0;i<N;i++) {
if(xuehao==Member[i].xuehao) {
printf("学号:%d\n",Member[i].xuehao); printf("English:%f\n",Member[i].English); printf("Math:%f\n",Member[i].Math); printf("shengwu:%f\n",Member[i].shengwu); break; } } break; case 4: print(English); print(Math); print(shengwu); break; case 5: printf("英语及格的人数是:%d\n英语不及格的人数是:%d\n",English1,English2); printf("数学及格的人数是:%d\n数学不及格的人数是:%d\n",Math1,Math2); printf("生物及格的人数是:%d\n生物不及格的人数是:%d\n",shengwu1,shengwu2); break; case 6: printf("谢谢使用!再见!"); exit(0);
default: printf("输入错误,请从新输入:\n"); } goto start;
}
- 3楼网友:野慌
- 2021-04-28 18:46