动态构造存放学生信息的结构体数组,按分数排序输出
1 /*
2 动态构造存放学生信息的结构体数组,按分数排序输出
3 */
4 # include <stdio.h>
5 # include <malloc.h>
6
7 struct Student
8 {
9 int age;
10 float score;
11 char name[100];
12
13 };
14
15 int main(void)
16 {
17 int i,j;
18 int len;
19 struct Student * pArr;
20 struct Student t; //临时变量要定义成 struct Student t
21
22 printf("请输入学生的个数:\n");
23 printf("len = ");
24 scanf("%d", &len);
25
26 pArr = (struct Student *)malloc(len * sizeof(struct Student));
27
28 for(i=0; i<len; i++)
29 {
30 printf("请输入第%d位学生信息\n", i+1);
31 printf("age = ");
32 scanf("%d", &pArr[i].age);
33
34 printf("name = :");
35 scanf("%s",pArr[i].name); //name是数组名,本身已经是数组首元素的地址。pArr[i].name不能写成&pArr[i].name
36
37 printf("score = :");
38 scanf("%f", &pArr[i].score);
39 }
40 //排序
41 for(i=0; i<len-1; i++)
42 {
43 for(j=0; j<len-1-i; j++)
44 {
45 if(pArr[j].score >pArr[j+1].score) // > 是升序,<是升序
46 {
47 t = pArr[j];
48 pArr[j] = pArr[j+1];
49 pArr[j+1] = t;
50 }
51 }
52 }
53 //输出
54 for(i=0; i<len;i++)
55 {
56 printf("第%d位学生信息\n", i+1);
57 printf("age = %d\n",pArr[i].age);
58 printf("name = %s\n",pArr[i].name);
59 printf("score = %f\n", pArr[i].score);
60 printf("\n\n");
61 }
62
63 return 0;
64 }
65 /*
66 在Vc++6.0中显示的结果是:
67 =================================================
68 请输入学生的个数:
69 len = 3
70 请输入第1位学生信息
71 age = 21
72 name = :张三
73 score = :39
74 请输入第2位学生信息
75 age = 24
76 name = :李四
77 score = :21
78 请输入第3位学生信息
79 age = 22
80 name = :王五
81 score = :99
82 第1位学生信息
83 age = 24
84 name = 李四
85 score = 21.000000
86
87
88 第2位学生信息
89 age = 21
90 name = 张三
91 score = 39.000000
92
93
94 第3位学生信息
95 age = 22
96 name = 王五
97 score = 99.000000
98 ===================================================
99 */
2 动态构造存放学生信息的结构体数组,按分数排序输出
3 */
4 # include <stdio.h>
5 # include <malloc.h>
6
7 struct Student
8 {
9 int age;
10 float score;
11 char name[100];
12
13 };
14
15 int main(void)
16 {
17 int i,j;
18 int len;
19 struct Student * pArr;
20 struct Student t; //临时变量要定义成 struct Student t
21
22 printf("请输入学生的个数:\n");
23 printf("len = ");
24 scanf("%d", &len);
25
26 pArr = (struct Student *)malloc(len * sizeof(struct Student));
27
28 for(i=0; i<len; i++)
29 {
30 printf("请输入第%d位学生信息\n", i+1);
31 printf("age = ");
32 scanf("%d", &pArr[i].age);
33
34 printf("name = :");
35 scanf("%s",pArr[i].name); //name是数组名,本身已经是数组首元素的地址。pArr[i].name不能写成&pArr[i].name
36
37 printf("score = :");
38 scanf("%f", &pArr[i].score);
39 }
40 //排序
41 for(i=0; i<len-1; i++)
42 {
43 for(j=0; j<len-1-i; j++)
44 {
45 if(pArr[j].score >pArr[j+1].score) // > 是升序,<是升序
46 {
47 t = pArr[j];
48 pArr[j] = pArr[j+1];
49 pArr[j+1] = t;
50 }
51 }
52 }
53 //输出
54 for(i=0; i<len;i++)
55 {
56 printf("第%d位学生信息\n", i+1);
57 printf("age = %d\n",pArr[i].age);
58 printf("name = %s\n",pArr[i].name);
59 printf("score = %f\n", pArr[i].score);
60 printf("\n\n");
61 }
62
63 return 0;
64 }
65 /*
66 在Vc++6.0中显示的结果是:
67 =================================================
68 请输入学生的个数:
69 len = 3
70 请输入第1位学生信息
71 age = 21
72 name = :张三
73 score = :39
74 请输入第2位学生信息
75 age = 24
76 name = :李四
77 score = :21
78 请输入第3位学生信息
79 age = 22
80 name = :王五
81 score = :99
82 第1位学生信息
83 age = 24
84 name = 李四
85 score = 21.000000
86
87
88 第2位学生信息
89 age = 21
90 name = 张三
91 score = 39.000000
92
93
94 第3位学生信息
95 age = 22
96 name = 王五
97 score = 99.000000
98 ===================================================
99 */
posted on 2012-09-06 14:21 Your Song 阅读(2306) 评论(0) 编辑 收藏 举报