//
// main.m
// C6_结构体2
//
// Created by YIem on 15/11/17.
// Copyright (c) 2015年 www.yiem.net YIem博客. All rights reserved.
//
import <Foundation/Foundation.h>
import "MyFunc.h"
int main(int argc, const char * argv[]) {
// 定义变量
Person dawa = {"大娃", 'm', 16, 1.0};
// 打印结构体成员变量
printf("%s %c %d %.2f\n", dawa.name, dawa.sex, dawa.age, dawa.height);
//
printPerson(dawa);
Person yeye = {"爷爷", '?', 17, 1.7};
printPerson(yeye);
Person jinggang = {"金刚葫芦娃", '?', 15, 1.84};
printPerson(jinggang);
Person shejing = {"蛇精", 'f', 18, 2.26};
Person xiezi = {"蝎子精" , 'm', 500, 2.36};
// 结构体数组
//整型数组 int a[5] = {1, 2, 3, 4, 5};
Person huluwa[5] = {dawa, yeye, jinggang, shejing, xiezi};
printf("---------分割线-----------\n");
// 遍历
for (int i = 0; i < 5; i++) {
// huluwa[i] 获取每一个结构体变量
printPerson(huluwa[i]);
// 定义一个临时结构体
Person p = huluwa[i];
printf("%s %c %d %.2f\n", huluwa[i].name, p.sex, p.age, p.height);
}
///
printf("----------分割线----------\n");
/// 打印结构体数组
printPersonArray(huluwa, 5);
printf("-----------------\n");
/// 定义180以上的人
printPersonBeyond180(huluwa, 5);
/// 普通版冒泡
int a[5] = {2, 7, 4, 3, 6};
for (int i = 0; i < 5 - 1; i ++) {
for (int j = 0; j < 5 - 1 - i; j++) {
if (a[j] > a[j + 1]){
int temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
for (int i = 0; i < 5; i++) {
printf("%d", a[i]);
printf("\n");
}
printf("---------------\n");
/// 函数版冒泡
bubbleSort(a, 5);
printf("---------------\n");
/// 按照身高大小排队
bubuleSortPersonArray(huluwa, 5);
// 结构体内存分配原则
// 1. 先找到结构体中所占空间最大的类型 已类型为分配单位(eg : int ->4, float -> 4)
// 2. 自上而下 分配内存 如果所剩内层不够放当前类型 则重新分配空间 如果够放 则可填充剩余空间中
return 0;
}
//
// MyFunc.h
// C6_结构体2
//
// Created by YIem on 15/11/17.
// Copyright (c) 2015年 www.yiem.net YIem博客. All rights reserved.
//
// 声明
import <Foundation/Foundation.h>
struct person {
char name[20];
/// 性别
char sex;
/// 年龄
int age;
/// 身高
float height;
};
typedef struct person Person;
/// 打印结构体
void printPerson (Person p);
/// 打印结构体数组
// 参数1. 结构体数组
// 参数2. 数组元素个数
void printPersonArray(Person p[], int count);
/// 打印180以上的人
void printPersonBeyond180(Person p[], int count);
///冒泡
void bubbleSort(int a[], int count);
/// 结构体数组 冒泡 按照身高大小排队
void bubuleSortPersonArray(Person p[], int count);
//
// MyFunc.m
// C6_结构体2
//
// Created by YIem on 15/11/17.
// Copyright (c) 2015年 www.yiem.net YIem博客. All rights reserved.
//
// 定义
import "MyFunc.h"
/// 定义结构体
void printPerson (Person p) {
printf("name: %s, sex: %c, age: %d,height: %.2f\n", p.name, p.sex, p.age, p.height);
}
/// 打印结构体数组
void printPersonArray(Person p[], int count) {
for (int i = 0; i < count; i++) {
printPerson(p[i]);
}
}
/// 定义180以上的人
void printPersonBeyond180(Person p[], int count) {
for (int i = 0; i < count; i++) {
if (p[i].height > 1.80) {
printPerson(p[i]);
}
}
}
///冒泡
void bubbleSort(int a[], int count) {
for (int i = 0; i < count - 1; i++) {
for (int j = 0; j < count - 1 - i; j++) {
if (a[j] > a[j + 1]) {
int temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
for (int i = 0; i < count; i++) {
printf("%d ", a[i]);
}
printf("\n");
}
/// 结构体数组 冒泡 按照身高大小排队
void bubuleSortPersonArray(Person p[], int count) {
for (int i = 0; i < count - 1; i++) {
for (int j = 0; j < count - 1 - i; j++) {
// 比较 两个结构体的成员变量
// 比较两个人的身高
if (p[j].height > p[j + 1].height) {
// 交换两个结构体
// 句号两个人的位置
Person temp = p[j];
p[j] = p[j + 1];
p[j + 1] = temp;
}
}
}
printPersonArray(p, count);
}