C语言刷题系列——17.计算平均成绩 18.找出总分最高的学生19.通讯录排序

news2024/12/28 20:50:55

结构 - PTA练习题

  • 🐤计算平均成绩
    • 🏀 题目要求
    • 🏀 题解
      • 💻step1.定义结构体
      • 💻step2.输入N;随后N行 每行给出一位学生的信息
      • 💻step3.求平均值
      • 💻step4.输出平均线以下的学生的信息
      • 🐳完整代码
  • 🐤找出总分最高的学生
    • 🏀 题目要求
    • 🏀 题解
      • 💻step1.定义结构体
      • 💻step2.输入N;随后N行 每行给出一位学生的信息
      • 💻step3.筛选总分最高的学生
      • 🐳完整代码
  • 🐤通讯录排序
    • 🏀 题目要求
    • 🏀 题解
      • 💻step1.定义结构体
      • 💻step2.输入n;随后n行 每行给出一个朋友的信息
      • 💻step3.按照年龄从大到小输出
      • 🐳完整代码

🐤计算平均成绩

🏀 题目要求

给定N个学生的基本信息,包括学号(由5个数字组成的字符串)、姓名(长度小于10的不包含空白字符的非空字符串)和成绩([0,100]区间内的整数),要求计算他们的平均成绩,并顺序输出平均线以下的学生名单。

输入格式:

输入在一行中给出正整数N(≤10)。随后N行,每行给出一位学生的信息,格式为“学号 姓名 成绩”,中间以空格分隔。

输出格式:

首先在一行中输出平均成绩,保留2位小数。然后按照输入顺序,每行输出一位平均线以下的学生的姓名和学号,间隔一个空格。
在这里插入图片描述

🏀 题解

💻step1.定义结构体

struct Student
{
    char xuehao[5];//由5个数字组成的字符串
    char name[10];//长度小于10的非空字符串
    int score;
}xs[10];//因为N <= 10

💻step2.输入N;随后N行 每行给出一位学生的信息

int main()
{
    int N;
    scanf("%d",&N); //输入N
    double sum=0;
    int i;
    for(i = 0;i<N;i++)
    {
        scanf("%s %s %d",&stu[i].xuehao,&stu[i].name,&stu[i].score);
        getchar();//读换行
         sum+=xs[i].score;
    }
    return 0;
 }

💻step3.求平均值

    double average = 1.0*sum/N;
    printf("%.2lf\n",average);//保留2位小数

💻step4.输出平均线以下的学生的信息

for(i = 0;i<N;i++)
    {
        if(stu[i].score<average)
            printf("%s %s\n",stu[i].name,stu[i].xuehao);
    }

🐳完整代码

#include<stdio.h>
struct Student
{
    char xuehao[10];
    char name[15];
    int score;
}xs[10];

int main()
{
    int N,i;
    scanf("%d",&N); 
    double sum=0;
    for(i = 0;i<N;i++)
    {
        scanf("%s %s %d",&stu[i].xuehao,&stu[i].name,&stu[i].score);
        getchar();
         sum+=xs[i].score;
    }
    double average = 1.0*sum/N;
    printf("%.2lf\n",average);
    
    for(i = 0;i<N;i++)
    {
        if(stu[i].score<average)
            printf("%s %s\n",stu[i].name,stu[i].xuehao);
    }
    return 0;
}

🐤找出总分最高的学生

🏀 题目要求

给定N个学生的基本信息,包括学号(由5个数字组成的字符串)、姓名(长度小于10的不包含空白字符的非空字符串)和3门课程的成绩([0,100]区间内的整数),要求输出总分最高学生的姓名、学号和总分。

输入格式:

输入在一行中给出正整数N(≤10)。随后N行,每行给出一位学生的信息,格式为“学号 姓名 成绩1 成绩2 成绩3”,中间以空格分隔。

输出格式:

在一行中输出总分最高学生的姓名、学号和总分,间隔一个空格。题目保证这样的学生是唯一的。
在这里插入图片描述

🏀 题解

💻step1.定义结构体

struct Student
{
    char ID[5];
    char name[10];
    int score_1;//最好定义三个score变量,用数组的话会有问题(亲测)
    int score_2;
    int score_3;
}stu[10];

💻step2.输入N;随后N行 每行给出一位学生的信息

