算法笔记

这篇博客介绍了C/C++的基础知识,包括基本数据类型、强制类型转换、运算符、顺序结构、选择结构、循环结构、数组、函数、指针和引用等内容。详细讲解了各种数据类型的定义、输出格式以及使用方法,特别是浮点型和指针的使用。还讨论了函数参数传递中引用的概念,强调了引用作为变量别名的特点和在函数调用中的应用。
摘要由CSDN通过智能技术生成

文章目录

  • 2.7.5 指针引用有一疑问

第2章 C/C++快速入门

2.1 基本数据类型

2.1.1 变量的定义

  • 变量类型 变量名;
  • 变量类型 变量名 = 初值;

2.1.2 变量类型

1. 整型 int
  • 输出格式:%d
2. 浮点型 float、double
  • 输出格式:%f

  • “ %.1f ”是指保留一位小数输出

  • 对浮点型数据来说,不要使用float,碰到浮点型的数据都应该用double来存储

3. 字符型 char
  • 输出格式:%c

  • 小写字母比大写字母的ASCII码值大32

4. 字符串型 string
  • 输出格式:%s
  • 字符串常量可以作为初值赋给字符数组,并使用%s的格式输出
5. 布尔型 bool

2.1.3 强制类型转换

  • 格式:(新类型名)变量名

2.1.4 符号常量和const常量

  • 符号常量(宏定义)格式
    • #define 标识符 常量
    • #define pi 3.14
    • 注意:末尾不加分号
  • const定义常量格式
    • const 数据类型 变量名 = 常量;
    • const double pi = 3.14;
  • (不推荐使用) define 定义任何语句或片段 格式
    • #define 标识符 任何语句或片段
    • #define ADD(a, b) ((a)+(b))
    • 宏定义的陷阱:它把替换的部分直接原封不动替换进去
    • 不要使用宏定义来做除了定义常量以外的事情,除非给能加的地方都加上括号

2.1.5 运算符

1. 算术运算符
  • ++i 与 i++
    • ++i 是先将i加1再使用i
    • i++是先使用i再加1

2.2 顺序结构

2.2.1 赋值表达式

2.2.2 使用 scanf 和 printf 输入/输出

1. scanf 函数的使用
  • scanf 是 输入函数

  • 格式:scanf("格式控制", 变量地址);

  • eg: scanf("%d", &n); 将输入的一个整数存放在 int 型变量 n 中

  • 格式符 数据类型
    %lld long long
    %f float
    %lf double
    %s 字符串(char 数组)
  • scanf("%s", str);

    • 字符数组前面不使用 & 取地址运算符。
    • 数组名称本身就代表了这个数组第一个元素的地址,所以不需要再加取地址运算符。
    • 在 scanf 中,除了 char 数组整个输入的情况不加 & 之外,其他变量类型都需要加 &
  • 除了 %c 以外,scanf对其他格式符(如 %d)的输入是以空白符(即空格、Tab)为结束判断标志的

  • 字符数组使用 %s 读入的时候以空格和换行作为读入结束的标志

  • scanf%c 格式是可以读入空格和换行的

2. printf 函数的使用
  • printf的格式

    printf("格式控制", 变量名称);

  • 对于 double 类型的数据,其输出格式变成了 %f,而在 scanf 中却是 %lf

  • 三种实用输出格式

    1. %md

      • %md 可以使不足 m 位的 int 型变量以 m 位进行右对齐输出,其中高位用空格补齐;如果变量本身超过 m 位,则保持原样。

      • 代码示例

        #include "stdio.h"
        
        int main(){
            int a = 123, b = 12345, c = 123456;
            printf("%5d\n", a);
            printf("%5d\n", b);
            printf("%5d\n", c);
        }
        
        // 输出结果
          123
        12345
        123456
        
    2. %0md

      • %0md 只是在 %md 中间多加了 0。和 %md 的唯一不同点在于,当变量不足 m 位时,将在前面补足足够数量的 0 而不是空格。
      • 这种格式在某些题中非常适用。
    3. %.mf

      • %.mf 可以让浮点数保留 m 位小数输出,这个“保留”使用的是精度的“四舍六入五成双”规则(具体细节不必掌握)。
      • 四舍五入使用 round 函数

2.2.3 使用 getcharputchar 输入/输出字符

  • getchar 用来输入单个字符,putchar 用来输出单个字符,在某些 scanf 函数使用不便的场合可以使用 getchar 来输入字符。

2.2.4 注释

2.2.5 typedef

  • typedef 用于给复杂的数据类型起别名,这样在使用中就可以使用别名来代替原来的写法。

  • 代码

    #include "stdio.h"
    // 使用 LL 代替 long long,以避免因在程序中出现大量的 long long 而降低编码效率
    typedef long long LL;
    int main(){
        LL a = 123456789012345, b = 1234567890098765;
        printf("%lld", a + b);
    }
    
    // 结果
    1358024679111110
    

2.2.6 常用的 math 函数

  • 头文件 math.h
1. fabs(double x)
  • 该函数用于对 double 型变量取绝对值
2. floor(double x) 和 ceil(double x)
  • floor 函数用于 double 型变量的向下取整,返回的类型为 double

  • ceil 函数用于 double 型变量的向上取整,返回的类型为 double

  • 代码

    #include "stdio.h"
    #include "math.h"
    
    int main(){
        double a = 5.2;
        double b = -5.2;
    
        printf("%f\n", floor(a)); // 向下取整
        printf("%f", ceil(a)); // 向上取整
    
        printf("\n%f", floor(b));
        printf("\n%f", ceil(b));
    }
    
    // 结果
    5.000000
    6.000000
    -6.000000
    -5.000000
    
3. pow(double r, double p)
  • 该函数用于返回 r p r^p
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr.Persimmon

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值