编程是一种控制计算机的方式,和我们平时双击打开文件、关机、重启没有任何区别。

一、软件环境

  1. 软件的安装与使用 DEV C++ 保姆级安装教程 VS Code 安装教程
  2. 训练的评测与提交 XAZXOJ

二、编写一个简单的 C++ 程序——手速练习​

如果想借助计算机解决实际问题,就要设计计算机程序并让计算机执行

#include <bits/stdc++.h> // 万能头文件
using namespace std; // 命名空间

int main() // 程序入口
{
 cout << "Hello,World!" << endl; // 换行
 
 return 0; // 程序正常结束
}

三、语法基础

  1. 变量的定义(变量代表了一个存储单元,其中的值是可以改变的)

    常用变量类型及范围:

    (1)布尔型 bool:true == 1 / false == 0 <1 Byte>

    (2)字符型 char:'a',' ','\n' <1 Byte>

    (3)整型 int:-2^31 ~ +2^31 - 1 -2147483648 ~ 2147483647 <4 Byte>

    (4)浮点型:

    a. 单精度浮点数 float:1.23,2.5,1.235e2,6 ~ 7 位有效数字 <4 Byte> 数据范围:-3.4e38 ~ 3.4e38

    b. 双精度浮点数 double:15 ~ 16 位有效数字 <8 Byte> 数据范围:-1.7e308 ~ 1.7e308

    (5)长整型 long long:-2^63 ~ +2^63 - 1 <8 Byte>

    (6)长浮点型 long double:18 ~ 19 位有效数字 <16 / 12 / 8 Byte> 数据范围:-3.4e4932 ~ 1.1e4932

    存储单位:1 Byte = 8 bit,带宽 10 Mbps

    单位换算:B KB MB GB TB 2^10 = 1024

    变量必须先定义后使用。不能重名,见名知意。

    变量定义的方式:

    #include <bits/stdc++.h>
    using namespace std;
    
    int main()
    {
        int a = 2;
        int b, c = a, d = 10 / 2;
        float e = 2.3, f = 1;
        double g = 1.235e2;
        bool h = true, i = false;
        char j = 'a', k = 'b';
        long long l = 100000000000LL;
        long double m = 1.234567891234567891;
    
        return 0;
    }
    
  2. 输入输出

    整数的输入输出:

    #include <bits/stdc++.h>
    using namespace std;
    
    int main()
    {
        int a, b; // 定义两个变量
        cin >> a >> b; // 输入 
    
        cout << a << endl << b;
        cout << a + b << ' ' << a * b << endl; // 输出 
    
     return 0;
    }
    

    运行结果:

    AC:Accepted

    WA:Wrong Answer

    CE:Compiler Error 编译错误

    TLE:Time Limit Error 超时

    MLE:Memory Limit Error 超内存

    SF / RE:Segmentation Fault / Runtime Error 数组越界

    输入输出多个不同类型的变量:scanf printf

    printf()输出保留小数

    #include <bits/stdc++.h>
    using namespace std;
    
    int main()
    {
        int a, b;
        float c, d;
        char e, f;
        double g, h;
        long long i, j;
        long double k;
        scanf("%d%d", &a, &b);
        scanf("%f%f", &c, &d);
        printf("a + b = %d\na * b = %d\n", a + b, a * b);
        printf("%.2f %.3f", c, d); // 保留n位小数输出
    
        scanf("%c%c", &e, &f); // 会读入空格
        cin >> e >> f; // 不会读入空格
    
        scanf("%lf%lf", &g, &h);
        printf("%lf %lf", g, h);
    
        scanf("%lld%lld", &i, &j);
        printf("%lld %lld", i, j);
    
        scanf("%Lf", &k);
        printf("%Lf", k);
    
        /*
        int bool: %d
        float: %f
        double: %lf
        char: %c
        long long: %lld
        long double: %Lf
        */
    
        return 0;
    }
    
  3. 表达式

    整数的加减乘除四则运算:+ - * / %

    /:5 / 2 = 2 隐性转换

    %:5 % 2 = 1

    5 % -2 = 1
    -5 % 2 = -1
    

    取余数,和数学中的余数定义(0 ≤ 余数 ≤ 除数)不同,结果取决于前面数的正负,只能整数

    故判断一个整数是否为奇数时最好写成 if (i % 2 != 0)

    #include <bits/stdc++.h>
    using namespace std;
    
    int main()
    {
        int a = 6 + 3 * 4 / 2 - 2;
        cout << a << endl;
    
        int b = a * 10 + 5 / 2;
        cout << b << endl;
    
        cout << 23 * 56 - 78 / 3 << endl;
    
        return 0;
    }
    

    变量的自增、自减运算:a++ ++a a-- --a

    #include <bits/stdc++.h>
    using namespace std;
    
    int main()
    {
        int a = 1;
        int b = a ++ ;
        cout << a << ' ' << b << endl;
    
        int c = ++ a;
        cout << a << ' ' << c << endl;
    
        return 0;
    }
    

    简写运算:+= -= *= /= %=

    浮点数(小数)的运算:

    不同变量做运算时发生隐式类型转换:朝向精度高的类型转换

    #include <bits/stdc++.h>
    using namespace std;
    
    int main()
    {
        float x = 1.5, y = 3.2;
    
        cout << x * y << ' ' << x + y << endl;
        cout << x - y << ' ' << x / y << endl;
    
        return 0;
    }
    

    变量的强制类型转换 显性转换:

    #include <bits/stdc++.h>
    using namespace std;
    
    int main()
    {
        float x = 123.12;
        int y = (int)x; // 向 0 取整
        cout << x << ' ' << y << endl;
    
        int a = 97;
        char c = (char)a;
        cout << c << endl;
    
        char b = 'A';
        cout << (char)(b + 32) << endl;
    
        return 0;
    }
    

    ASCII 码表(American Standard Code for Information Interchange):

    常用字符的 ASCII 值:'A' 65,'a' 97,'0' 48,' ' 32 ASCII 表

  4. 顺序结构

    (1) 输出第二个整数

    #include <bits/stdc++.h>
    using namespace std;
    
    int main()
    {
        int a, b, c;
        cin >> a >> b >> c;
    
        cout << b << endl;
    
        return 0;
    }
    

    (2) 计算 (a + b) * c 的值

    #include <bits/stdc++.h>
    using namespace std;
    
    int main()
    {
        int a, b, c;
        cin >> a >> b >> c;
    
        cout << (a + b) * c << endl;
    
        return 0;
    }
    

    (3) 带余除法

    #include <bits/stdc++.h>
    using namespace std;
    
    int main()
    {
        int a, b;
        cin >> a >> b;
    
        int c = a / b, d = a % b;
        cout << c << ' ' << d << endl;
    
        return 0;
    }
    

    (4) 求反三位数

    #include <bits/stdc++.h>
    using namespace std;
    
    int main()
    {
        int n;
        cin >> n;
    
        int a = n % 10;
        n = n / 10;
        int b = n % 10;
        n = n / 10;
        int c = n;
    
        cout << a << b << c << endl;
    
        return 0;
    }
    

    (5) 交换两个整数

    #include <bits/stdc++.h>
    using namespace std;
    
    int main()
    {
        int a = 3, b = 4;
    
        int t = a;
        a = b;
        b = t;
    
        cout << a << ' ' << b << endl;
    
        return 0;
    }
    

    (6) 输出菱形

    #include <bits/stdc++.h>
    using namespace std;
    
    int main()
    {
        char c;
        cin >> c;
    
        cout << "  " << c << endl;
        cout << " " << c << c << c << endl;
        cout << c << c << c << c << c << endl;
        cout << " " << c << c << c << endl;
        cout << "  " << c << endl;
    
        return 0;
    }
    

备注:

  1. 变量名的二义性:max x1

  2. 用万能头时不能定义变量名 y1 y0 j0 j1 time等保留字

  3. sizeof()用于计算数据类型所占的字节数

  4. 整型溢出

  5. 常用函数 abs(x) max(x, y) min(x, y) swap(x, y) pow(x, y) rand() ceil()

  6. long long 范围:263-2^{63} ~ 26312^{63} - 1unsigned long long 范围:00 ~ 26412^{64} - 1

    在数据范围为 0x2640≤x≤2^{64} 时,要用 ULL,否则会溢出失真。

5 comments

  • 1