/*1.学生成绩管理系统V1.0
某班有最多不超过40人(具体人数由键盘输入)参加某门课程的考试,用数组作函数参数编程实现如下学生成绩管理:
(1)录入每个学生的学号和考试成绩;
(2)计算课程的总分和平均分;
(3)按成绩由高到低排出名次表;
(4)按学号由小到大排出成绩表;
(5)按学号查询学生排名及其考试成绩;
(6)按优秀(90-100)、良好(80-89)、中等(70-79)、及格(60-69)、不及格(0-59)5个类别,统计每个类别的人数以及所占的百分比;
(7)输出每个学生的学号、考试成绩,课程总分和平均分。
2.学生成绩管理系统V1.1
在学生成绩管理系统V1.0的基础上,要求程序运行后先显示如下菜单,并提示用户输入选项:
(1)Append record
(2)Calculate total and average score of course
(3)Sort in descending order by score
(4)Sort in ascending order by number
(5)Search by number
(6)Statistic analysis
(7)List record
(8)Exit
*/

1.0

#include <stdio.h>
#include <stdlib.h>
#define N 40
int Menu();
int ReadScore(int score[],long num[]);
int calculate(int score[],int n);
int ScoreSort(int score[],long num[],int n);
void printScore(int score[],long num[],int n);
int SearchScore(int score[],long num[],int n);

int main()
{
    int score[N],n,sum,i,a=0,b=0,c=0,d=0,e=0,s;
    long num[N];
    n=ReadScore(score,num);
    sum=calculate(score,n);
    printf("Calculate total and average score of course:\n");
    printf("sum=%d,ave=%d\n",sum,sum/n);
    printf("Sort in ascending order by number:\n");
    printScore(score,num,n);
    ScoreSort(score,num,n);
    printf("Sort in descending order by score:\n");
    printScore(score,num,n);
    SearchScore(score,num,n);
    for(i=0;i<n;i++)
    {
        if(score[i]>=90 && score[i]<=100)
            a++;
        if(score[i]>=80 && score[i]<90)
            b++;
        if(score[i]>=70 && score[i]<80)
            c++;
        if(score[i]>=60 && score[i]<70)
            d++;
        if(score[i]>=0 && score[i]<60)
            e++;
    }
    printf("Statistic analysis\n");
    printf("优秀(90-100)=%d\n良好(80-89)=%d\n中等(70-79)=%d\n及格(60-69)=%d\n不及格(0-59)=%d\n",a,b,c,d,e);
    printf("优秀(90-100)=%d\n良好(80-89)=%d\n中等(70-79)=%d\n及格(60-69)=%d\n不及格(0-59)=%d\n",a/n,b/n,c/n,d/n,e/n);
    return 0;
}

int ReadScore(int score[],long num[])
{
    int i=20221401,n;
    for(n=0;n<N;n++)
    {
        scanf("%d",&score[n]);
        if(score[n]<0)
            return n;
        num[n]=i;
        i++;
    }
    return n;
}

int calculate(int score[],int n)
{
    int i,sum;
    sum=0;
    for(i=0;i<n;i++)
    {
        sum+=score[i];
    }
    return sum;
}

int ScoreSort(int score[],long num[],int n)
{
    int a,b,c,temp1;
    long temp2;
    for(a=0;a<n-1;a++)
    {
        c=a;
        for(b=a+1;b<n;b++)
        {
            if(score[b]>score[c])
            {
                c=b;
            }
        }
        if(c!=a)
        {
            temp1=score[c];
            score[c]=score[a];
            score[a]=temp1;
            temp2=num[c];
            num[c]=num[a];
            num[a]=temp2;
        }
    }
}

void printScore(int score[],long num[],int n)
{
    int i;
    for(i=0;i<n;i++)
    {
        printf("%10ld%4d\n",num[i],score[i]);
    }
}

SearchScore(int score[],long num[],int n)
{
    int m;
    long i;
    printf("Search by number:");
    scanf("%ld",&i);
    for(m=0;m<=n;m++)
    {
        if(i==num[m])
        {
            printf("%d\n",score[m]);
        }
    }
}

2.0

