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

这篇博客介绍了如何使用C语言和结构体来解决按时间顺序给出奥运会获奖情况并输出当前奥运金牌榜的问题。作者分享了大一学习C语言时的笔记,详细解释了输入输出要求、样例以及基本解题思路,强调了结构体在存储和比较奖牌数据中的重要性。
摘要由CSDN通过智能技术生成

笔者:“ 以下代码为笔者大一初入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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值