C语言实现歌手大奖赛计分程序

C语言实现歌手大奖赛计分程序

程序实现功能

本程序主要实现歌手大奖赛计分功能,包括对选手的评分以及最终的排名输出。

实现思路

程序主要分为以下几个步骤进行实现:

  • 获取选手总数
  • 获取评委人数
  • 获取选手分数
  • 对选手的得分进行排序
  • 最终输出选手排名

具体实现步骤

获取选手总数以及评委人数

可以使用scanf函数来获取用户输入的选手总数以及评委人数。

int singer_num, judge_num;
scanf("%d %d", &singer_num, &judge_num);

获取选手分数

可以使用双重循环来获取每个选手的分数,外循环遍历选手,内循环遍历每个评委。

int score[singer_num][judge_num];
for (int i = 0; i < singer_num; i++) {
    for (int j = 0; j < judge_num; j++) {
        scanf("%d", &score[i][j]);
    }
}

对选手的得分进行排序

可以使用冒泡排序对每个选手的分数进行排序。外循环遍历每个选手,内循环遍历每个评委,对每个选手的分数求平均值,并将平均值和选手编号保存到一个结构体数组中。最后对结构体数组按照平均值进行排序。

typedef struct {
    int num;
    double avg_score;
} Singer;

Singer singers[singer_num];
for (int i = 0; i < singer_num; i++) {
    double total_score = 0;
    for (int j = 0; j < judge_num; j++) {
        total_score += score[i][j];
    }
    singers[i].num = i + 1;
    singers[i].avg_score = total_score / judge_num;
}

for (int i = 0; i < singer_num; i++) {
    for (int j = 0; j < singer_num - i - 1; j++) {
        if (singers[j].avg_score < singers[j + 1].avg_score) {
            Singer tmp = singers[j];
            singers[j] = singers[j + 1];
            singers[j + 1] = tmp;
        }
    }
}

最终输出选手排名

可以使用循环遍历结构体数组,输出每个选手的排名以及平均分数。可以使用printf函数输出。

for (int i = 0; i < singer_num; i++) {
    printf("%d %.2lf\n", singers[i].num, singers[i].avg_score);
}

示例说明

示例一

输入:

3 5
88 99 60 70 95
90 80 85 75 90
88 70 85 90 90

输出:

2 86.00
1 82.40
3 84.60

示例二

输入:

4 6
90 80 70 60 50 40
80 70 60 50 40 30
90 80 70 60 50 40
80 70 60 50 40 30

输出:

1 68.33
3 68.33
2 65.00
4 58.33

完整代码

#include <stdio.h>

typedef struct {
    int num;
    double avg_score;
} Singer;

int main()
{
    int singer_num, judge_num;
    scanf("%d %d", &singer_num, &judge_num);

    int score[singer_num][judge_num];
    for (int i = 0; i < singer_num; i++) {
        for (int j = 0; j < judge_num; j++) {
            scanf("%d", &score[i][j]);
        }
    }

    Singer singers[singer_num];
    for (int i = 0; i < singer_num; i++) {
        double total_score = 0;
        for (int j = 0; j < judge_num; j++) {
            total_score += score[i][j];
        }
        singers[i].num = i + 1;
        singers[i].avg_score = total_score / judge_num;
    }

    for (int i = 0; i < singer_num; i++) {
        for (int j = 0; j < singer_num - i - 1; j++) {
            if (singers[j].avg_score < singers[j + 1].avg_score) {
                Singer tmp = singers[j];
                singers[j] = singers[j + 1];
                singers[j + 1] = tmp;
            }
        }
    }

    for (int i = 0; i < singer_num; i++) {
        printf("%d %.2lf\n", singers[i].num, singers[i].avg_score);
    }

    return 0;
}

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言实现歌手大奖赛计分程序 - Python技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • gin 获取post请求的json body操作

    获取post请求的json body操作指的是在网站的后端处理中,从请求中获取客户端使用POST方式提交的JSON数据。在Gin框架中,可以使用以下步骤来实现该操作。 1. 引入相关库 在Go中,可以使用标准库encoding/json来处理JSON数据。为了在Gin框架中方便处理JSON数据,需要引入github.com/gin-gonic/gin库。 i…

    C 2023年5月23日
    00
  • C字符串操作函数实现方法小结

    C字符串操作函数实现方法小结 在C语言中,字符串操作是很常见的操作。C标准库提供了常用的字符串函数,例如sprintf、strstr等。但是,如果熟练掌握字符串操作函数的实现方法,不仅能够更深刻理解C语言中的字符串操作,而且可以提高我们的代码效率。在本文中,我们将介绍C字符串操作函数的实现方法,并实现一些常见的函数。 1. strlen函数的实现 strle…

    C 2023年5月23日
    00
  • json的定义、标准格式及json字符串检验

    JSON是JavaScript对象表示法(JavaScript Object Notation)的缩写,是一种轻量级的数据交换格式。 JSON的定义 JSON是一种用于数据交换的文本格式,和XML一样,JSON也是一种纯文本格式,可以轻松地在网络中传递。JSON使用JavaScript语法来描述数据,但是JSON仅仅是一种数据格式,不是一种编程语言,所以它是…

    C 2023年5月23日
    00
  • C++日期和时间编程小结

    C++日期和时间编程小结完整攻略 本文将介绍使用C++编程语言来获取和处理日期和时间的相关技巧和知识。首先,我们需要了解C++标准库中关于日期和时间的头文件<chrono>和<ctime>。 头文件介绍 头文件\ 在C++11标准中,引入了一个新的日期和时间库<chrono>,它提供了丰富的日期和时间操作工具。通过<…

    C 2023年5月23日
    00
  • 深入理解Java虚拟机_动力节点Java学院整理

    深入理解Java虚拟机攻略 什么是Java虚拟机 Java虚拟机(Java Virtual Machine,JVM)是Java程序运行的基石,是一个能够运行Java字节码的虚拟计算机。Java虚拟机是Java技术的核心,它是Java程序跨平台特性的实现基础。理解Java虚拟机的工作原理和内部机制对于Java开发人员来说是非常重要的。 深入理解Java虚拟机的…

    C 2023年5月23日
    00
  • 使用SpringBoot AOP 记录操作日志、异常日志的过程

    使用SpringBoot AOP记录操作日志、异常日志的过程可以分为以下几步: 导入依赖 在pom.xml文件中,需要导入aop和log4j等相关依赖,具体可参考以下代码: <!– aop –> <dependency> <groupId>org.springframework.boot</groupId>…

    C 2023年5月22日
    00
  • 浅谈文章排名 百度是如何给网页排序的

    下面就来详细讲解“浅谈文章排名 百度是如何给网页排序的”的完整攻略,包含以下几个方面: 前言 搜索引擎是我们日常生活中必不可少的一环,百度是国内最大的搜索引擎之一。在百度搜索结果页面中,排名靠前的网页往往会获得更多的流量和点击量,这对于网站的SEO来说非常重要。那么,百度是如何给网页排序的呢? 百度排序算法 百度的排序算法主要是基于网页的关键词匹配程度和网页…

    C 2023年5月22日
    00
  • C语言实现简单通讯录系统

    C语言实现简单通讯录系统攻略 1. 确定功能需求 在开始编写代码前,需要明确实现的功能需求。一个简单的通讯录功能包含以下几个方面: 添加联系人; 显示联系人列表; 修改联系人信息; 删除联系人。 2. 设计数据结构 在C语言中,可以使用结构体来存储联系人的相关信息。为了方便,我们可以使用动态内存分配来动态地创建存储联系人的结构体。 typedef struc…

    C 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部