c語言中結構體數組

c語言中的結構體數組(數組元素爲結構體)。數組

一、ide

#include <stdio.h>
#include <string.h>

#define NUMBER 5
#define NAME_LEN 64

typedef struct{
    char name[NAME_LEN];
    int height;
    float weight;
    long schols;
}Student;

void swap(Student *x, Student *y) // 結構體交換函數 , 形參爲Student型的結構體對象指針 
{
    Student tmp = *x;
    *x = *y;
    *y = tmp;    
} 

void sort(Student x[], int n)
{
    int i, j;
    for(i = 0; i < n - 1; i++)
    {
        for(j = n - 1; j > i; j--)
        {
            if(x[j - 1].height > x[j].height) //排序的依據是結構體數組中的元素中的height結構體成員 
            {
                swap(&x[j - 1], &x[j]);  //此處給與的實參應該是Student型的結構體對象的指針, 使用取址運算符獲取結構體對象的指針 
            }
        }
    }
}

int main(void)
{
    int i;
    Student stu[] = {  //此處爲結構體數組, 數組的元素爲結構體,結構體對象的類型爲Student。 
    {"Sato",178,61.2,80000},
    {"Sanaka",175,62.5,73000},
    {"Takao",173,86.2,0},
    {"Mike",165,72.3,70000},
    {"Masaki", 179, 77.5,70000},
    };
    for(i = 0; i < NUMBER; i++)
    {
        printf("%-8s %7d%7.2f%7ld\n", stu[i].name, stu[i].height,stu[i].weight,stu[i].schols);
    }
    sort(stu, NUMBER);
    puts("\n=====================================\n");
    for(i = 0; i < NUMBER; i++)
    {
        printf("%-8s %7d%7.2f%7ld\n", stu[i].name, stu[i].height,stu[i].weight,stu[i].schols);
    }
    return 0;
}

相關文章
相關標籤/搜索