7-4 实验11_2_初识结构数组 (100分)

7-4 实验11_2_初识结构数组 (100分)

有n名学生,每个学生的信息包括姓名、学号、5门课程的成绩,平均成绩与总成绩。已知学生的姓名、学号与5门课程的成绩,你的任务是计算每个学生的平均成绩与总成绩,并将它们输出。学生的姓名中只能包含大小写字母与空格字符,不会超过20个字符;学生的学号是个长度不会超过20的字符串,只包含数字字符;课程成绩均为0—100的整数。

要求:在本题中,你要设计一个结构来存储一个学生的信息。在此结构中,需要有一个字符数组来存储姓名;一个字符数组来存储学号;一个长度为5的整型数组来存储5门课程的成绩;一个双精度浮点型变量存储平均成绩,一个整型变量存储总成绩。然后,你要设计一个结构数组来存储n名学生的信息。

输入格式:
输入首先是一个正整数n,代表学生的数量,1<=n<=100;每名学生的信息按照姓名、学号、5门课程成绩的顺序输入,共占三行。输入具体格式见样例。

输出格式:
姓名占一行;学号占一行;5门课程成绩中间用空格分开,最后一个成绩后是换行符,占一行;平均与总成绩用空格分隔,占一行,平均成绩保留两位小数;每名同学的信息后都再输出一个空行。 注意:每名同学的信息后都再输出一个空行。

输入样例:

4
xiaowang
0821131699999
87 98 79 90 68
Liu Mengmeng
0821131666666
88 90 93 91 85
Albert Einstein
0821131477777
75 87 100 66 64
Bill Gates
0821131588888
65 58 77 60 61

输出样例:

Name:xiaowang
ID:0821131699999
Score:87 98 79 90 68
average:84.40 total:422

Name:Liu Mengmeng
ID:0821131666666
Score:88 90 93 91 85
average:89.40 total:447

Name:Albert Einstein
ID:0821131477777
Score:75 87 100 66 64
average:78.40 total:392

Name:Bill Gates
ID:0821131588888
Score:65 58 77 60 61
average:64.20 total:321
#include <stdio.h>

void pai(int m[], int n);

struct id {
    char mane[32];
    char ID[32];
    int fen[8];
    double ping;
    int zong;
};

int main() {
    int n;
    scanf("%d", &n);
    struct id ssr[110];
    for (int k = 0; k < n; k++) {
        getchar();
        gets(ssr[k].mane);
        gets(ssr[k].ID);
        for (int i = 0; i < 5; i++) {
            scanf("%d", &ssr[k].fen[i]);
        }
        ssr[k].zong = 0;
        for (int i = 0; i < 5; i++) {
            ssr[k].zong = ssr[k].zong + ssr[k].fen[i];
        }
        ssr[k].ping = ((double) ssr[k].zong) / (double) 5;
    }
    struct id *ptr = ssr;
    for (int k = 0; k < n; k++) {
        printf("Name:");
        puts((ptr+k)->mane);
        printf("ID:");
        puts((ptr+k)->ID);
        printf("Score:");
        for (int i = 0; i < 4; i++) {
            printf("%d ", (ptr+k)->fen[i]);
        }
        printf("%d\n", (ptr+k)->fen[4]);
        printf("average:%.2lf total:%d\n", (ptr+k)->ping, (ptr+k)->zong);
        printf("\n");
    }
    return 0;
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值