1004 成绩排名(C语言)_qq_42766764的博客-程序员秘密_c语言 排名题

技术标签: PAT  字符串  指针  数据结构  

题目

读入 n(>0)名学生的姓名、学号、成绩,分别输出成绩最高和成绩最低学生的姓名和学号。

输入格式

每个测试输入包含 1 个测试用例,格式为

第 1 行:正整数 n
第 2 行:第 1 个学生的姓名 学号 成绩
第 3 行:第 2 个学生的姓名 学号 成绩
  ... ... ...
第 n+1 行:第 n 个学生的姓名 学号 成绩

其中姓名和学号均为不超过 10 个字符的字符串,成绩为 0 到 100 之间的一个整数,这里保证在一组测试用例中没有两个学生的成绩是相同的。

输出格式

对每个测试用例输出 2 行,第 1 行是成绩最高学生的姓名和学号,第 2 行是成绩最低学生的姓名和学号,字符串间有 1 空格。

输入样例

3
Joe Math990112 89
Mike CS991301 100
Mary EE990830 95

输出样例

Mike CS991301
Joe Math990112

代码

#include<stdio.h>
#include<malloc.h>
//定义一个结构体来存储数据
typedef struct student {
    
    int score;
    char name[15];
    char studentId[15];
} stu;

int main(void) {
    
	//两个指针,分别指向分数最大和最小的元素
    stu *max=NULL, *min=NULL;
    stu* s;
    int n;
    scanf_s("%d", &n);
    //动态申请数组,防止题目的数据量太大,“n名”是个很有意思的东西
    s = (stu*)malloc(sizeof(stu) * n);
    max = &s[0];
    min = &s[0];
    for (int i = 0; i < n; i++) {
    
    	//注意运算符优先级
        scanf_s("%s",(s[i]).name, 13);
        scanf_s("%s",(s[i]).studentId, 13);
        scanf_s("%d",&(s[i].score));
        //如果分数更高,就让max指针指向这个元素
        if (max->score < s[i].score) {
    
            max = &s[i];
        }
        if (min->score > s[i].score) {
    
            min = &s[i];
        }
    }
    printf("%s %s\n", max->name, max->studentId);
    printf("%s %s\n", min->name, min->studentId);
}

思路

这题是容易题。只需要定义一个数据结构即可,然后就是简单的寻找最大、最小值。但需要注意的是运算符[].&的优先级。其中[].优先级最高,从左往右结合。但建议使用()确保优先级准确性。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_42766764/article/details/107692613

智能推荐

[YTU]_2439( C++习题 复数类--重载运算符+)_weixin_30824479的博客-程序员秘密

题目描述定义一个复数类Complex,重载运算符“+”,使之能用于复数的加法运算。将运算符函数重载为非成员、非友元的普通函数。编写程序,求两个复数之和。输入两个复数输出复数之和样例输入3 45 -10样例输出(8.00,-6.00i)#include &lt;iostream&gt;#include &lt;iomanip&g...

linux挂载命令mount详解_weixin_30782293的博客-程序员秘密

&lt;&lt;命令格式:mount [-t vfstype] [-o options] device dir&gt;&gt;1 -t vfstype 指的是挂载的文件系统的类型,通常不用指定,mount会自动识别文件系统类型;光盘或者镜像文件系统类型:iso9660DOS fat16文件系统:msdoswindows9x fat32:vfatwindows NT n...

[shell][原创]shell脚本遍历文件夹下所有文件_shell遍历文件夹所有文件_FL1623863129的博客-程序员秘密

遍历文件夹下所有文件,不包含子目录:getfilesordir(){ for file in `ls $1` do if test -f $file then echo "file: $file" elif test -d $file then echo "path: $file" fi done}path="./"getfilesordir...

解决exp-00091办法_C&Z的博客-程序员秘密

解决oracle exp-00091办法我们在使用oracle中的exp工具进行导出的时候,可能会遇到exp-00091错误,如下图所示。首先肯定的是这个问题不影响我们imp进行导入操作,但是有这些错误信息总让人很不舒服,下面我们就来进行解决它。解决办法一:如果用数据泵的方式进行导出将可以无视该错误,其导出模式如下:expdp test/te

【工具-IDEA】如何在IDEA里面只运行一个java文件,而不是编译运行整个项目_idea只运行一个文件而不是整个工程_Japathy的博客-程序员秘密

点击Edit Configurations...点击build,然后点击上面的—,不让它编译整个项目即可。你运行的时候直接点run xxx.main就可以运行了。

随便推点

基于SSM的大学生就业信息管理系统_2016855150的博客-程序员秘密

项目运行截图登录系统 账号密码 admin/admin搜索条件,管理就业信息列表添加 编辑就业信息统计信息技术描述开发工具: idea/eclipse数据库: mysqlJar包仓库: Maven前段框架:jquery/Html/Thymeleaf后端框架: spring+springmvc+mybatis+springboot资料说明基于SSM框架的大学生就业信息管理系统,项目整体采用SSM框架,Spr

机器学习模型评估指标总结!_zenRRan的博客-程序员秘密

Datawhale干货作者:太子长琴,Datawhale优秀学习者本文对机器学习模型评估指标进行了完整总结。机器学习的数据集一般被划分为训练集和测试集,训练集用于训练模型,测试集则用...

愚公移山_节选(伪代码)_慕木子的博客-程序员秘密

愚公移山.JAVApublic class 愚公移山{public static void main(String[] args){//虽我之死,有子存焉;子又生孙,孙又生子;子又有子,子又有孙;子子孙孙无穷匮也int n=0;//用来计算子孙while(山存){while(愚公尚存){移山;}if(愚公死&amp;&amp;有子存){n++;while(n!=0){移山;}}}}}...

linux c 线程等待和线程睡眠,linux c之使用pthread_create创建线程pthread_join等待线程和pthread_exit终止线程总结..._多腮寇的博客-程序员秘密

1、介绍API1、pthread_create函数函数简介pthread_create是UNIX环境创建线程函数头文件#include函数声明int pthread_create(pthread_t *restrict tidp,const pthread_attr_t *restrict_attr,void*(*start_rtn)(void*),void *restrict arg);返回值若...

十年来嵌入式软件最有价值的书籍_李肖遥的博客-程序员秘密

关注、星标公众号,直达精彩内容来源:技术让梦想更伟大作者:李肖遥真正有所发现的旅程不是指找到一片新大陆,而是拥有一双新的眼睛。大牛Mira Samek就有这么一双新的眼睛。《嵌入式系统的微...

Windows 10 安装 WSL 2 - Ubuntu 18.04_糖颗丶的博客-程序员秘密

Windows 10 安装 WSL 2 - Ubuntu 18.041. 将 Windows 10 更新到最新版本2. 启用"适用于 Linux 的 Windows 子系统"可选功能3. 启用虚拟机功能4. 下载 Linux 内核更新包5. 将 WSL 2 设置为默认版本6. 安装 Ubuntu 18.047. 配置 Ubuntu 18.048. 开启systemctl命令9. 配置 SSH10. 安装docker参考文档:https://docs.microsoft.com/zh-cn/windows

推荐文章

热门文章

相关标签