int main()
{
    int N,i;
    scanf("%d",&N);//输入N
    for(i = 0;i<N;i++)
    {
        scanf("%s%s%d%d%d",stu[i].ID,stu[i].name,&stu[i].score1,&stu[i].score2,&stu[i].score3);
        getchar();//读换行符
    }
    //继续
    return 0;
}

💻step3.筛选总分最高的学生

先假设总分最高(max)的是第一个学生(stu[ 0 ])
再进入循环,计算每一个学生的总分,如果大于max,则max 等于该学生,记录下此时对应数组的下标x

 int max=stu[0].score1+stu[0].score2+stu[0].score3;
    int x;
    for(i = 0;i<N;i++)
    {
        int tem = 0;
        tem += stu[i].score1+stu[i].score2+stu[i].score3;
        if(tem>max)
        {
            max = tem;
            x = i;
        }
    }
    printf("%s %s %d",stu[x].name,stu[x].ID,max);
    //打印出下标为x的学生的姓名学号和总分即可

🐳完整代码

#include<stdio.h>
struct Student
{
    char ID[5];
    char name[10];
    int score_1;
    int score_2;
    int score_3;
}stu[10];

int main()
{
    int N;
    scanf("%d",&N);
    int i;
    for(i = 0;i<N;i++)
    {
        scanf("%s%s%d%d%d",stu[i].ID,stu[i].name,&stu[i].score1,&stu[i].score2,&stu[i].score3);
        getchar();
    }
    
    int max=stu[0].score1+stu[0].score2+stu[0].score3;
    int x;
    for(i = 0;i<N;i++)
    {
        int tem = 0;
        tem += stu[i].score1+stu[i].score2+stu[i].score3
        if(tem>max)
        {
            max = tem;
            x = i;
        }
    }
    
    printf("%s %s %d",stu[x].name,stu[x].ID,max);
    return 0;
}

🐤通讯录排序

🏀 题目要求

输入n个朋友的信息,包括姓名、生日、电话号码,本题要求编写程序,按照年龄从大到小的顺序依次输出通讯录。题目保证所有人的生日均不相同。

输入格式:

输入第一行给出正整数n(<10)。随后n行,每行按照“姓名 生日 电话号码”的格式给出一位朋友的信息,其中“姓名”是长度不超过10的英文字母组成的字符串,“生日”是yyyymmdd格式的日期,“电话号码”是不超过17位的数字及+、-组成的字符串。

输出格式:

按照年龄从大到小输出朋友的信息,格式同输出。

在这里插入图片描述

🏀 题解

💻step1.定义结构体

struct Friend
{
    char name[10];
    int birth;
    char num[20];//比17大一点
}fri[10];

💻step2.输入n;随后n行 每行给出一个朋友的信息

int main()
{
    int n;
    scanf("%d",&n);
    int i = 0;
    for(i = 0;i<n;i++)
    {
        scanf("%s%d%s",fri[i].name,&fri[i].birth,fri[i].num);
        getchar();
    }
    //继续
    return 0;
}

💻step3.按照年龄从大到小输出

⭐注意注意注意,年龄越大,yyyymmdd越小
不要算反账!!!
(如20040101的年龄大于20050422的)

就是个选择排序,代码如下

int min = 0,j;
    for(i = 0;i<n-1;i++)
    {
        min = i;
        for(j = i+1;j<n;j++)
        {
            if(r=fri[min].birth>fri[j].birth)
            {
                min = j;
            }
        }
        
        if(i!=min)
        {
            struct Friend tem = fri[i];
            fri[i] = fri[min];
            fri[min] = tem;
        }
    }

🐳完整代码

#include<stdio.h>
struct Friend
{
    char name[10];
    int birth;
    char num[20];
}fri[10];

