稀碎的各种小点 (待更)

稀碎的各种小点

1. 各种快捷键
1.1 window 相关
win + r ===> 打开控制面板
        ===> 输入 cmd ===> 命令符界面
ctrl + z ===> 电脑撤回
CTRL + w ===> 关闭当前页面
shift + win(电脑徽标键) + s ===>电脑截图
ctrl + s ===> 文件另存/保存

1.2 linux 相关
  1. 在 Ubuntu 里的 linux 系统
ctrl + space ===> linux 切换输入法
shift + zz ===> 退出当前 Vim 操作
ctrl + c ===> 跳出运行
1.3 VS 相关
Alt + Shift + F ===> 自动对齐代码
ctrl + L ===> 终端清屏命令
ctrl + J ===> 打开下方终端
ctrl + S ===> 自动保存
ctrl + B ===> 打开侧边目录
ctrl + F ===> 打开搜索
ctrl + 鼠标左键放在对应函数名 ===> 跳转到函数实现
光标所在行 + ctrl + c ===> 复制光标所在行
光标所在行 + ctrl + v ===> 粘贴在光标所在行上一行
光标所在行 + ctrl + x ===> 剪切光标所在行
1.4 Qt 相关
ctrl + shift + "+" ===> 放大 Qt 界面
ctrl + "-" ===> 缩小 Qt 界面
.exec ===> 执行的意思
Push Button ===> 按钮

Alt + enter(回车键) ===> 在 .cpp 文件添加定义 ===> enter 
		// 直接在 .cpp 文件里补齐函数结构

Debug ===> 打印头文件:实现控制台展示功能所使用的头文件名称
1.5 Mark Down 相关
ctrl + / ===> 打开文件源代码模式
2. 算法相关
2.1 函数小注意
  1. int 最多支持阶乘数据到 12!

    long — 20!

    float — 34!

    double — 170!

  1. 选择分支相关英文

    switch - case / default - break;

  1. exit(EXIT_FALURE); 时,头文件要加上 #include <stdlib.h>
  1. 函数倒叙输出主要函数
int num = 12345;
while (num > 0)
{
    printf("%d", num % 10);
    num /= 10;
}
  1. return EXIT_FAILURE ;
    ​ 返回函数,表示运行失败

    return EXTI_SUCCESS;
    ​ 表示运行成功

    这俩个可用于 int 数组返回,可以来表示函数运行是否成功

  1. #define X 10 ===> 定义了一个常量 X , 赋值为 10
  1. 打印常用
%c : 用于打印字符 char 
%d : 用于打印整数 int shrot
%ld : 用于打印长整数 long
%f : 用于打印浮点数 float
%lf : 用于打印双精度浮点数 double
%x 或 % X : 用于打印十六进制整数
%o : 用于打印八进制整数
%s : 用于打印字符串 string
%p : 用于打印指针地址
  1. 内存设置/擦除函数
/*
内存设置/擦除函数格式
	memset(void * ptr, char ch, int n);	
*/
memset(arr, 0sizeof(int) * (10));
// 或者可以写为 memset(&arr[0], 0, sizeof(int) * 10);
/*
arr / &arr[0] :
	找到数组首地址
	
0 :
	这里的 0 是 ASCLL码里的编号 0 ,对应 nul
	内存擦除操作,对应内存所有二进制为都是 0,会根据不同的数据类型对外的数据情况不同
       如果是指针类型 ==> NULL
       如果是整数类型 ==> 0
       如果是 float 类型 ==> 0.0F
       如果是 double 类型 ==> 0.0
       如果是 char 类型 ==> '\0' 编码中编号为 0 的字符
	
sizeof(int) * 10 :
	sizeof 的作用:
		1. 动态内存分配中,确保你分配的内存大小足够来容纳你的数据。
		2. 在 C 和 C++ 中常用的运算符,用于计算数据类型或者对象的大小(以字节为单位)。它返回其操作数的字节大小。
		
	这里 sizeof(int) * 10 计算出整型数组需要的总字节数,以确保分配足够的内存,
	10 表示有 10 个 int 类型的元素。这是因为 sizeof(int) 给出了一个 int 类型的大小(通常是 4 字节或 8 字节,具体取决于编译器和系统),然后乘以 10 表示有 10 个这样的元素。	
*/
  1. 计算机最小存储单位:是字节(byte),不是比特(bit)

10.switch-case 不支持浮点型,因为浮点型稳定性不好

2.2 函数和变量常用定义名称
temp ===> 临时变量(常用于交换数据时使用)
count ===> 计数
score ===> 成绩
num ===> 数字

select_sort ===> 选择排序函数
reverse 逆向反向 ===> 用来逆序函数出函数命名

capacity ===> 定义数组容量命名
print_int_array ===> 打印数组函数
checkCapacity ===> 检查数组容量(check:检查)
grow ===> 常用于扩容数组命名(grow:增长,增加)
copy_array ===> 复制数组
sub_array ===> 截取数组
dst[]/ dest[] ===> 目标数组 // 通常可以用于复制数组来用,将源数组中的数据复制到目标数组中
src[] ===> 源数组
arr[] ===> 普通数组 

head ===> 链表头结点结构体名
node ===> 链表结点结构体名
prev ===> 上一个
2.3 无符号整型和整型有什么区别

