17.结构体_B【郝斌C语言入门学习】

1.冒泡排序

 

 1 # include <stdio.h>
 2 void sort(int * , int );//排序函数声明
 3 int main(void)
 4 {
 5     int a[6] = {10, 2, 8, -8, 11, 0};
 6     int i = 0;
 7     sort(a, 6);
 8     for (i=0; i<6; ++i)
 9     {
10         printf("%d ", a[i]);
11     }
12     printf("\n");
13     return 0;
14 }
15 // 定义冒泡排序
16 void sort(int * pArr, int len)
17 {
18     int i, j, t;
19     for (i=0; i<len-1; ++i)
20     {
21         for (j=0; j< len-i-1; ++j)
22         {
23             if (*(pArr + j) > *(pArr+j+1))
24                 {
25                     t = *(pArr + j);
26                     *(pArr + j) =  *(pArr+j+1);
27                     *(pArr+j+1) = t;
28                 }
29         }
30     }
31 }

 

2.动态构造存放学生信息的结构体数组 

预备知识:字符数组的输入和输出

 

 1 # include <stdio.h>
 2 int main(void)
 3 {
 4     char str[] = {};
 5     printf("请输入字符串:\n");
 6     scanf("%s", str);
 7     str[0] = '*';
 8     printf("%s", str);
 9     //字符数组用用%s格式说明符输出的时候,传递的参数字符数组名
10     //字符数组名就是字符数组第一个元素的地址
11     //printf需要知道字符串的开始位置,以便能够逐个字符地读取并输出字符串,直到遇到空字符'\0'。
12     return 0;
13 }

 

例题1;动态构造一个数组,存放学生的信息,然后按分数排序

 

 1 # include <stdio.h>
 2 # include <malloc.h>
 3 struct Student
 4 {
 5     char name[100];
 6     int age;
 7     float score;
 8 };
 9 int main(void)
10 {
11     int len;
12     struct Student * pArr;
13     int i, j;
14     struct Student t;
15     //动态构造一位数组
16     printf("请输入学生的个数是:");
17     printf("len = ");
18     scanf("%d", &len);
19     pArr = (struct Student *)malloc(len * sizeof(struct Student));
20     //输入
21     for (i=0; i<len; ++i)
22     {
23         printf("请输入第%d个学生的信息:\n", i+1);
24         printf("name = ");
25         scanf("%s", pArr[i].name);
26         //name时数组名,本身就已经时数组首元素的地址,所以pArr[i].name不能改成&pArr[i].name
27         printf("age = ");
28         scanf("%d", &pArr[i].age);
29         printf("score = ");
30         scanf("%f", &pArr[i].score);    
31     }
32     //按学生成绩升序排序,冒泡算法
33     for (i=0; i<len-1; ++i)
34     {
35         for (j=0; j<len-i-1; ++j)
36         {
37             if (pArr[j].score>pArr[j+1].score)
38             {
39                 t = pArr[j];
40                 pArr[j] = pArr[j+1];
41                 pArr[j+1] = t;
42             }
43         }
44     }
45     printf("\n\n学生的信息:\n");
46     //输出
47         for (i=0; i<len; ++i)
48         {
49             printf("请输出第%d个学生的信息:\n", i+1);
50             printf("name = %s\n", pArr[i].name);
51             printf("age = %d\n", pArr[i].age);
52             printf("score = %f\n", pArr[i].score);
53             printf("\n");    
54         }
55     return 0;
56 }

 

例题1;动态构造一个数组,存放学生的信息,然后按分数排序(用函数调用实现)

 

posted @ 2024-08-19 13:38  java帝国  阅读(18)  评论(0)    收藏  举报