• 【C/C++】之C/C++快速入门


    1    基本数据类型

    C/C++语言中的基本数据类型及其属性如下表所示:

     

    类型

    取值范围

    大致范围

    整形

    int

    -2147483648 ~ +2147483647 

    (即-231 ~ +(231-1))

    -2*109 ~ +2*109

    long long

    -263 ~ +263-1

    -9*1018 ~ +9*1018

    浮点型

    float

    -2128 ~ +2128  (实际精度6~7位)

    实际精度6~7位

    double

    -21024 ~ +21024  (实际精度15~16位)

    实际精度15~16位

    字符型

    char

    -128 ~ +127

    -128 ~ +127

    布尔型

    bool

    0(false) or 1(true)

    0(false) or 1(true)

    2    常量

    在C/C++语言中,常量有两种表示方式,分别是:符号常量和const常量。

    (1)符号常量:

    #define PI 3.14159

    (2)const常量:

    const double PI = 3.14159;

    注意:以上两种方法,都是写在.c/.cpp文件中,方法外部的,一个详细示例如下:

    #include <stdio.h>
    #define PI 3.14  //const double PI = 3.14;
    int main() { …… }

    在PAT、ACM等算法比赛中,建议使用const方法。

    3    位运算符

    C/C++语言中,位运算符有六种,分别是:左移、右移、位与、位或、位异或、位取反。六种位运算符的详细特性和用法如下表所示。

    运算符

    含义

    语法

    效果

    << 

    左移

    a << x

    整数a按二进制左移x位

    >> 

    右移

    a >> x

    整数a按二进制右移x位

    &

    位与

    a & b

    整数a和b按二进制对齐,按位进行与运算(除了11得1,其他均为0)

    |

    位或

    a | b

    整数a和b按二进制对齐,按位进行或运算(除了00得0,其他均为1)

    ^

    位异或

    a ^ b

    整数a和b按二进制对齐,按位进行异或运算(相同为0,不同为1)

    ~

    位取反

    ~a

    整数a的二进制的每一位进行0变1、1变0的操作

    4    输入输出

    (1)C++语言中的输入输出方式为:cin、cout。

    cin、cout的操作不需要关注输入或输出数据的类型。

    (2)C语言中的输入输出方式为:scanf()、printf()。

    scanf()、printf()的操作需要关注输入或输出数据的类型。对于不同的数据,都需要特定的占位符,才能进行输入或输出。常见几种数据类型在输入、输出时的特征如下表所示。

    数据类型

    占位符

    输入举例

    输出举例

    int

    %d

    scanf(“%d”, &n);

    printf(“%d”, n);

    long long

    %lld

    scanf(“%lld”, &n);

    printf (“%lld”, n);

    float

    %f

    scanf(“%f”, &f);

    printf (“%f”, f);

    double

    %lf

    scanf(“%lf”, &d);

    printf (“%lf”, d);

    char

    %c

    scanf(“%c”, &c);

    printf (“%c”, c);

    字符串(char数组)

    %s

    scanf(“%s”, s);

    printf (“%s”, s);

    其他输出格式:

    (1)%md:可以使%d输出的值占m位,贴右侧对齐,不足m位的前面补空格,超出m位的正常显示。

    (2)%-md:可以使%d输出的值占m位,贴左侧对齐,超出m位的正常显示。

    (3)%0md:可以使%d输出的值占m位,贴右侧对齐,不足m位的前面补0,超出m位的正常显示。

    (4)%.mf:可以使%f输出的值具有m位小数位,不足的补0,超出的四舍五入。

    getchar()、putchar()、gets()和puts():

    getchar()用来获取用户输入的下一个字符;putchar()用来打印一个字符。其用法如下:

    char c;
    c = getchar();
    putchar(c);

    gets()用来获取用户输入的下一个字符串;puts()用来打印一个字符串。其用法如下:

    char str1[20];
    char str2[5][10];
    gets(str1);
    gets(str2[0]);
    puts(str1);
    puts(str2[0]);

    5    typedef

    typedef关键字用来给复杂的数据类型起别名。其用法如下:

    #include <stdio.h>
    typedef long long LL;
    int main(){  LL ll; ……  }

    6    math.h

    math.h是C语言中的数学方法库,使用之前需要先导入这个头文件:#include <math.h>。math方法库中的部分方法及其用法如下:

    (1)fabs(double x):该方法用于对double型变量取绝对值。

    (2)floor(double x):该方法用于求小于x的最大的整数(对x向下取整)。

    (3)ceil(double x):该方法用于求大于x的最小的整数(对x向上取整)。

    (4)pow(double r, double p):该方法用于求r的p次方(r和p必须都是double类型)。

    (5)sqrt(double x):该方法用于求x的开平方值。

    (6)sin(double x):该方法用于求x的正弦值,如45°的正弦值求法为:sin(PI*45/180)。

    (7)round(double x):该方法用于求x的四舍五入的值。

    7    string.h

    string.h是C语言中的字符串方法库,使用之前需要先导入这个头文件:#include <string.h>。string.h方法库中部分方法及其用法如下:

    (1)strlen(char[] c):返回字符数组c的长度。

    (2)strcmp(char[] c1, char[] c2):比较c1和c2,返回它们的大小比较,1表示c1比c2大,0表示c1和c2一样大,-1表示c1比c2小。

    (3)strcpy(char[] c1, char[] c2):将c2中的内容复制到c1中。

    (4)strcat(char[] c1, char[] c2):将c2中的内容追加到c1内容的后面。

    8    指针和引用

    1、指针:

    (1)定义一个指针变量:int* a;

    (2)获取某个变量的指针:int* p = &a;

    (3)获取某个指针变量指向的变量:int a = *p;

    (4)获取数组a中的第i个元素:int ai = *(a + i);

    2、引用:

    (1)对于如下代码:

    void swap(int a, int b) {
         int temp = a;
         a = b;
         b = temp;
    }
    int main() {
         int a = 1, b = 2;
         swap(a, b);
         printf(“%d,%d”, a, b);
         return 0;
    }

    对于上面的代码,输出的a和b仍然是1和2,这是因为在C语言中,传入函数的参数都是原来参数的副本,修改副本的值对原值是没有作用的。

    为了解决这个问题,可以使用的方法有两种,分别是使用指针和引用。

    1)使用指针,代码如下:

    void swap(int* a, int* b) {
         int temp = *a;
         *a = *b;
         *b = temp;
    }
    int main() {
         int a = 1, b = 2;
         int* p1 = &a, *p2 = &b;
         swap(p1, p2);
         printf(“%d,%d”, a, b);
         return 0;
    }

    2)使用引用,代码如下:

    void swap(int &a, int &b) {
         int temp = a;
         a = b;
         b = temp;
    }
    int main() {
         int a = 1, b = 2;
         swap(a, b);
         printf(“%d,%d”, a, b);
         return 0;
    }

    通过上面的代码对比可以看出,C语言中的引用可以将原变量传递到函数中去。

    9    结构体

    1、声明结构体,代码如下:

    struct User {
         int id;
         char gender;
         char name[20];
    } Alice, stu[200], *p;

    2、创建结构体对象,代码如下:

    User Alice;
    User stu[200];
    User *p;
    // 注:如果在声明结构体的时候定义了对象名称,如上1中的Alice等,则不需要再创建对象

    3、调用结构体对象中的属性,代码如下:

    (1)结构体对象不是指针变量:

    Alice.id = 111111;
    stu[0].gender = ‘f’;

    (2)结构体对象是指针变量:

    (*p).id = 2222222;
    (*p).name = “zhangsan”;
    //
    p->id = 2222222;
    p->name = “zhangsan”;

    4、为结构体创建构造函数:

    struct Point {
         double x;
         double y;
         Point() {}
         Point(double _x, double _y) {
             x = _x;
             y = _y;
        }
    }
    int main() {
         Point p = Point(20, 20);
    }
  • 相关阅读:
    ubuntu下安装VMware tools
    ubuntu 输入su提示认证失败的解决方法
    Squishy Bird 压扁小鸟
    js 毫秒转日期(yy-MM-dd hh:mm:ss)
    js--使用构造器函数来新建对象及操作
    css中table样式
    js 字符串截取
    JavaScript中Math--random()/floor()/round()/ceil()
    canvas draw a image
    html5 canvas simple drawing
  • 原文地址:https://www.cnblogs.com/itgungnir/p/7467252.html
Copyright © 2020-2023  润新知