首页 > 试题广场 >

某班期末考试科目有高等数学、英语、线性代数、程序设计,有若干

[问答题]
某班期末考试科目有高等数学、英语、线性代数、程序设计,有若干人(少于50人)参加,要求将所有学生按平均成绩排序,并标出4门课均在90分以上的学生。使用结构表示学生的信息,包括姓名、标记和各科成绩,用结构数组表示全班学生的信息。
推荐
设计一个结构体数组stu用于存放学生信息,先输入这些信息,然后求平均分,再采用冒泡排序法按平均分排序,最后输出所有学生信息。程序如下:
#include <stdio.h>
#define N 50
typedef struct
{   char name[10];                    /*姓名*/
    double score[4];    v                /*4门课的分数*/
    double ave;                        /*平均分*/
    int flag;                        /*标志*/
} Student;
void Input(Student * studp,int n)    /*输入n个学生信息存放在啊studp中*/
{
    int i,k;
    double a;
    printf("输入姓名和4门课分数\n");
    for (i=0;i<n;i++ )
    {    printf(" 第%d个学生:",i+1);
       scanf("%s",(studp + i)->name);
       for (k=0;k<4;k++ )
        {    scanf("%1f",&a);
           (studp+i)->score[k]=a;
        }
    }
}
void Avg_flag(Student * studp,int n)        /*求每个学生的平均分并置flag值*/
{
    int i,k,flag;
    double sum;
    for (i=0;i<n;i++ )
    {    sum=0.0;
        flag=1;
        for (k=0;k<4;k++ )
        {    sum+=(studp+i)->score[k];
            if ((studp+i)->score[k]<90)        /*有一门课分数少于90,则flag=0*/
                flag=0;
        }
        (studp+i)->ave=sum/4;
        (studp+i)->flag=flag;
    }
}
void Sort(Student * studp,int n)        /*采用冒泡排序法按平均分排序*/
{
    int i,j;
    Student t;
    for (i=0;i<n-1;i++ )
        for (j=0;j<n-1-i;j++ )
            if ((studp+j)->ave>(studp+j+1)->ave)
            {    t= * (studp+j);    /*(studp+j)<->(studp+j+1)*/
                * (studp+j)= * (studp+j+1);
                * (studp+j+1)=t;
            }
}
void Printf(Student * studp,int n)    /*输出所有学生信息*/
{
    int i,k;
    printf("执行结果\n");
    for (i=0;i<n;i++ )
    {     printf("%12s",(studp+i)->name);
        for (k=0;k<4'k++ )
            printf("%5.1lf",(studp+i)->score[k]);
        printf("%5.1lf:,(studp+i)->ave);
        if ((studp+i)->flag)
            printf(" * ");
        printf("\n");
    }
}
void main()
{
    Student stud[N];               /*定义结构体数组*/
    int n;
    printf("学生人数:");
    scanf("%d",&n);
    Input(stud,n);        /*输入学生成绩*/
    Avg_flag(stud,n);        /*求平均分*/
    Sort(stud,n);            /*排序*/
    Printf(stud,n);            /*输出*/
}


发表于 2018-04-16 21:18:28 回复(0)