//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);
//}