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

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

代码如下:

 #include <stdio.h>
#include <string.h>
struct stu
{
char num[];
int score;
};
int main()
{
int n,i,j,max=,kk,flag,shuzi[],aaaaa='a',ll=-;
struct stu a[],t;
//freopen("nba.in","r",stdin);
//freopen("nba.out","w",stdout);
scanf("%d",&n);
for(i=;i<n;i++)
{
ll++;
max=;
j=;
scanf("%c",&aaaaa);
while(aaaaa!='\n')
{ if(aaaaa>=''&&aaaaa<='')//是数字
{
shuzi[j]=aaaaa;
j++;
}
else //是字母
{
a[i].num[max]=aaaaa;
max++;
}
scanf("%c",&aaaaa);
}
a[i].num[max]='\0';
a[ll].score=;
for(kk=;kk<j;kk++)//转化数字
{
a[ll].score=a[ll].score*+shuzi[kk]-'';
}
}
for(i=;i<n;i++)
{
flag=;
for(j=;j<n-i;j++)//排序
{
if(a[j].score>a[j+].score)
{
flag=;
t=a[j];
a[j]=a[j+];
a[j+]=t;
}
}
if(flag) break;
}
printf("\n");
for(i=;i<n;i++)
{
if(a[i].score!=a[i+].score||strcmp(a[i].num,a[i+].num)!=)
{
printf("%d %s\n",a[i].score,a[i].num);
}
}
return ;
}
上一篇:Java面向对象之封装 入门实例(一)


下一篇:关于SpringCloud的微服务架构,提示502 Bad Gateway nginx/1.10.0