• NOIP2011-普及组复赛模拟试题-第一题-NBA总冠军


    题目背景 Background

    一年两度的期末考要到来了!!
     题目描述 Description
      又要到考试了,Ljw决定放松一下,就打开电视,看见了篮球赛,他立即想到了每年的NBA总冠军队伍。由于复习紧张,他只记起了一部分,记忆的内容是正确的,可能不是按时间顺序排列的,记忆的内容可能有重复。
      现在请求学过编程的你帮助Ljw,按时间顺序输出总冠军的球队(不能重复)。
      (NBA从1947A.D到2009A.D)
     输入输出格式 Input/output
    输入格式:
    输入文件nba.in的第一行是一个整数n(0<n<50)。
    接下来的n行,每行先是城市名(由大小写字母、空格组成),后是时间(由数字组成),二者之间用空格隔开。
    输出格式:
    输出文件nba.out共n行,即排序后的NBA总冠军队伍。每先是时间,后是城市名。
     输入输出样例 Sample input/output
    样例测试点#1

    输入样例(nba.in):

    3

    Boston 1963

    Boston 1959

    Philly 1947

    输出样例(nba.out):

    1947 Philly

    1959 Boston

    1963 Boston

    思路:每次输入一个字符,判断是否为字母或者数字,分别存入字母或者数字函数,再排序一下输出就得了

    代码如下:

     1 #include <stdio.h>
     2 #include <string.h>
     3 struct stu
     4 {
     5     char num[50];
     6     int score;
     7 };
     8 int main()
     9 {
    10     int n,i,j,max=0,kk,flag,shuzi[100],aaaaa='a',ll=-1;
    11     struct stu a[105],t;   
    12     //freopen("nba.in","r",stdin);
    13     //freopen("nba.out","w",stdout);    
    14     scanf("%d",&n);
    15     for(i=0;i<n;i++)
    16     {
    17         ll++;
    18         max=0;
    19         j=0;
    20         scanf("%c",&aaaaa);
    21         while(aaaaa!='
    ')
    22         {
    23             
    24             if(aaaaa>='0'&&aaaaa<='9')//是数字 
    25             {
    26                 shuzi[j]=aaaaa;
    27                 j++;
    28             }   
    29             else //是字母 
    30             {
    31                 a[i].num[max]=aaaaa;
    32                 max++;
    33             }
    34               scanf("%c",&aaaaa);
    35         }
    36         a[i].num[max]='';
    37         a[ll].score=0;
    38         for(kk=0;kk<j;kk++)//转化数字 
    39         {
    40             a[ll].score=a[ll].score*10+shuzi[kk]-'0';
    41         }        
    42     }   
    43     for(i=1;i<n;i++)
    44     {
    45         flag=1;
    46         for(j=0;j<n-i;j++)//排序 
    47         {
    48             if(a[j].score>a[j+1].score)
    49             {
    50                 flag=0;
    51                 t=a[j];
    52                 a[j]=a[j+1];
    53                 a[j+1]=t;
    54             }
    55         }
    56         if(flag) break; 
    57     }
    58     printf("
    ");
    59     for(i=0;i<n;i++)
    60     {
    61         if(a[i].score!=a[i+1].score||strcmp(a[i].num,a[i+1].num)!=0)
    62         {
    63             printf("%d %s
    ",a[i].score,a[i].num);
    64         }        
    65     }    
    66     return 0;
    67 }
  • 相关阅读:
    【Android】4.1 UI设计器
    【Android】4.0 Android项目的基本结构
    【Android】3.25 示例25--调启百度地图
    【Android】3.24 示例24--OpenGL绘制功能
    【Android】3.23 示例23--瓦片图功能
    【Android】3.22 示例22--LBS云检索功能
    【Android】3.21 示例21—兴趣点收藏功能
    【Android】3.20 示例20—全景图完整示例
    【Android】3.19 示例19--全景图HelloWorld
    Java并发编程之happens-before
  • 原文地址:https://www.cnblogs.com/geek-007/p/4722417.html
Copyright © 2020-2023  润新知