栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言实现结构体求学生最高分和平均分

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言实现结构体求学生最高分和平均分

要求如下:
第一行输入一个整数n;

接下来n行,每行先输入学生姓名(不超过10个字符,名字内不包含空格),再依次输入该学生的语文,数学,英语成绩,分数范围为[0,100]。

输出有三行,每行两个数(最高分与平均分),保留一位小数;三行依次代表语文,数学,英语。

实现思想是可以根据一下表格看出:

如果是这样的分数输入

 

 

 

语文数学英语
Peter788567
susam896995
jack908387

 则输出应该是这样的:

语文最高分90.0语文平均分85.7
数学最高分85.0数学平均分77.7
英语最高分95.0英语平均分

83.0

注释:红色是输出的内容

最高分在同一列中找最高的,平均分也是求一列的平均数,因此可用如下代码实现:

求最高分:

for (j = 0; j < 3; j++)
    {
        for (i = 0; i < n; i++)
        {
            if (max[j] < s[i].sc[j])
                max[j] = s[i].sc[j];
        }
    }

求平均分:

or (j = 0; j < 3; j++)
    {
        sum = 0;
        for (i = 0; i < n; i++)
            sum = sum + s[i].sc[j];
        ave[j] = sum / n;
    }

来实现两个功能。

用结构体实现的完整代码如下:


#include
//设计表示学生信息的结构体,包含成员:姓名,3门课程成绩。结构体类型别名为STU
typedef struct Student
{
    char name[10];
    double sc[3];
}STU;
STU s[42];
int main()
{
    int n, i, j;
    double max[3] = { -1,-1,-1 }, ave[3] = { 0 }, sum;

    scanf("%d", &n);

    for (i = 0; i < n; i++)
    {
        scanf("%s", s[i].name);
        for (j = 0; j < 3; j++)
            scanf("%lf", &s[i].sc[j]);

    }

    //对每一门课程,求出平均分
    for (j = 0; j < 3; j++)
    {
        sum = 0;
        for (i = 0; i < n; i++)
            sum = sum + s[i].sc[j];
        ave[j] = sum / n;
    }
    //对每一门课程,求出最高分
    for (j = 0; j < 3; j++)
    {
        for (i = 0; i < n; i++)
        {
            if (max[j] < s[i].sc[j])
                max[j] = s[i].sc[j];
        }
    }
    for (j = 0; j < 3; j++)
        printf("%.1f %.1fn", max[j], ave[j]);
    return 0;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/913616.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号