笔者:“ 以下代码为笔者大一初入C语言的笔记与作业,谨以此记录我的C学习生涯,重要之处皆有注释,若有疑问大可评论区留言。”

题目描述

按时间顺序给出奥运会的获奖情况,根据获奖情况输出当前奥运金牌榜。

输入

第一行一个整数N,代表奖牌的数量。
接下来N行,每行代表国家的名字和奖牌的类型。
为了简化问题,国家名中不存在空格。
N<=500

输出

按金牌数量降序输出每个国家的名称,及金银铜牌的数量,用空格隔开。若金牌数相同,则比较银牌的数量。若金牌银牌的数量都相同,则比较铜牌的数量。

样例输入

10
zhongguo jin
zhongguo tong
meiguo jin
yidali jin
faguo jin
faguo tong
meiguo yin
meiguo yin
eluosi tong
zhongguo jin

样例输出

zhongguo 2 0 1
meiguo 1 2 0
faguo 1 0 1
yidali 1 0 0
eluosi 0 0 1

基本思路

  1. 本题运用结构体存储数据会更加方便,否则需要创建多个伴生数组存储数据。
  2. 比较金银铜数量时应使用权重代替3层if嵌套语句,依次给金银铜赋予不同的权重,比较各个国家的权重之和。
  3. 存储数据的难点为在读入一组新数据时,需要在已有数据结构体数组中遍历是否存过该国家的数据,有则存入,无则创建新的数据结构体。
#include<stdio.h>//按序先存国家名字,遍历数组,如果没有则新占用数组,再存入jin yin tong牌数目,s[1] s[2] s[3]
#include<string.h>int main(){struct medal{char country[1000];int jin;int yin;int tong;int sum;//代表权重}s[1000]={},temp;//temp为后续冒泡排序比较顺序时的缓冲区。char *cmp[3]={"jin","yin","tong"};//用于strcmp()内的比较,strcmp无法直接比较字符串。int m;int count=0;//计数不重复的国家数量int flag;char gj[1000],jp[1000];scanf("%d",&m);for (int i = 0; i < m; i++){scanf("%s %s",gj,jp);flag=0;for (int j = 0; j  < count; j ++){if(strcmp(s[j].country,gj)==0) {flag=1;if(strcmp(cmp[0],jp)==0) {s[j].jin++;s[j].sum+=100000;}if(strcmp(cmp[1],jp)==0) {s[j].yin++;s[j].sum+=1000;}if(strcmp(cmp[2],jp)==0) {s[j].tong++;s[j].sum+=1;}break;}}if(flag==0){//若flag为0则代表之前遍历结构体数组时没有那个国家的数据strcpy(s[count].country,gj);if(strcmp(cmp[0],jp)==0) {s[count].jin++;s[count].sum+=100000;}if(strcmp(cmp[1],jp)==0) {s[count].yin++;s[count].sum+=1000;}if(strcmp(cmp[2],jp)==0) {s[count].tong++;s[count].sum+=1;}count++;}}//												

