利用C语言结构体解决“各个国家体育竞赛获奖排名”问题

一.题目描述:

     输入一个正整数N代表国家个数,紧接着输入国家名称,该国家获得金牌数目,获得银牌数目,获得铜牌数目。然后根据输入输出国家获奖排名,排名规则是首先按金牌排名,如果金牌相同则比较银牌,如果银牌也相同,则比较铜牌数目,否则按照输入顺序输出排名。

二.输入输出样例:

输入:                                                         

China   32 28 34

England  12 34 22

France 23 33 2

Japan 12 34 22

Rusia 23 43 0

 输出:

China

Rusia

France

England

Japan

三.解题思想:首先这题要求用c语言实现,所以可以采用c语言中的结构体来存储各个国家的名称以及获奖情况,然后进行排序。常见的排序算法有很多,这题中采用冒泡排序,只不过所用的冒泡排序是添加了一些条件的排序。

关于冒泡排序:外循环为排序趟数,len个元素需要进行len-1趟。内循环为每趟需要比较的次数,第i趟需要比较len-i次。注意在写两层循环的时候,这样写:for(int i=0;i

四.带注释的代码:

#include
#include
//定义一个结构体 
struct AwardState
{
	char str[21];          //用来存储国家名称
	int  G;             //用来存储金牌数量 
	int  S;             //用来存储银牌数量 
	int  B;             //用来存储铜牌数量 
}ST[21];//定义了一个结构体数组 

int main()
{
	
	  struct AwardState Temp;//定义一个结构题变量,用来交换 
	  int n;//输入一个数n,表示国家数量
	  scanf("%d", &n);
	  //输入各个国家名称以及每个国家获奖情况 
	  int i=0;
	  //循环输入n个国家的名称以及获奖情况 
	  for(;i0)
                          {
                                Temp=ST[e];
	   	    	                ST[e]=ST[e+1];
	   	    	                ST[e+1]=Temp; 
                          }
                    }
				}
	   	    }
	   	}
       
	   }
	  //输出排序后的结果 
	  int k=0;
	  for(;k

四.程序运行结果:

利用C语言结构体解决“各个国家体育竞赛获奖排名”问题_第1张图片

你可能感兴趣的:(FindWork)