中易网

急求高手帮助编程(C语言) 给的不多只有30(我全部的积蓄)

答案:2  悬赏:50  
解决时间 2021-04-27 16:44
  • 提问者网友:她是我的お女人
  • 2021-04-27 13:24

学生成绩统计、排序的实现

问题描述:在学生成绩管理中,经常会遇到求平均成绩,统计不及格学生成绩,统计优秀学生人数,以及按成绩对学生进行排名等。现假设有某个班级的若干名学生,每个学生都考试完成了4门课程,试对所有学生的成绩完成以下工作:

(1)求每门课程的平均成绩。

(2)输出所有有不及格课程的学生的学号、姓名、全部课程的成绩、平均成绩。

(3)输出所有平均分在90分以上(含90分)的学生学号、姓名。

(4)对4门课程中的任何一门,可随意抽取1门按学生成绩进行排序

最佳答案
  • 二级知识专家网友:不服输就别哭
  • 2021-04-27 13:59


#include
<stdio.h>


#include
<stdlib.h>


//
hold the number of students


#define
N 5


#define
DATA struct data


DATA{


    long studentNumber;


    char name[80];


    double course[4];


    double total;


    double average;


    int pass;


    int superior;


};


int
main( void )


{


    DATA data[N], temp;


    int i, j, max, mark = 0, mark_90 = 0;


   


    // get data


    for ( i = 0; i < N; i++ )


    {


    printf("Enter the data of student
%-2d:\n",i+1);


    printf("Enter student number:
"); scanf("%ld",&data[i].studentNumber);


    printf("Enter name: ");
fflush(stdin); gets(data[i].name);


    data[i].total = 0;


    data[i].pass = 1;


    data[i].superior = 0;



    for ( j = 0; j < 4; j++ )


    {


    printf("Enter score of course
%d: ", j+1);


    scanf("%lf",&data[i].course[j]);


    if ( data[i].course[j] < 60 )


    {


    mark = 1;


    data[i].pass = 0;


    }


    data[i].total += data[i].course[j];


    }


    data[i].average = data[i].total / 4;



    if ( data[i].average >= 90 )


    {


    mark_90 = 1;


    data[i].superior = 1;


    }


    putchar('\n');


    }


   


    // print the student who failed


    if ( mark == 0 ) printf("\nNo student
failed!\n");


    else


    {


    printf("\nFailed:\n");


    puts("studentNumber studentName
course1 course2 course3 course4 average");


    puts("=================================================================");


    for ( i = 0; i < N; i++ )


    {


    if ( data[i].pass == 1 ) continue;


    printf("%-14ld",data[i].studentNumber);


    printf("%-12s",data[i].name);


    for ( j = 0; j < 4; j ++ )


    {


    printf("%-8g",data[i].course[j]);


    }


    printf("%-7g",data[i].average);


    }


    }


   


    // print the superior student


    if ( mark_90 == 0 )


    printf("\n\nNo student's average
is more than 90 ( including 90 )\n");


    else


    {



    printf("\n\nAverage more than 90
(including 90 ):\n");


    puts("studentNumber
studentName");


    puts("=========================");


    for ( i = 0; i < N; i++ )


    {


    if ( data[i].superior == 0 )
continue;


    printf("%-14ld",data[i].studentNumber);


    printf("%-11s",data[i].name);


    }


    }


   


    // choose the course to sort


    printf("\nchoose the course to
sort:\n");


    for ( i = 0; i < 4; i++ )
printf("\t%d - course %d\n",i,i+1);


    scanf("%d",&mark);


   


    if ( mark < 0 || mark > 3 )
printf("\n\nNo such a course!\n");


    else


    {



    for ( i = 0; i < N; i++ )


    {


    for ( max = j = i; j < N; j++ )


    {


    if ( data[max].course[mark]
< data[j].course[mark] ) max = j;


    }


    if ( max != i )


    {


    temp = data[i];


    data[i] = data[max];


    data[max] = temp;


    }


    }


   


    printf("\n\nAfter
sorting:\n");


    puts("studentNumber studentName
course1 course2 course3 course4 average");


    puts("=================================================================");


    for ( i = 0; i < N; i++ )


    {


    printf("%-14ld",data[i].studentNumber);


    printf("%-12s",data[i].name);


    for ( j = 0; j < 4; j ++ )


    {


    printf("%-8g",data[i].course[j]);


    }


    printf("%-7g\n",data[i].average);


    }


    }


   


    system("pause");


    return 0;


}

全部回答
  • 1楼网友:狠傷凤凰
  • 2021-04-27 14:46

#include<iostream.h> #include<string.h> #define N 2//N为全班人数 class Student { public:  Student(){return;}  char Name[10];  char id[10];  float s1,s2,s3,s4;  float Ave();  friend class Class; }; class Class {  Student stu[N];//N为全班人数 public:  void Input();//学生信息输入  float AveS1();//求S1的平均成绩  float AveS2();//求S2的平均成绩  float AveS3();//求S3的平均成绩  float AveS4();//求S4的平均成绩  void SearchSmall();//查找优秀学生  void SearchExc();//查找不及格学生  void Search90();//查找平均分在90分以上的学生  void Search();//检索 };

float Student::Ave() {  return (s1+s2+s3+s4)/4; } void Class::Input() {  cout<<"请输入学生的信息:"<<endl;  for(int i=0;i<N;i++)  {   cout<<"请输入学生的名字:"<<endl;   cin>>stu[i].Name;   cout<<"请输入学生的编号:"<<endl;   cin>>stu[i].id;   cout<<"请输入学生的S1成绩: "<<endl;   cin>>stu[i].s1;   cout<<"请输入学生的S2成绩:"<<endl;   cin>>stu[i].s2;   cout<<"请输入学生的S3成绩;"<<endl;   cin>>stu[i].s3;   cout<<"请输入学生的S4成绩;"<<endl;   cin>>stu[i].s4;  } } float Class::AveS1() {    float sum(0);  for(int i=0;i<N;i++)     sum+=stu[i].s1;  return sum/N; } float Class::AveS2() {    float sum(0);  for(int i=0;i<N;i++)   sum+=stu[i].s2;  return sum/N; } float Class::AveS3() {    float sum(0);  for(int i=0;i<N;i++)   sum+=stu[i].s3;  return sum/N; } float Class::AveS4() {    float sum(0);  for(int i=0;i<N;i++)   sum+=stu[i].s4;  return sum/N; } void Class::SearchSmall() {    float max(0);  int n;  for(int i=0;i<N;i++)  {   if(stu[i].Ave()>max)   {    max=stu[i].Ave();    n=i;   }  }  cout<<"平均成绩最好的学生是"<<stu[n].id<<"号学生:"<<stu[n].Name<<endl;  cout<<endl;

} void Class::SearchExc() {   bool b;  cout<<"输出不及格的学生:"<<endl;  for(int i=0;i<N;i++)  {      if(stu[i].Ave()<60) cout<<stu[i].Name<<endl;   else b=1;  }  if(b) cout<<"没有不及格的学生!"<<endl;  cout<<endl; } void Class::Search() {  bool b;  Student s;  cout<<"请输入要检索的学生的编号:";  cin>>s.id;  for(int i=0;i<N;i++)   if(!strcmp(s.id,stu[i].id))     {     cout<<"你检索的学生的信息如下:"<<endl;     cout<<"学号:"<<stu[i].id<<endl;     cout<<"姓名:"<<stu[i].Name<<endl;     cout<<"S1成绩:"<<stu[i].s1<<endl;     cout<<"s2成绩:"<<stu[i].s2<<endl;     cout<<"s3成绩:"<<stu[i].s3<<endl;     cout<<"s4成绩:"<<stu[i].s4<<endl;     }    else b=1;  if(b)  cout<<"没有你要检索的学生!"<<endl;  cout<<endl; } void Class::Search90() {  cout<<"输出平均成绩高于90分以上的学生:"<<endl;  bool b;  for(int i=0;i<N;i++)  {   if(stu[i].Ave()>=90) cout<<stu[i].id<<"号学生 "<<stu[i].Name<<endl;   else b=1;  }  if(b) cout<<"没有平均成绩在90分以上的学生!"<<endl;  cout<<endl; } int main() {      Class Cla;  Cla.Input();  Cla.AveS1();  Cla.AveS2();  Cla.AveS3();  Cla.AveS4();  Cla.SearchSmall();  Cla.SearchExc();  Cla.Search90();  Cla.Search();  return 0; }

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息