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

yizhihongxing

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日

相关文章

  • ajax处理返回的json格式数据方法

    下面我会给你详细讲解“ajax处理返回的json格式数据方法”的完整攻略。 步骤一:发起ajax请求 在网页中使用ajax处理json数据通常需要调取服务器端的api,通过发起ajax请求获取json数据。发起ajax请求可以使用像jquery这样的第三方库,以下是一个发起ajax请求的范例代码: $.ajax({ url: ‘/api/getData’, …

    C 2023年5月23日
    00
  • jsoup 框架的使用小结

    下面来详细讲解一下“jsoup 框架的使用小结”的完整攻略。 什么是jsoup框架 jsoup是一个Java的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了类似于JQuery的CSS选择器,用于从HTML解析出DOM,也可用于HTML的提取和转换。 jsoup框架的安装和使用步骤 安装方式 直接从官网下载jar包:https://jso…

    C 2023年5月23日
    00
  • C 程序 按升序排列数字

    下面我将为你详细讲解如何使用 C 语言编写一个程序,实现对一组数字按升序排列的功能。在这个过程中,我将提供两条示例说明,帮助你更好地理解。 一、题目描述 编写一个 C 语言程序,实现对一组数值按升序排列的功能。程序输入一个整数数组,长度不超过 100,输出数组按升序排列后的结果。 二、实现思路 我们可以使用 C 语言中的冒泡排序算法来实现对一组数字的升序排列…

    C 2023年5月9日
    00
  • C语言实现简单学生信息管理系统

    C语言实现简单学生信息管理系统 概述 学生信息管理系统是一个常见的小型项目,可以通过C语言进行实现。本文将介绍如何使用C语言实现一个简单的学生信息管理系统。 功能要求 学生信息管理系统应该具备以下功能:1. 添加学生信息2. 修改学生信息3. 删除学生信息4. 打印学生信息5. 退出系统 基本思路 我们可以通过定义一个结构体来表示一个学生的相关信息,然后将多…

    C 2023年5月23日
    00
  • AI绘制一副潜水员深海冒险场景插画教程

    标题:AI绘制一副潜水员深海冒险场景插画教程 正文:本教程将介绍如何使用AI绘制一副潜水员深海冒险场景插画,具体步骤如下: 准备工作 下载并安装AI设计软件(如Adobe Illustrator) 准备相关素材(如潜水员图片、深海生物图片、海底场景图片等) 绘制潜水员 打开AI设计软件,并导入潜水员图片 选择画笔工具,对潜水员进行描边和填充操作,注意保留细节…

    C 2023年5月22日
    00
  • VSCode 配置C++开发环境的方法步骤

    下面是VSCode配置C++开发环境的详细步骤攻略: 步骤一:安装VSCode和MinGW 如果你还没有安装VSCode和MinGW,那么你需要先去官网下载安装。 VSCode官网:https://code.visualstudio.com/ MinGW官网:http://www.mingw.org/ 步骤二:安装C/C++扩展 打开VSCode,在左侧菜单…

    C 2023年5月23日
    00
  • 怎样竖着选择Word中的文字 Word中Alt与Ctrl的冷门技巧

    怎样竖着选择Word中的文字 在Word中,我们可以使用鼠标和键盘操作来竖着选择文字。以下是具体步骤: 首先,在Word中打开需要编辑的文档。 将光标移动到要选择的起始位置。 按住Alt键,在键盘上按下鼠标右键,此时会出现光标箭头的横向和纵向选择线。 同时按住Shift键,按下方向键进行选择。可以选择向上、向下、向左和向右。 当选择到想要的位置后,松开Shi…

    C 2023年5月23日
    00
  • windows XP系统Stop c0000218 unknown hard error 蓝屏故障的解决方法

    Windows XP系统Stop c0000218 unknown hard error 蓝屏故障的解决方法 如果你的Windows XP系统出现了Stop c0000218 unknown hard error蓝屏故障,并且无法正常启动,那么请按照以下步骤进行故障排除。 步骤一:使用Windows XP安装光盘或启动盘启动计算机 插入Windows XP安…

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