码迷,mamicode.com
首页 > 编程语言 > 详细

算法训练 P1102

时间:2016-05-25 16:40:45      阅读:253      评论:0      收藏:0      [点我收藏+]

标签:

题目描述

  定义一个学生结构体类型student,包括4个字段,姓名、性别、年龄和成绩。然后在主函数中定义一个结构体数组(长度不超过1000),并输入每个元素的值,程序使用冒泡排序法将学生按照成绩从小到大的顺序排序,然后输出排序的结果。
输入格式

  第一行是一个整数N(N<1000),表示元素个数;接下来N行每行描述一个元素,姓名、性别都是长度不超过20的字符串,年龄和成绩都是整型。
输出格式

  按成绩从小到大输出所有元素,若多个学生成绩相同则成绩相同的同学之间保留原来的输入顺序。
输入描述

3
Alice female 18 98
Bob male 19 90
Miller male 17 92

输出描述

Bob male 19 90
Miller male 17 92
Alice female 18 98

测试代码

 1 #include <stdio.h>
 2 #include <string.h>
 3 
 4 struct student
 5 {
 6     char name[20];
 7     char sex[20];
 8     int age;
 9     int score;
10 };
11 
12 void input(struct student *stu, int n)
13 {
14     int i;
15     for (i = 0; i < n; i++)
16     {
17         scanf("%s%s%d%d", stu[i].name, stu[i].sex, &stu[i].age, &stu[i].score);
18     }
19 }
20 
21 void bubbleSort(struct student *stu, int n)
22 {
23     int i, j, a, s;
24     char na[20], se[20];
25     for (i = 0; i < n - 1; i++)
26     {
27         for (j = 0; j < n - 1 - i; j++)
28         {
29             if ((stu + j)->score > (stu + j + 1)->score)
30             {
31                 strcpy(na, (stu + j)->name);
32                 strcpy((stu + j)->name, (stu + j + 1)->name);
33                 strcpy((stu + j + 1)->name, na);
34 
35                 strcpy(se, (stu + j)->sex);
36                 strcpy((stu + j)->sex, (stu + j + 1)->sex);
37                 strcpy((stu + j + 1)->sex, se);
38 
39                 a = (stu + j)->age;
40                 (stu + j)->age = (stu + j + 1)->age;
41                 (stu + j + 1)->age = a;
42 
43                 s = (stu + j)->score;
44                 (stu + j)->score = (stu + j + 1)->score;
45                 (stu + j + 1)->score = s;
46             }
47         }
48     }
49 }
50 
51 void output(struct student *stu, int n)
52 {
53     int i;
54     for (i = 0; i < n; i++)
55     {
56         printf("%s %s %d %d\n", (stu + i)->name, (stu + i)->sex, (stu + i)->age, (stu + i)->score);
57     }
58 }
59 
60 int main()
61 {
62     struct student stu[1000];
63     int n, i;
64     double sum = 0;
65     scanf("%d", &n);
66     input(stu, n);
67     bubbleSort(stu, n);
68     output(stu, n);
69     return 0;
70 }

 

算法训练 P1102

标签:

原文地址:http://www.cnblogs.com/maxin/p/5527435.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!