#include <stdio.h>
#include <stdlib.h>
#define N 40
#define M 20221401
int Menu();
int ReadScore(int score[],long num[]);
int calculate(int score[],int n);
int ScoreSort(int score[],long num[],int n);
int NumSort(int score[],long num[],int n);
int printScore(int score[],long num[],int n);
int SearchScore(int score[],long num[],int n);
int Analysis(int score[],long num[],int n);
int main()
{
    int score[N],n,sum;
    char select;
    long num[N];
    while(1)
    {
        select = Menu();
        switch(select)
        {
        case 1:
            n=ReadScore(score,num);
            break;
        case 2:
            sum=calculate(score,n);
            break;
        case 3:
            ScoreSort(score,num,n);
            break;
        case 4:
            NumSort(score,num,n);
            break;
        case 5:
            SearchScore(score,num,n);
            break;
        case 6:
            Analysis(score,num,n);
            break;
        case 7:
            printScore(score,num,n);
            sum=calculate(score,n);
            printf("Calculate total and average score of course:\n");
            printf("sum=%d,ave=%d\n",sum,sum/n);
            break;
        case 8:
            printf("End");
            exit(0);
        default:
            printf("Error!");
        }
    }
}
int Menu()
{
    int select;
    printf("Management System for Students' scores\n");
    printf("1.Input record\n");
    printf("2.Caculate total and average score of course\n");
    printf("3.Sort in descending order by score\n");
    printf("4.Sort in ascending order by number\n");
    printf("5.Search by number\n");
    printf("6.Statistic analysis\n");
    printf("7.List record\n");
    printf("8.Exit\n");
    printf("Please Input your choice:\n");
    scanf("%d",&select);
    return select;
}

int ReadScore(int score[],long num[])
{
    int n;
    long i=M;
    for(n=0; n<N; n++)
    {
        scanf("%d",&score[n]);
        if(score[n]<0)
            return n;
        num[n]=i;
        i++;
    }
    return n;
}

int calculate(int score[],int n)
{
    int i,sum;
    sum=0;
    for(i=0; i<n; i++)
    {
        sum+=score[i];
    }
    return sum;
}

int ScoreSort(int score[],long num[],int n)
{
    int a,b,c,temp1;
    long temp2;
    for(a=0; a<n-1; a++)
    {
        c=a;
        for(b=a+1; b<n; b++)
        {
            if(score[b]>score[c])
            {
                c=b;
            }
        }
        if(c!=a)
        {
            temp1=score[c];
            score[c]=score[a];
            score[a]=temp1;

            temp2=num[c];
            num[c]=num[a];
            num[a]=temp2;
        }
    }
}

int NumSort(int score[],long num[],int n)
{
    int a,b,c,temp1;
    long temp2;
    for(a=0;a<n;a++)
    {
        c=a;
        for(b=a+1;b<n;b++)
        {
            if(num[b]<num[c])
            {
                c=b;
            }
        }
        if(c!=a)
        {
            temp1=score[c];
            score[c]=score[a];
            score[a]=temp1;

            temp2=num[c];
            num[c]=num[a];
            num[a]=temp2;
        }
    }
}

int printScore(int score[],long num[],int n)
{
    int i;
    for(i=0; i<n; i++)
    {
        printf("%10ld%4d\n",num[i],score[i]);
    }
}

int SearchScore(int score[],long num[],int n)
{
    int m;
    long i;
    printf("Search by number:");
    scanf("%ld",&i);
    for(m=0; m<=n; m++)
    {
        if(i==num[m])
        {
            printf("%d\n",score[m]);
            return 0;
        }
    }
    printf("Not Found!");
}

int Analysis(int score[],long num[],int n)
{
    int i;
    float a=0,b=0,c=0,d=0,e=0;
    for(i=0; i<n; i++)
    {
        if(score[i]>=90 && score[i]<=100)
            a++;
        if(score[i]>=80 && score[i]<90)
            b++;
        if(score[i]>=70 && score[i]<80)
            c++;
        if(score[i]>=60 && score[i]<70)
            d++;
        if(score[i]>=0 && score[i]<60)
            e++;
    }
    printf("Statistic analysis\n");
    printf("优秀(90-100)=%d\n良好(80-89)=%d\n中等(70-79)=%d\n及格(60-69)=%d\n不及格(0-59)=%d\n",a,b,c,d,e);
    printf("优秀(90-100)=%f\n良好(80-89)=%f\n中等(70-79)=%f\n及格(60-69)=%f\n不及格(0-59)=%f\n",a/n,b/n,c/n,d/n,e/n);
}
posted on 2022-11-12 20:17  20221417wzy  阅读(53)  评论(0编辑  收藏  举报