首页 > 代码库 > c语言(结构体)
c语言(结构体)
// main.m
// 1-21课堂笔记
//讲师: 小辉
//笔者: 王学文
// Created by lanouhn on 15/1/21.
// Copyright (c) 2015年 lanouhn. All rights reserved.
//structural(结构体)
#import <Foundation/Foundation.h>
#import "Dog.h"
#import "Phone.h"
void test(int n);
int main(int argc, const char * argv[]) {
//结构体
//结构体是一种由用户自己定义的数据类型
//作用: 用于存储多个不同类型的数据
//结构体的定义
/*
struct 结构体名字 {
成员变量的数据类型1 成员变量名1;
成员变量的数据类型2 成员变量名2;
成员变量的数据类型3 成员变量名3;
...
};
*/
struct student {
int number;
char name[20];
char gender;
float score;
};
//注意
//1. 结构体的命名用小驼峰法
//2. 每一个成员变量后要加分号(;)
//3. 结构体最外层的大括号也要加分号
//结构体变量的定义
// int a = 0;
//格式
//struct 结构体名字 变量名 = {值1, 值2, 值3, ...}
// struct student stu1 = {9527, "wangxuewen", ‘M‘, 99.9};
// struct student stu2 = {1234, "wanhao", ‘M‘, 88.8};
// struct student stu3 = {4567, "weizijain", ‘M‘, 77.7};
// int max = stu1.number > stu2.number ? stu1.number : stu2.number;
// max = max > stu3.number ? max : stu3.number;
// printf("学号最大的是%d\n", max);
// int max1 = stu1.score > stu2.score ? stu1.score : stu2.score;
// max1 = max1 > stu3.score ? max1 : stu3.score;
//
// if (max1 == stu1.score) {
// printf("分数最高者是%s", stu1.name);
// } else if (max1 == stu2.score) {
// printf("分数最高者是%s", stu2.name);
// } else if (max1 == stu3.score) {
// printf("分数最高者是%s", stu3.name);
// }
//姓名最靠前
// struct student stu4 = {0};
// stu4 = strcmp(stu1.name, stu2.name) < 0 ? stu1 : stu2;
// stu4 = strcmp(stu4.name, stu3.name) < 0 ? stu4 : stu3;
// printf("名字最靠前的是%s\n", stu4.name);
//结构体变量的使用
//通过点语句访问成员变量
//格式
//变量名.成员变量名
// printf("%d\n", stu1.number);
// printf("%s\n", stu1.name);
// printf("%c\n", stu1.gender);
// printf("%.2f\n", stu1.score);
//数组不能够直接参与运算
// int array1[5] = {0};
// int array2[5] = {1, 2, 3, 4, 5};
// array1 = array2;
//结构体变量可以直接参与运算
// struct student stu2 = {0};
// stu2 = stu1;
//修改成员变量的值
// stu2.number = 12345;
// stu2.score = 100.0;
// strcpy(stu2.name, "weizijian");
// stu2.gender = ‘F‘;
// printf("%d\n", stu2.number);
// printf("%s\n", stu2.name);
// printf("%c\n", stu2.gender);
// printf("%.2f\n", stu2.score);
//类型重命名
//typedef 原类型名 新类型名
// typedef struct student Student;
//
//新类型名:大驼峰法
// Student stu7 = {2345, "zhangsan", ‘M‘, 9.99};
//Dog dog = {"Isabella", 3, ‘M‘};
//结构体的内存是最大成员变量数据类型所占的字节数的倍数
//结构体成员变量的顺序,会影响到结构体所占的字节数
//合理的排布成员变量的顺序,能够减少内存碎片,降低结构体所占的字节数
//结构体数组
//定义5个结构体变量,存到数据中
// phone p1 = {"red", 100};
// phone p2 = {"green", 200};
// phone p3 = {"blue", 150};
// phone p4 = {"white", 500};
// phone p5 = {"black", 350};
// phone array[5] = {p1, p2, p3, p4, p5};
// array[0].color
//array[0].price
//按照价格从高到低进行排序
// for (int i = 0; i < 5 - 1; i++) {
// for (int j = 0; j < 5 - 1 -i; j++) {
// if (array[j].price < array[j + 1].price) {
// phone p6 = {0};
// p6 = array[j];
// array[j] = array[j + 1];
// array[j + 1] = p6;
// }
// }
// }
// for (int i = 0; i < 5; i++) {
// printf("%s %.2f\n", array[i].color, array[i].price);
// }
//按照颜色字母从z到a排序
// for (int i = 0; i < 5 - 1; i++) {
// for (int j = 0; j < 5 - 1 - i; j++) {
// if (strcmp(array[j].color, array[j + 1].color) < 0) {
// phone p7 = {0};
// p7 = array[j];
// array[j] = array[j + 1];
// array[j + 1] = p7;
// }
// }
// }
// for (int i = 0; i < 5; i++) {
// printf("%s %.2f\n", array[i].color, array[i].price);
// }
// int array[5] = {10, 9, 8, 7, 6};
// BubbleSort(array, 5);
// for (int i = 0; i < 5; i++) {
// printf("%d\n", array[i]);
// }
//
//对12345,正序输出1, 2, 3, 4, 5
//倒叙输出5, 4, 3, 2, 1
//用递归解决:
test(12345);
//冒泡排序的优化
int arr[5] = {1, 2, 3, 4, 5};
BOOL flag = YES;//发生了交换
for (int i = 0; i < 5 - 1 && flag; i++) {
flag = NO; //假定没有发生过变化
for (int j = 0; j < 5 - 1 -i; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
flag = YES; //发生了交换
}
} printf("aaa");
}
for (int i = 0; i < 5; i++) {
printf("%d ", arr[i]);
}
return 0;
}
void test (int n) { //从最外层一层一层的进行执行,递归一定要有出口
if (n == 0) {
return;
}
test(n /10);
printf("%d\n", n % 10);
}
c语言(结构体)