第8章实验1:学生成绩管理系统V1.0

第8章实验1:学生成绩管理系统V1.0
某班有最多不超过30人(具体人数由键盘输入)参加某门课程的考试,用一维数组作函数参数编程实现如下学生成绩管理:
(1)录入每个学生的学号和考试成绩;
(2)计算课程的总分和平均分;
(3)按成绩由高到低排出名次表;
(4)按学号由小到大排出成绩表;
(5)按学号查询学生排名及其考试成绩;
(6)按优秀(90100)、良好(8089)、中等(7079)、及格(6069)、不及格(0~59)5个类别,统计每个类别的人数以及所占的百分比;
(7)输出每个学生的学号、考试成绩。

求赞

#include<stdio.h>
#include<stdlib.h>
#define N 30
 
main()
{
    int n, i, j, temp1, temp2, choice, p, mark;
    long ids;
    float sum;
 
    printf("Input student number(n<30):\n");
    while (scanf("%d", &n))
    {
        if (n < 30 && n > 0)
            break;
        else
        {
            printf("Invalid Input!");
            continue;
        }
 
    }
    long id[N];
    float score[N];
 
Choice:
    printf("Management 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("0.Exit\n");
    printf("Please Input your choice:\n");
 
    scanf("%d", &choice);
    getchar();
 
    switch (choice)
    {
    case 1:
        goto a;
    case 2:
        goto b;
    case 3:
        goto c;
    case 4:
        goto d;
    case 5:
        goto e;
    case 6:
        goto f;
    case 7:
        goto g;
    case 0:
        goto end;
    default:
        printf("Input error!\n");
        goto Choice;
    }
 
a:
    printf("Input student's ID, name and score:\n");
    for (i = 1; i <= n; i++)
    {
        scanf("%ld %f", &id[i], &score[i]);
        getchar();
    }
    goto Choice;
 
b:
    sum = 0;
    for (i = 1; i <= n; i++)
        sum = sum + score[i];
    printf("sum=%.0f,aver=%.2f\n", sum, sum / n);
    goto Choice;
 
c:
    printf("Sort in descending order by score:\n");
    for (i = 1; i < n; i++)
        for (j = i + 1; j <= n; j++)
            if (score[j] > score[i])
            {
                temp1 = score[i], temp2 = id[i];
                score[i] = score[j], id[i] = id[j];
                score[j] = temp1, id[j] = temp2;
            }
    for (i = 1; i <= n; i++)
        printf("%ld\t%.0f\n", id[i], score[i]);
    goto Choice;
 
d:
    printf("Sort in ascending order by number:\n");
    for (i = 1; i < n; i++)
        for (j = i + 1; j <= n; j++)
            if (id[i] > id[j])
            {
                temp1 = score[i], temp2 = id[i];
                score[i] = score[j], id[i] = id[j];
                score[j] = temp1, id[j] = temp2;
            }
    for (i = 1; i <= n; i++)
        printf("%ld\t%.0f\n", id[i], score[i]);
    goto Choice;
 
e:
    printf("Input the number you want to search:\n");
    scanf("%ld", &ids);
    getchar();
    for (i = 1; i <= n; i++)
    {
        if (ids == id[i])
        {
            printf("%ld\t%.0f\n", id[i], score[i]);
            goto Choice;
        }
        else
            continue;
 
    }
    printf("Not found!\n");
    goto Choice;
 
f:
    for (i = 5; i <= 10; i++)
    {
        p = 0;
        for (j = 1; j <= n; j++)
        {
            mark = score[j] < 60 ? 5 : (int)score[j] / 10;
            if (mark == i)
                p++;
        }
        if (i == 5)
        {
            printf("<60\t%d\t%.2f%%\n", p, (float)p / n * 100);
            continue;
        }
        else if (i >= 6 && i <= 9)
        {
            printf("%d-%d\t%d\t%.2f%%\n", i * 10, i * 10 + 9, p, (float)p / n * 100);
            continue;
        }
        else
            printf("%d\t%d\t%.2f%%\n", i * 10, p, (float)p / n * 100);
    }
    goto Choice;
 
g:
    for (i = 1; i <= n; i++)
        printf("%ld\t%.0f\n", id[i], score[i]);
    goto Choice;
 
end:
    printf("End of program!\n");
    return 0;
}

(PS:有cqupt的同学吗?坐等2021年数模竞赛组队,有意私信联系。(◦˙▽˙◦))

  • 31
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值