一.数据结构
1.数据结构: 一种可以存储多个数据的结构 线性结构 树状结构 网状结构 组合结构
2.主要作用: 帮我们更方便的保存数据 、查找数据、分析数据、数据处理(删除 替换 排序...)
二.单位换算
1.bit-二进制位 byte-字节
整数型: int(4*8=32字节) long long(8*8=64字节)
浮点型: float(4*8=32字节) double(8*8=64字节)
字符型: char(1*8=8字节)
1byte = 8bit
1int = 4byte 1long long = 8byte
1float = 4byte 1double = 8byte
1char = 1byte
可用
int byte= sizeof(long long);
printf("%d\n", byte);
确定某变量的字节数
2.b kb MB GB TB PB //1024换算
1kb = 1024byte
1mb = 1024kb
1gb = 1024mb
1tb = 1024gb
三.数组
1.数组:一个可以存储多个同类型数据的数据结构
打印输出数组中的每个数eg.
int arr[10] = {10086, 10010, 10000, 5, 4, 3};
for (int i = 0; i < 10; i++) {
printf("%d\n ,", arr[i]);
}
2.格式: 数据类型 数组变量名[数组长度];
eg.1>int arr1[10];// 创建了一个长度为10的整数型数组,其中可以存储10个int类型的数,
没有进行初始化,其中的默认数据是乱的
2>int arr2[10]={0};// 默认全部初始化为0
3>int arr2[10]={10086,10010,10000,5,4,3};// 默认全部初始化为0
3.数组长度计算:可以用函数sizeof();计算的长度是以字节为单位
eg.int arr[10] = {10086, 10010, 10000, 5, 4, 3};
int size = sizeof(arr)/ sizeof(int);
printf("该数组的长度:%d\n", size);
4.内存: 以byte为单位进行读写操作
5.数组的下标:通过一个编号来访问数组中不同位置的数据
1>规则: 从0开始 依次递增1 ,任何一个数组的最大下标是: 数组的长度-1
2>注意: 下标不要超过这个范围 ,c语言中不会报错 ,你的数据不受到保护
3>格式: 数组名[下标]
4> ps: 存储、替换、修改: 数组名[下标]=值;
取出 拷贝值: 变量名=数组名[下标];
5>示例1:int n = arr[3];
printf("arr这个数组的第四个数据:%d\n", n);
示例2:arr[2] = 19999;
printf("%d \n", arr[2]);
6.应用
(1)先存储大量的数据
(2)查找某个数据是否存在
(3)批量替换
(4)平均值 求和
(5)最大值 、 最小值
(6)排序
(7)倒序输出
(8)次数统计
7.例题
给定一个字符串 长度上限为1000 内容都是字母,大写小写都包含,要求分别输出其中重复度最高的大小写字母
char str[1000] ="asdbnasdiojkaslkdhasdinjkasndjkhasidklalkdhasdinjkasndjkhasilasdnklasjljkasdnAKLSDKLsddklasdnklasjljkasdnAKLSDKLsdilkdhasdinlkdhasdinjkasndjkhasidklasdnklasjljkasdnAKLSDKLsdiasjljkasdnAKLSDKLsdilkdhasdinjkasndjkhasidklasdnklasjljkasdnAKLSDKLsdisdnkllkdhasdinjkasndjkhasidklasdnklasjljkasdnAKLSDKLsdiasjljkasdnAKLSDKLsdioklaskldNASKLDNKLASDNKLASDNKLASNDKLASFDBSASNNCBVNMZLPLOIUJKOQWEWQEFNCNNAWSOWDASDNNASDASDASDASDASDASD";
解:
1>步骤一
//计算真实长度即字符个数
方法1:自己统计
int len = 0; for (int i = 0; i < 1000; i++) { char c1 = str[i]; if (c1 == 0) { break; } else { len++; } } printf("str 字符个数:%d\n", len);方法2:用函数统计
int len2 = strlen(str); printf("str 字符个数:%d\n", len2);备注:
// 字符串最后一个字符是结尾符
// 字符串的定义: char xx[字符数+1];
//示例:char name[6] = "hello";
2>步骤二
//创建2个长度26的整数数组 一个表示小写 一个表示大写 0-25下标 a-z A-Z ASCII a-z(97~97+25)
A-Z(97-32~97-32+25)
char c1 = 'A'; printf("%d", c1); int s1[26] = {0}; int s2[26] = {0}; for (int i = 0; i < len; i++) { char c1 = str[i]; if (c1 >= 'a' && c1 <= 'z') { // 找出s1数组中对应下标中的元素 +1 s1[c1 - 'a']++; } else { s2[c1 - 'A']++; } } for (int i = 0; i < 26; i++) { printf(" %c : %d ,", i + 'a', s1[i]); } for (int i = 0; i < 26; i++) { printf(" %c : %d ,", i + 'A', s2[i]); }3>步骤三
// 查找最大值
int max1 = 0; int maxi = 0; for (int i = 0; i < 26; i++) { int m = s1[i]; if (m > max1) { max1 = m; maxi = i; } } printf("\n"); printf("小写字母中出现次数最多的是:%c", maxi + 'a');四.作业
// 写一篇数组的技术笔记: 数组的定义 格式 操作语法 用处
// 刷洛谷题目: 入门4 数组 3道题目