无符号整型(unsigned integers)和有符号整型(signed integers)是两种基本的整数数据类型,它们之间的主要区别在于可以表示的数值范围和表示方式。

  1. 有符号整型
    • 使用一个比特位(bit)表示正负号。例如,对于一个 8 位的有符号整数,其中 7 位用于表示数值,而最高位用于表示正负号(0 代表正数,1 代表负数)。
    • 因为要表示正负号,所以有符号整型的取值范围是不对称的。例如,一个有符号 8 位整数的取值范围为 -128 到 127(包含零)。
  2. 无符号整型
    • 所有的比特位都用于表示数值本身,没有一位用于表示正负号。因此,无符号整型仅表示非负数。
    • 无符号整型的取值范围是对称的,全部用于表示数值。例如,一个无符号 8 位整数的取值范围是从 0 到 255。

在使用这两种类型时,需要【注意】以下几点:

  • 有符号整型可以表示正数、负数和零,而无符号整型仅能表示非负数(即正数和零)。
  • 无符号整型提供了更大的正数范围,但不支持负数。
  • 在某些情况下,无符号整型可能会导致意外的行为,例如在涉及算术运算、类型转换和比较时,需要特别小心,以避免溢出和未定义行为。

在选择使用有符号整型还是无符号整型时,要考虑到具体的需求和所需表示的数据范围。

2.4 字符串等值判断
  1. "ABC" == "ABC" 字符串常量等值判断

    判断结果为1
    因为在此处比较的不是字符串内容,比较的是地址,同一个字符串常量在内存中的地址一致。而此时两个字符串内容一致,地址也是一样的。

  2. 首先arr[4] = {'A', 'B', 'C', '\0'},当 "ABC" == arr[4]时 判断结果为?
    判断结果为 0
    因为字符数组的地址存储区域和字符串常量存储不一致,所以他们的地址不相同,结果为 0。

2.5 两个同数组中元素取地址相减操作
int arr[5] = {1, 2, 3, 4, 5};

printf("&arr[4] - &arr[1] : %ld\n", &arr[4] - &arr[1]);

最终结果为 3
两个同数组中元素取地址相减操作
CPU 首先计算两个地址直接的字节差,根据数据类型相除,最终结果时两个地址的【下标差/坐标差】

3. CPU 分区【超超超重点,背会的】

在这里插入图片描述

4. 随机数
4.1 随机函数种子

随机函数种子:srand 函数

srand((unsigned int)time(NULL));
1. srand 函数
	srand(100); 
		// 随机数最小值是 100 ~ UINT_MAX(无符号整型最大值),这样写的随机数范围是固定的,随机数数值还是没有变化
	
2. (unsigned int)time(NULL)
    time(NULL) 
    	// 获取时间戳,代表当前时间离 1971 年 1 月 1 日有多少秒,这样随机数范围就是一个不断变化的值,这时随机数也会发生变化。
    (unsigned int)
    	// 强制类型转换语法
    	// 例如:int a = (int)1.1;
4.2 随机数
  • rand() 函数:

    实际上是一个伪随机数,他直接用会产生一个固定的数字。因为如果在调用 rand() 之前没有设置随机数种子(即没有调用 srand()),则 rand() 函数将使用默认的种子,通常是1。这样会导致每次运行程序时都得到相同的伪随机数。这是因为在相同的种子下,伪随机数生成器产生的序列是确定性的。

int num = rand();
prindf("num = %d\n", num); // num = 1804289383(结果固定)
	// rand(); 产生一个随机数,不可控,一般不会直接使用
	// 需要固定范围
  • 一般使用形态有以下几种:

    • rand( ) % x

      得到范围 [0, x - 1]

    • rand( ) % x + a

      得到范围 [a, x - 1 + a]

    • rand( ) % x * 10

      得到随机数是 10 的整数倍

  • 描述概率问题

    • 用生成数字的百分比
#include <stdio.h>
#include <time.h> // 时间头文件
#include <stdlib.h>

int main(int argc, char const *argv[])
{
    srand((unsigned int) time(NULL));

    int num = 0;
    // 记录抽奖次数
    int count = 1;

    printf("输入 1 开始抽奖, 输入 0 拒绝抽奖: \n");
    scanf("%d", &num);

    while(num)
    {
        printf("第 %d 次抽奖结果:\n", count);

        int result = rand() % 100;// [0, 99]
        if (result >= 0 && result < 4)
        {
            printf("抽到 SSS 卡 \n");
            num = 1;
            break;
        }
        else if (result >= 5 && result < 14)
        {
            printf("抽到 SS 卡 \n");
        }
        else if (result >= 15 && result < 29)
        {
            printf("抽到 S 卡 \n");
        }
        else if (result >= 30 && result < 49)
        {
            printf("抽到 A 卡 \n");
        }
        else
        {
            printf("抽到 F 卡 \n");
        }
        
        /*
        如果想要有保底:抽 n 次必中,加上以下函数
        if (count == n)
        {
            printf("保底:抽到 SSS 卡 \n");
            break;
        }
        如果是最少抽 n 次才能中 SSS 卡,则把函数改为
        if (result >= 0 && result < 4 && count > n)
        {
            printf("抽到 SSS 卡 \n");
            num = 1;
            break;
        }
        */

        printf("请问你还要继续抽奖吗?输入 1 继续抽奖, 输入 0 拒绝抽奖\n");
        scanf("%d", &num);
        if (num == 0)
        {
            printf("很遗憾,你距离 SSS 卡仅有一步之遥\n");
        }
       
      count++;
    }
    if (num == 1)
    {
        printf("恭喜你抽了 %d 次,获得 SSS 卡!!!!\n", count);
        if (count == 1)
        {
            printf("一发入魂!!!\n");
        }
        else if (1 < count && count <= 10)
        {
            printf("你运气真好,欧皇实锤了!!!\n");
        }
        else if (80 < count && count <= 100)
        {
            printf("老倒霉蛋就是你\n");
        } 
    }

    return 0;
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值