zoukankan      html  css  js  c++  java
  • 成绩排序

    题目描述:

    有N个学生的数据,将学生数据按成绩高低排序,如果成绩相同则按姓名字符的字母序排序,如果姓名的字母序也相同则按照学生的年龄排序,并输出N个学生排序后的信息。

    解题思路:

    设一个结构体A存储姓名、年龄和成绩,录入数据后分别按照条件遍历结构体数组,对于与排序要求相悖的数据单元进行交换。

    水题一条,弄明白存储体与字符串处理的一些基本的语句即可。

     1 #include<stdio.h>
     2 #include<string.h>
     3 struct A
     4 {
     5     char name[50];
     6     int age;
     7     int score;
     8 } A[1000];
     9 int main()
    10 {
    11     int n=0,i,j;
    12     while(scanf("%d",&n)!=EOF)
    13     {
    14         char name[100];
    15         int age;
    16         int score;
    17         for(i=0; i<n; i++)
    18         {
    19             scanf("%s%d%d",A[i].name,&A[i].age,&A[i].score);
    20         }
    21         for(i=0; i<n; i++)
    22         {
    23             for(j=i; j<n; j++)
    24             {
    25                 if(A[i].score>A[j].score)
    26                 {
    27                     age=A[j].age;
    28                     strcpy(name,A[j].name);
    29                     score=A[j].score;
    30 
    31                     A[j].age=A[i].age;
    32                     A[j].score=A[i].score;
    33                     strcpy(A[j].name,A[i].name);
    34 
    35                     A[i].age=age;
    36                     A[i].score=score;
    37                     strcpy(A[i].name,name);
    38                 }
    39             }
    40         }
    41         for(i=0; i<n; i++)
    42         {
    43             for(j=i; j<n; j++)
    44             {
    45                 if(A[i].score==A[j].score)
    46                     if(strcmp(A[i].name,A[j].name)>0)
    47                     {
    48                         age=A[j].age;
    49                         strcpy(name,A[j].name);
    50                         score=A[j].score;
    51 
    52                         A[j].age=A[i].age;
    53                         A[j].score=A[i].score;
    54                         strcpy(A[j].name,A[i].name);
    55 
    56                         A[i].age=age;
    57                         A[i].score=score;
    58                         strcpy(A[i].name,name);
    59                     }
    60                     else if(strcmp(A[i].name,A[j].name)==0)
    61                     {
    62                         if(A[i].age>A[j].age)
    63                         {
    64                             age=A[j].age;
    65                             strcpy(name,A[j].name);
    66                             score=A[j].score;
    67 
    68                             A[j].age=A[i].age;
    69                             A[j].score=A[i].score;
    70                             strcpy(A[j].name,A[i].name);
    71 
    72                             A[i].age=age;
    73                             A[i].score=score;
    74                             strcpy(A[i].name,name);
    75                         }
    76                     }
    77             }
    78 
    79         }
    80         for(i=0; i<n; i++)
    81         {
    82             printf("%s %d %d
    ",A[i].name,A[i].age,A[i].score);
    83         }
    84     }
    85     return 0;
    86 }
  • 相关阅读:
    C++编程中的小规范(转)
    windows的消息大全(收集)
    C中的一些好玩的事(一)转
    C++ 温故而知新(三)
    C++温故而知新(二)
    C++的内存分布(一)转
    C++ 温故而知新(一)
    C++反射机制模拟
    VS2010 下配置opeNGL遇到的问题
    SharedPreference.Editor的apply和commit方法异同
  • 原文地址:https://www.cnblogs.com/AKsnoopy/p/8422828.html
Copyright © 2011-2022 走看看