int main()
{
    int n;
    scanf("%d",&n);
    int i = 0;
    for(i = 0;i<n;i++)
    {
        scanf("%s%d%s",fri[i].name,&fri[i].birth,fri[i].num);
        getchar();
    }
    
    int min = 0,j;
    for(i = 0;i<n-1;i++)
    {
        min = i;
        for(j = i+1;j<n;j++)
        {
            if(r=fri[min].birth>fri[j].birth)
            {
                min = j;
            }
        }
        
        if(i!=min)
        {
            struct Friend tem = fri[i];
            fri[i] = fri[min];
            fri[min] = tem;
        }
    }
    
    for(i = 0;i<n;i++)
    {
        printf("%s %d %s\n",fri[i].name,fri[i].birth,fri[i].num);
    }
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/115480.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据可视化最简单的方式-饼状图,折线图,条形图

一个软件或者网站分为前端&#xff0c;后端。 后端传统意义就是处理后端的数据。 后端又分为数据库编程人员和后端业务逻辑人员。 前端顾名思义解决后端传递的数据。传递的数据如何显示是前端人员考虑的问题。 前端人员不光要设计好网页界面&#xff0c;而且要将数据的可视…

嵌入式:ARM协处理器指令总结

文章目录&#xff08;一&#xff09;协处理器的数据操作二进制编码汇编格式&#xff08;二&#xff09;协处理器的数据存取二进制编码汇编格式&#xff08;三&#xff09;协处理器的寄存器传送二进制编码汇编格式未使用的指令空间ARM支持16个协处理器&#xff0c;用于各种协处理…

java Redis基础 数据类型 常用命令 java中使用Redis

Redis是一个基于内存的key-value结构数据库。 Redis入门 Redis简介 Redis应用场景&#xff1a; Redis 下载与安装 Windows版下载地址&#xff1a;https://github.com/microsoftarchive/redis/releases Linux版下载地址&#xff1a; https://download.redis.io/releases/ Red…

Java 中的main方法原理介绍。

//深入了解main方法 // 解释main方法的形式为什么是这样写的&#xff1f; // public static void main(String[] args) // 问题1&#xff1a;是谁调用main方法&#xff1f; // java虚拟机调用main方法&#xff0c;所以main的访问权限是public // 问题2&#xff1a;为什么是st…

电竞游戏蓝牙耳机哪个牌子好?电竞游戏蓝牙耳机排行榜

喜欢玩游戏或是追剧的话&#xff0c;佩戴蓝牙耳机更加不易受到外界的干扰&#xff0c;传输效果好的蓝牙耳机能够带来更好的画面感和立体感&#xff0c;那么电竞游戏蓝牙耳机哪个牌子好呢&#xff1f;以下是小编整理的几款当前值得入手的游戏蓝牙耳机。 第一款&#xff1a;南卡…

Java多线程之线程安全问题

文章目录一. 线程安全概述1. 什么是线程安全问题2. 一个存在线程安全问题的程序二. 线程不安全的原因和线程加锁1. 案例分析2. 线程加锁2.1 理解加锁2.2 synchronized的使用2.3 再次分析案例3. 线程不安全的原因三. 线程安全的标准类一. 线程安全概述 1. 什么是线程安全问题 …

【QGIS入门实战精品教程】7.1:QGIS面状数据符号化设置案例教程

本文讲解QGIS空间数据符号化设置。 文章目录 一、符号化模式详解1. 单一色彩2. 字段分类3. 渐进4. 基于规则5. 翻转多边形6. 2.5维二、样式文件的保存与使用1. 保存样式文件2. 载入样式文件一、符号化模式详解 1. 单一色彩 数据加载后,默认显示单一色彩符号化模式,可以进行…

采购管理系统能为企业带来哪些好处?

随着信息化技术的不断发展&#xff0c;很多企业采购组织利用信息化手段来进行采购管理已然成为了一种趋势。 而且在日趋激烈的市场竞争与疫情影响下&#xff0c;企业的成本竞争优势显得尤为重要&#xff0c;据有关调查数据显示&#xff0c;许多企业成本中的70%是采购成本&…

[Flask]数据库的连接和操作

一、安装连接程序 在控制台中使用语句 pip install pymysql 即可安装 同时为了使用ORM对数据库进行操作&#xff08;而非sql语句&#xff09;&#xff0c;还需要安装SQLAlchemy pip install flask-sqlalchemy 二、使用Navicat管理数据库 安装Navicat软件&#xff0c;本体需要…

软件企业认证的条件是什么?

一、双软认证企业的认证标准&#xff1a; 1.企业法人是在我国的境内设立的企业法人; 2.企业计算机的软件开发和生产制造、系统集成、应用服务和其他有关技术服务为其经营业务及主要营业收入; 3.有一种以上由本企业开发或是由本企业具备知识产权的软件产品&#xff0c;或给…

绪论

&#x1f64c;作者简介&#xff1a;数学与计算机科学学院出身、在职高校高等数学专任教师&#xff0c;分享学习经验、生活、 努力成为像代码一样有逻辑的人&#xff01; &#x1f319;个人主页&#xff1a;阿芒的主页 ⭐ 高等数学专栏介绍&#xff1a;本专栏系统地梳理高等数学…

网络交换的技术

文章目录1、背景2、电路交换2.1、电路交换的特点2.2、电路交换的缺点3、分组交换3.1、分组交换的主要特点3.2、分组交换的传输单元3.3、分组交换的优点3.4、分组交换的缺点4、报文交换5、三种报文的区别1、背景 网络交换技术共经历了四个发展阶段: 电路交换技术(19世纪末)报文…

带你学懂数据结构中的八大排序(上)

✨个人主页&#xff1a; Yohifo &#x1f389;所属专栏&#xff1a; 数据结构 | C语言 &#x1f38a;每篇一句&#xff1a; 图片来源 Every challenge, every adversity, contains within it the seeds of opportunity and growth. 每个挑战&#xff0c;每次逆境&#xff0c;里…

山外山在科创板上市:市值约47亿元,高光勇为实际控制人

12月26日&#xff0c;重庆山外山血液净化技术股份有限公司&#xff08;下称“山外山”&#xff0c;SH:688410&#xff09;在上海证券交易所科创板上市。本次上市&#xff0c;山外山的发行价格为32.30元/股&#xff0c;发行市盈率为297.74倍。 据贝多财经了解&#xff0c;山外山…

vivo 低代码平台【后羿】的探索与实践

作者&#xff1a;vivo 互联网前端团队- Wang Ning 本文根据王宁老师在“2022 vivo开发者大会"现场演讲内容整理而成。公众号回复【2022 VDC】获取互联网技术分会场议题相关资料。 本文主要从前后端分离的低代码方案、自研高性能渲染引擎、高效的可视化配置方案、千亿级内容…

基于yolov5s实践国际象棋目标检测模型开发

在我前面的一篇文章中讲解实现了基于改进的yolov5s-spd模型实现了五子棋目标对象检测模型系统的设计开发&#xff0c;这里紧接前文&#xff0c;突发奇想&#xff0c;是否可以借鉴同样的思路实现象棋的检测模型开发呢&#xff1f;理论上面肯定是可以的&#xff0c;但是实际效果如…

FineReport企业报表-配置MySQL8外接数据库(2)

1. 配置外接数据库 1.1 外接数据库配置入口 外接数据库的配置入口&#xff0c;有三种形式&#xff1a; 1&#xff09;超级管理员第一次登录数据决策系统时&#xff0c;即可为系统配置外接数据库。如下图所示&#xff1a; 2&#xff09;对于使用内置数据库的系统&#xff0c;管…

burpsuite——身份验证

文章目录通过不同响应枚举用户名2FA 简单旁路密码重置破坏逻辑通过细微不同的响应枚举用户名通过响应计时的用户名枚举破解暴力保护&#xff0c;IP 封锁通过帐户锁定的用户名枚举2FA 破坏逻辑暴力破解保持登录状态的 cookie通过不同响应枚举用户名 就是所谓的暴力破解&#xff…

如何将高程数据转成南方CASS的DAT格式

需要的工具 BIGEMPA GIS Office 下载地址&#xff1a;http://download.bigemap.com/bmsetup.rar 第一步&#xff1a;将下载好的高程数据DEM直接拖到global mapper中(如何下载高程DEM&#xff1f;)&#xff0c;如下图所示&#xff1a; 第二步&#xff1a;将DEM数据保存为高程点…

A - No Majority(DP 动态规划)[AtCoder Grand Contest 060]

题目如下&#xff1a; 思路 or 题解&#xff1a; 对于一个子串&#xff0c; 如果长度为 lenlenlen, 如果该子串中任意一个字符的出现个数 大于 len2\frac{len}{2}2len​ 那该字符串为 UngoodUngoodUngood 串 反之&#xff0c;如果任意子串&#xff0c; 长度设为 lenlenlen, 如…