zoukankan      html  css  js  c++  java
  • 牛客网-成绩排名

    题目:输入任意(用户,成绩)序列,可以获得成绩从高到低或从低到高的排列,相同成绩
          都按先录入排列在前的规则处理。

       例示:
       jack      70
       peter     96
       Tom       70
       smith     67

       从高到低  成绩            
       peter     96    
       jack      70    
       Tom       70    
       smith     67    

       从低到高

       smith     67  

       Tom       70    
       jack      70    
       peter     96      

    输入描述:

    输入多行,先输入要排序的人的个数,然后输入排序方法0(降序)或者1(升序)再分别输入他们的名字和成绩,以一个空格隔开



    输出描述:

    按照指定方式输出名字和成绩,名字和成绩之间以一个空格隔开

    输入例子:
    3
    0
    fang 90
    yang 50
    ning 70
    输出例子:
    fang 90
    ning 70
    yang 50

    感觉挺渣的一道题。题干描述的测试用例都有问题。哎!
     1 #include <stdio.h>
     2 #include <iostream>
     3 #include <string.h>
     4 using namespace std;
     5 #define N 1000
     6 #define SIZE 30
     7 typedef struct node {
     8     char name[SIZE];
     9     int score;
    10 }Node;
    11 Node student[N],t;
    12 ///结构体变量的交换
    13 void exchange(Node& a,Node& b){
    14     strcpy(t.name,a.name);
    15     t.score =  a.score;
    16 
    17     strcpy(a.name,b.name);
    18     a.score = b.score;
    19 
    20     strcpy(b.name,t.name);
    21     b.score = t.score;
    22 }
    23 int main(){
    24     int cnt,score,kind;
    25     char name[SIZE];
    26     while(cin>>cnt>>kind){///不知道这儿为什么这样写,用下面的输入方法就是不对
    27         ///while(scanf("%d%d",&cnt,&kind)!= 0){
    28         int i = 0;
    29         while(i < cnt){
    30             scanf("%s %d",student[i].name,&student[i].score);
    31             i++;
    32         }
    33         if(kind == 0){///降序
    34             for(int j = 0; j < i; j++)
    35             for(int k = 0; k < i - j - 1; k++){
    36                 if(student[k].score < student[k+1].score){
    37                     exchange(t,student[k]);
    38                     exchange(student[k],student[k+1]);
    39                     exchange(student[k+1],t);
    40                 }
    41             }
    42         }
    43         if(kind == 1){///升序
    44             for(int j = 0; j < i; j++)
    45             for(int k = 0; k < i - j - 1; k++){
    46                 if(student[k].score > student[k+1].score){
    47                     exchange(t,student[k]);
    48                     exchange(student[k],student[k+1]);
    49                     exchange(student[k+1],t);
    50                 }
    51             }
    52         }
    53         for (int j = 0; j < i; j++){
    54             printf("%s %d
    ",student[j].name,student[j].score);
    55         }
    56     }
    57     return 0;
    58 }
    View Code


  • 相关阅读:
    Jquery清除style样式
    合并单元格式
    SQL根据下标,返回split分割后字符串
    js功能比较全面的yyyyMMdd格式的日期验证正则
    DataTable to Json
    List<T>下的Find,FindAll等条件过滤函数的使用方法
    获取iframe内部DOM对象
    PowerDesigner取消Name与Code同步
    再次回归
    最近遇到一个比较有意思的题目
  • 原文地址:https://www.cnblogs.com/yfs123456/p/6762045.html
Copyright © 2011-2022 走看看