结构体测验:按时间顺序给出奥运会的获奖情况,根据获奖情况输出当前奥运金牌榜。相关推荐

  1. go var type 互转_Go语言学习笔记(第九章) 结构体

    Go语言基础之结构体 Go语言中没有"类"的概念,也不支持"类"的继承等面向对象的概念.Go 通过类型别名(alias types)和结构体的形式支持用户自定义 ...

  2. Go基础:指针、Map、结构体

    目录 Map 按照指定顺序遍历map 元素为map类型的切片 值为切片类型的map 结构体 类型定义和类型别名的区别 struct 取结构体的地址 结构体没有构造函数,可自己实现 结构体初始化 方式一 ...

  3. 谈结构体struct 初始化多出的点号“.”,数组[]初始化多出的逗号“,”

    结构体struct初始化多出的点号"." 在阅读GNU/Linux内核代码时,我们会遇到一种特殊的结构初始化方式,该方式是书中并没有介绍过的. 这种方式称为指定初始化(design ...

  4. C语言 计算结构体大小

    本文主要参考:结构体内存对齐(如何计算结构体的大小) 前言 数组是相同类型的元素的集合,只要会计算单个元素的大小,整个数组所占空间等于基础元素大小乘上元素的个数. 结构体中的成员可以是不同的数据类型, ...

  5. C++之字节对齐与结构体大小

    说明: 结构体的sizeof值,并不是简单的将其中各元素所占字节相加,而是要考虑到存储空间的字节对齐问题.这些问题在平时编程的时候也确实不怎么用到,但在一些笔试面试题目中出是常常出现, 一.解释 现代 ...

  6. 指针结构体函数-事实上能够这样具体理解

    今天一大早登了下QQ空间,看到本科的一个学弟发表一篇日志.写关于西电微软俱乐部面试题的解答,写的非常不 错. 我也一下子起兴了,由于我以前也是被指针困惑非常久.搞不清头绪,本科到研究生.我也笔试面试不 ...

  7. 【C语言】自定义类型:结构体,位段,枚举,联合

    文章目录 结构体 结构体的声明 结构体变量的定义 结构体的特殊声明 结构体的自引用 结构体的初始化 结构体内存对齐 结构体传参 位段 位段的内存分配 位段的跨平台问题 位段的应用 枚举 联合(共用体) ...

  8. Go语言结构体(struct)

    Go 语言通过用自定义的方式形成新的类型,结构体是类型中带有成员的复合类型.Go 语言使用结构体和结构体成员来描述真实世界的实体和实体对应的各种属性. Go 语言中的类型可以被实例化,使用new或&a ...

  9. 如何计算:结构体内存的大小(在结构体的考察中占据非常重要的地位)

    在之前的文章中,笔者就结构体的简单定义,初始化,等内容,进行了简单描述!!但是,对于int  ,double ,float ,char 等类型都有自己的大小,但是,对于一个结构体,它的大小该如何计算呢 ...

最新文章

  1. MUV LUV EXTRA 2019CCPC秦皇岛站J题 KMP
  2. SQL Server2005的XML数据类型之基础篇 (2)
  3. Lombok 安装、入门 - 消除冗长的 java 代码
  4. 玩转Autorun.inf
  5. Xcode7  创建纯代码的项目
  6. 数组动态初始化【应用】
  7. statusbar 尺寸 显示图标_移动端页面设计规范尺寸大起底 - 椰树飘香
  8. iOS底层原理探究-Runloop
  9. 量子信息与量子计算_量子计算为23美分。
  10. 数据分析初学者必备!10分钟搭建RFM客户价值模型,一学就会
  11. 用三年时间培养 1W 名高素质技术人才,这是一个什么样的计划?
  12. 重磅!谷歌Fuchsia操作系统将支持运行Linux应用程序
  13. Eclipse开发环境下,部署和配置svn的整个过程
  14. C语言基础-01-指针
  15. 支付宝 app,网站支付宝登录
  16. redhat7的wget使用
  17. 计算机蓝屏 代码0000a,win7 64位系统蓝屏代码0x0000000a的原因及解决方法
  18. w3c 菜鸟mysql_W3C 教程 | 菜鸟教程
  19. 关于问答系统(QA)、对话系统(Chatbot)的学与思
  20. 巧妙使用css美化网页

热门文章

  1. MDT2013系列之一 MDT 2013 Update 1安装和部署
  2. 数通 | 从二层、三层的概念切入这段时间学习的数通知识
  3. 益和VA市场发展良好,产品稳定两增一减
  4. python爬虫实例——session自动登录并爬取相关内容
  5. C++:计算A−B,A和B都是字符串,剩下的字符组成的就是字符串A−B。
  6. AU实战操作之混音、降噪
  7. Flask入门学习教程
  8. Android 浏览器分辨率调整,让Android上的浏览器用设备实际像素打开你的网页
  9. 微信小说分销系统设计之使用百度Echarts地图统计功能统计微信粉丝地域分布情况...
  10. Jmeter(十三)阶梯式压测