您的位置:首页 > 移动开发 > IOS开发

我的IOS学习历程-第七天

2015-10-16 19:13 465 查看
#import <Foundation/Foundation.h>

以下是Function.h(自己添加的)

// 取消结构体自动补齐

// 结构体在内存当中计算占多少字节

// 计算顺序
由上至下依次计算

// 一个成员变量一个成员变量的计算

// 并且自动补齐为
该结构体中所占最大字节数的变量的字节数来进行补齐的

// 例:
如果结构体中 最大的是float
就按4的倍数补齐
最大的是double 就按8的倍数补齐

#pragma pack(1)

/*

声明一个结构体

关键字 struct

struct 结构体名 {

类型名1
变量名1;

类型名2
变量名2;

.......

}

*/

// 声明一个描述学生的结构体

// 结构体中声明的变量
一般叫做 成员变量

struct Student {

char name[20];
// 注意
中间用分号隔离

char sex;

double number;

float score;

int age;

};typedef
struct Student Student;

// 声明结束
也用分号结束

// 声明描述一个点的结构体

// 声明描述一个日期的结构体

struct MyPoint {

float abs;

float ord;

};

typedef
struct MyPoint MyPoint;

struct Date {

int year;

int month;

int day;

};

typedef
struct Date Date;

struct StudentMessage {

char name[20];

float score;

int age;

};

void messageValue(struct
Student stu);

void sortMessage(struct
StudentMessage stu);

// 需求:描述一个人名字与出生年月日
家庭成员

// 结构体中可以有其他结构体当作成员变量

// 结构体中可以嵌套结构体

struct HomePerson{

char mother[20];

char father[20];

};typedef
struct HomePerson Homeperson;

struct Person{

char name[20];

Date day;

Homeperson home;

};typedef
struct Person Person;

// 声明一个函数
冒泡排序

void sortArray(Student stuArray[],int count);

#import "Function.h"

以下为Function.m

void messageValue(struct
Student stu){

printf("%s,%c,%.2f,%.2f,%d\n",stu.name,stu.sex,stu.score,stu.number,stu.age);

}

void SortMessage(struct
StudentMessage stu){

printf("%s %.2f %d",stu.name,stu.score,stu.age);

};

// 按照成绩冒泡排序并输入全部信息

void sortArray(Student stuArray[],int count){

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

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

//
注意1:比是数组中
结构体变量的分数

//
注意2:交换是数组中
结构体变量

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

Student temp = stuArray[j];

stuArray[j] = stuArray[j +
1];

stuArray[j +
1] = temp;

}

}

}

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

//
打印的是数组中每一个结构体的变量

messageValue(stuArray
);

}

}

以下是main.h

#import <Foundation/Foundation.h>

#import "Function.h"

// 声明一个匿名结构体
没有名字的结构体

struct {

char name[20];

char sex;

int age;

} stu1 = {"wanglong",
'm', 18},stu2 = {"jianglong",
'm', 22};

// 起别名
给类型起别名

// 使用关键字 typedef
老名字 新名字

typedef
int Jay;

// 给 float
起个别名

// 给 int array[5]起个别名

typedef
float hh;

typedef
int MyArray[5];//
把int array[5] -> MyArray

// 描述一个男的

struct Man {

char name[20];

float height;

};

typedef
struct Man SuperMan;

// 声明结构体和起别名
连一起写

typedef
struct Woman{

char name[20];

char sex;

}SuperWoman;

typedef
struct StudentMessage StudentMessage;

int main(int argc,
const char * argv[]) {

//
定义一个结构体变量

// struct
结构体名 变量名 = {初值};

//
初值的顺序需要和 声明时一样

//
取出结构体中成员变量的值

//
结构体变量 . 成员变量 =


//
姜龙

// struct Student stu1 = {"jianglong",'x', 66, 88.8, 22};

//

// printf("%d\n",stu1.age);

// // 修改结构体变量的成员变量的值

// stu1.age = 32;

// printf("%d\n",stu1.age);

// // 修改名字

// strcpy(stu1.name, "longjiang");

// printf("%s\n",stu1.name);

//

//
编写一个函数 打印结构体的所有信息

//
变量的数据类型 变量名以前
全是类型

// struct Student stu2 = {"nipeng", 'x', 14, 88.8, 21};

// struct Student stu3 = {"jay", 'x', 1, 99.9, 31};

// messageValue(stu1);

// printf("%ld",sizeof(struct Student));

//
起别名 (外号)

// MyArray haha = {1, 2, 3, 4, 6};

// SuperMan m2 = {};

// Date date1 = {2015,10,17};

// StudentMessage stu11 = {"jk", 66.6, 20};

// StudentMessage stu22 = {"hz", 67.6, 22};

// StudentMessage stu33 = {"ll", 69.6, 25};

//有三个学⽣,编程找出分数最⾼者以及年龄最⼩者

//
先找最高分 三数比大小
再根据这个最高分 找人

// float maxScore = 0;

// maxScore = stu11.score > stu22.score ? stu11.score:stu22.score;

// maxScore = maxScore > stu33.score ? maxScore : stu33.score;

// // 根据分找人

// if (maxScore == stu11.score) {

// sortMessage(stu11);

// }

// if (maxScore == stu22.score) {

// sortMessage(stu22);

// }

// if (maxScore == stu33.score) {

// sortMessage(stu33);

// }

// int minAge = 0;

// minAge = stu11.age < stu22.age ? stu11.age : stu22.age;

// minAge = minAge < stu33.age ? minAge : stu33.age;

// if (minAge == stu11.age) {

// sortMessage(stu11);

// }

// if (minAge == stu22.age) {

// sortMessage(stu22);

// }

// if (minAge == stu33.age) {

// sortMessage(stu33);

// }

//
数据类型 数组名[元素个数] = {初值};

// Student a[4] = {stu1, stu2, stu3, stu4};

// 结构体变量可以直接赋值
赋值的过程是个拷贝的过程

// Student stu4 = stu1;

// 数组不能直接进行赋值
数组名字是首元素的地址 是常量
是程序运行期间无法改变的值

//
声明一个Person结构体变量

//
声明一个Date的结构体变量

// Date d1 = {1997, 8, 24};

// Homeperson h1 = {"mama", "die"};

// Person p1 = {"wanglong", d1, h1};

// printf("%s\n",p1.home.father);

Student stu1 = {"wanglong",
'm', 100,
98.8, 18};

Student stu2 = {"zhuangzhuang",
'm', 100,
88.8, 18};

Student stu3 = {"Jay",
'm', 100,
78.8, 18};

Student stu4 = {"Echo",
'm', 100,
68.8, 18};

Student stu5 = {"xuyang",
'm', 100,
89.8, 18};

//
把这五个人放进一个数组中

Student studentArray[5] = {stu1, stu2, stu3, stu4, stu5};

// Student tempStu3 = studentArray[2];

// tempStu3.name;

// printf("%s",studentArray[2].name);

//有5名学⽣保存在结构体数组中,按成绩从高到低
排序并输出

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

// for (int j = 0; j < 4 - i; j++) {

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

// Student temp = studentArray[j];

// studentArray[j] = studentArray[j + 1];

// studentArray[j + 1] = temp;

//

// }

// }

// }

// for (int n = 0; n < 5; n++) {

// messageValue(studentArray
);

// }

sortArray(studentArray,
5);

return
0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: