[C.C++] C语言笔记

332 0
Honkers 2025-4-2 07:58:53 来自手机 | 显示全部楼层 |阅读模式

C语言中的常见函数

time () 获取当前时间

形参:表示获取当前时间是否需要在其他地方进行存储

           一般来讲,不需要在其他地方进行存储的NULL(大写)

返回值:long long

随机数、

#include

#include

int main()

{

     //设置种子

    srand( time(NULL));

    //获取随机数

    int num = rand();

    //输出打印

    printf("%d\n",num);

    return 0;

}

伪随机数

线性同余方程:

参数决定:随机数的范围、随机数的均匀度

随机数的弊端:

1.种子不变,随机数结果是固定的

2.随机数的范围

用于生产任意范围之内的随机数:

1.把这个范围变成包头不包尾,包左不包右的  1~101

2。拿着尾巴-开头   24-7=17

3.修改代码

六、数组

1.什么数组

数组:是一种容器,可以用来存储同种数据类型的多个值

2.数组的定义

数据类型      数组名   [长度]

    int               arr         [3]     (表示数组现在最多能存几个整数)

特点1:连续的空间

特点2:一旦定义,长度不可变

3.数组的初始化

3.1初始化:

定义数组的时候,第一次给数组赋值

3.2格式:

数据类型  数组名[长度] = {数据值,数据值...}

3.3细节:

3.3.1长度省略:

数据值的个数就是数组长度

数组长度:3

3.3.2长度未省略

数据值的个数<=长度

默认值:

整数:0     小数:0.0     字符:‘\0’      字符串:NULL(什么都没有)

4.元素访问

元素访问——获取 修改

4.1索引:

索引就是数组的一个编号,也叫做:角标,下标,编号

特点:从0开始的,连续+1,不间断

4.2获取:

变量 = 数据名[索引]

int num = arr[5]

printf("占位符”,数组名[索引]);

printf("占位符",arr[5]);

4.3修改:

数组名[索引] = 数据值;

arr[5] = 10

5.数组的遍历

5.1遍历:

依次获取数组中的每一个元素

6.内存中的数组

6.1什么是内存

内存:软件在运行时,用来临时存储数据的

两个操作:1.把数据保存到内存中

                  2.从内存的对应位置把数据取出来

6.2内存地址

内存中每一个小格子的编号

作用:快速的管理内存空间

6.3内存地址的规则:

1.32位的操作系统,内存地址以32位的二进制表示

2.64位的操作系统,内存地址以64位的二进制表示

7.数组中的常见问题

问题1.

数组作为函数的形参

数组作为函数的参数进行传递的时候,那么实际上传递的是数组的首地址,如果要在函数中对数组进行遍历的话,记得一定要把数组的长度一起传递过去

而且在上面数组定义的地方两个arr不是同一个东西

在定义处:arr表示的是一个完整的数组

在函数中:arr表示的是一个变量,用来记录数组的首地址

问题2.

数组的索引越界

索引越界:访问了不存在的引索

最小索引:0

最大索引:长度 - 1

8.练习

数组求和

遍历数组求和

反转数组

打乱数组中的数据

9.数组常见算法

9.1查找算法

9.1.1基本查找(顺序查找)

一堆数据,要查找其中的某个数据

核心思路:就是从数据的0索引开始,依次往后查找

                  如果找到了,就会返回数据对应的索引

                  如果没有找到,就会返回-1

9.1.2.二分查找/折半查找

前提条件:数组中的数据必须是有序的

核心逻辑:每次排除一半的查找范围

1.min和max表示当前要查找的范围

2.mid是在min和max中间的

3.如果要查找的元素在mid左边,缩小范围时,min不变,max等于mid减1

4.如果要查找的元素在mid右边,缩小范围时,min不变,max等于mid加1

优势:提高查找效率

9.1.3插值查找

要求:数据要有序,且数据分布尽可能的均匀一点

优势:满足要求,效率比二分查找快,否则反而会更慢

9.1.4分块查找

分块的原则1:前一块中的最大数据,小于后一块中的所有数据(块内无序,块间有序)

分块的原则2:块数数量一般等于数字的个数开根号,比如16个数字一般分为4块左右

核心思路:先确定要查找的元素在哪一块,然后再块内挨个查找

9.2排序算法

9.2.1冒泡排序

冒泡排序:相邻的数据两两比较,小的放前面,大的放后面

过程:1.相邻的数据两两比较,小的放左面,大的放右面 

           2. 第一轮循环结束,最大值已经找到,在数组的最右边

           3.第二轮循环只要在剩余的元素找最大值就可以了

           4.第二轮循环结束,次大值已经确定,第三轮循环继续在剩余数据中循环

注意:1.相邻的数据两两比较,小的放左面,大的放右面 

           2.第一轮比较完毕之后,最大值就已经确定,第二轮可以少循环一次,后面以此类推

           3.如果数组中有n个数据,总共我们只要执行n-1轮的代码就可以

9.2.2选择排序

选择排序:从0索引开始,拿着每一个索引上的元素跟后面的元素依次比较,小的放前面,大的放后面,以此类推

过程:1.从0索引开始,跟后面的元素一一比较

           2.小的放前面,大的放后面

           3.第一轮循环结束后,最小的数据已经确定

           4.第二轮循环从1索引开始以此类推

           5.第三轮循环从2索引开始以此类推

           6.第四轮循环从3索引开始以此类推

七.指针

1.指针

什么是指针:指针=内存地址

什么是指针变量:存储着内存地址的变量

指针的变量定义格式:

数据类型(要跟指向变量的类型保持一致)       *(标记)     变量名(自己起的名字)

指针的作用:查询数据

指针的使用细节:

1.指针变量的名字

2.指针变量的数据类型要跟指向变量的类型保持一致

3.指针变量占用的大小,跟数据类型无关,跟编译器有关

4.给指针变量赋值的时候,不能把一个数值赋值给指针变量

2.指针的作用

2.1第一个作用

操作其他函数中的变量

细节:函数中变量的生命周期跟函数相关,函数结束了,变量也会消失

           此时在其他函数中,就无法通过指针使用了

           如果不想函数中的变量被回收,可以在变量前面加static关键字

2.2第二个作用

函数返回多个值

2.3第三个作用

函数的结果和计算状态分开

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Honkers

荣誉红客

关注
  • 4010
    主题
  • 36
    粉丝
  • 0
    关注
这家伙很懒,什么都没留下!

中国红客联盟公众号

联系站长QQ:5520533

admin@chnhonker.com
Copyright © 2001-2025 Discuz Team. Powered by Discuz! X3.5 ( 粤ICP备13060014号 )|天天打卡 本站已运行