结构体定义和应用

//struct soldier {

//    char name[20];

//    // 军衔

//    char rank[20];

//    // 血型

//    char bloodType[3];

//    

//};

 struct soldier 类型重新定义Sodier

 结构体定义的第一种方式

//typedef struct soldier Soldier;

//

//void printArray(Soldier array[],int count);

//void PrintStruct(Soldier s);


struct student{

    char name[20];

    float score;

    

};

typedef struct student Student;

// 结构体数组的冒泡排序

void bubbleSort(Student array[], int count);

// 打印结构体数组的函数

void printArray(Student array[], int count);


// 创建一个描述点的结构

struct point{

    int x;

    int y;

};


typedef struct point MYPoint;

// 创建一个尺寸的结构体

struct size{

    int width;

    int height;

};

typedef struct size MYSize;

// 创建矩形区域的结构体

struct rect{

    // 包含点的结构体

    MYPoint origin;

    // 包含尺寸的结构体

    MYSize size;

};

typedef struct rect MYRect;



//    // 定义结构体变量

//    // 类型 变量名 初始值

//    // 需要注意struct + 结构体的名字是变量类型

//    // 初始值的顺序与声明结构体的成员顺序一致

//    struct point p1 = {3, 5};

//    struct size a1 = {4, 5};

//    // 结构体如何访问成员

//    // 引入一个新的操作符

//    // 先找到结构体变量p1,再通过操作符访问y的成员

//    p1.y = 50;

//    printf("%d \n", p1.x);

//    Soldier s1 = {"项羽", "元帅", "B"};

//    Soldier s2 = {"关羽", "上将", "O"};

//    Soldier s3 = {"张苞", "少校", "S"};

//    Soldier s4 = {"弹头", "班长", "AB"};

//    // 结构体的变量可以直接赋值

//    //Soldier s5 = s4;

//    // 结构体数组内都是存放的结构体

//    Soldier array[4] = {s1, s2, s3, s4};

//    // 先找到结构体变量array[3];

//    // 通过结构体变量找到血型的成员 array[3].bloodType

//    // array[3].name是什么 --->name字符串的首地址

//    // printf("%s\n", array[3].name);

//    // 如何 修改name这个字符串————>改成洪志成

//    // array[3].name = "洪志成";是错误的字符串的赋不可以这样写

//    strcpy(array[3].name, "洪志成");

//    // printf("%s\n", array[3].name);

//   

//    // 调用打印结构体信息的函数

//    // PrintStruct(array[3]);

//     printf("\n");

//    // 调用打印结构体数组的函数

//    printArray(array, 4);

//  // 创建一个MYRect结构体变量

//    MYRect rect = {{0, 0}, {320, 480}};

//    // 结构体成员的访问

//    rect.size.width = 20;

//    // rect.size相当于是MYSize类型的结构体变量

//    // 如果想访问宽度,则需要再用一次.语法来访问



// printf("%lu\n", sizeof(struct student));

    

    

    Student stu[4] = {{"dantou", 59.99}, {"huofu", 58.88}, {"daoyou", 65.32}, {"chengxuyuan", 71.42}};

    // 调用排序的函数

    bubbleSort(stu, 4);

    // 打印

    printArray(stu, 4);

#import "MYFunction.h"



void bubbleSort(Student array[], int count)

{

    // 按照成绩从高到低进行排列

    for (int i = 0; i < count - 1; i++) {

        for (int j = 0; j < count - i - 1; j++) {

            if (array[j].score < array[j + 1].score) {

                // 结构体可以直接赋值

                Student temp = array[j];

                array[j] = array[j + 1];

                array[j + 1] = temp;

                

            }

        }

    }

}



void printArray(Student array[], int count)

{

    for (int i = 0; i < count; i++) {

        printf("%s   %.2f\n", array[i].name, array[i].score);

    }

}

// 类型重定义

// 相当于给int取了个别名,但是原来的名字类型也可以用

//typedef int DT;

结构体是自定义的数据类型

struct关键字声明一个结构体

//struct point {

//    // 结构体的成员

//    DT x;

//    DT y;

//};

size结构体重新定义为MYSize

//typedef struct size {

//    int width;

//    int height;

//}MYSize;

定义结构体

//

//void printArray(Soldier array[],int count)

//{

//    // 循环打印数组内部的信息

//    for (int i = 0; i < count; i++) {

//        // 调用上面的打印一个结构体的函数

//        PrintStruct(array[i]);

//        printf("\n");

//    }

//}

//void PrintStruct(Soldier s)

//{

//    // 函数内可以直接访问形参的成员

//    printf("��%-4s��%-4s��%-8s", s.name, s.rank, s.bloodType);

//}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值