c结构枚举等
大一记载的笔记:
补码 已知十进制求二进制 求正整数的二进制 除2取余, 直至商为零,余数倒叙排序 求负数的二进制 先求与该负数相对应的正整数的二进制代码,然后将 所有为取反,末尾加1,不够位数时,左边补1 求零的二进制 全为零 已知二进制求十进制 如果首位是0,则表明是正整数,按普通方法来求 如果首位是1,则表明是负整数 将 所有位取反,末尾加1,所得数字就是该负数的绝对值 如果全是零,则对应的十进制数字就是零 二进制 十进制 0000 0000 0 0000 0001 1 0111 1111 127 1000 0000 -128 1000 0001 -127 1000 0010 -126 1111 1111 -1 数组 优点 存储速度快 缺点 需要一个连续的很大的内存 插入和删除元素的效率很低、 链表 优点 插入删除元素效率高 不需要一个连续的很大的内存 缺点 查找某个位置的元素效率低 枚举 什么是枚举 把一个事物所有可能的取值一一列举出来 1 //冒泡法 # include <stdio.h> void f(int * p, int len) { int i, j, t; for(i = 0; i < len - 1; i ++) for(j = 0; j < len - 1 -i; j ++) if(p[i] > p[i + 1]) { t = p[i]; p[i] = p[i + 1]; p[i + 1] = t; } } int main(void) { int i; int a[6] = {65, -99, 94, 4, 6, 7}; f(a, 6); for(i = 0; i < 6; i ++) printf("%d ", a[i]); printf("\n"); } 2 //简单学生系统 # include <stdio.h> # include <malloc.h> struct Student { int age; float score; char name[100]; }; //没加分号会报错 哦 int main(void) { int len; struct Student * pArr; int i, j; struct Student t;3 //动态的构造一维数组 printf("请输入学生的个数:\n"); printf("len = "); scanf("%d", &len); pArr = (struct Student *)malloc(len * sizeof(struct Student)); //输入 for(i = 0; i < len; i ++) { printf("请输入第%d个学生的信息:\n", i + 1); printf("age = "); scanf("%d", &pArr[i].age); printf("name = "); scanf("%d", pArr[i].name); //name 是数组名 printf("score = "); scanf("%f", &pArr[i].score); } //冒泡法排序 for(i = 0; i < len - 1; i ++) { for(j = 0; j < len - 1- i; j ++) { if(pArr[i].score > pArr[i + 1].score) { t = pArr[i]; pArr[i] = pArr[i + 1]; pArr[i + 1] = t; } } } //输出 for(i = 0; i < len; i ++) { printf("第%d个学生的信息是:\n", i + 1); printf("age = %d\n", pArr[i].age); printf("name = %d\n", pArr[i].name); printf("score = %f\n", pArr[i].score); printf("\n"); } return 0; } 3 //枚举 # include <stdio.h> //只定义了一个数据类型, 并没有定义变量, 该数据类型的名字是enum WeekDay enum WeekDay { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday }; int main(void) { // int day; //day 定义成int类型不合适 enum WeeDay day = Sunday; printf("%d\n", day); //当Monday = 4时 值又是多少呢? } 4 # include <stdio.h> enum WeekDay { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday }; void f(enum WeekDay i) //本函数的目的只是期望接受0—6之间的数字 { switch(i) { case 0: printf("monday\n"); break; case 1: printf("tuesday\n"); break; case 2: printf("wednesday\n"); break; case 3: printf("thursday\n"); break; case 4: printf("friday\n"); break; case 5: printf("saturday\n"); break; case 6: printf("sunday\n"); break; } } int main(void) { f(Friday); //虽然Friday本质就是5,但直接写成f(5)是错误的 return 0; } 5 # include <stdio.h> int main(void) { char ch = 0x80; //ch = 128; printf("%d", ch); //sh出的是-128 }
浙公网安备 33010602011771号