脸熟赛

新生赛基础知识笔记

数据类型

基本类型

数据型

  • 整型

    关键字 格式控制符
    short int %d
    int %d
    long long int %lld
  • 浮点型

    保留字 格式控制符
    float %f
    double %lf

字符型

  • 字符
    保留字 格式控制符
    char %c

构造类型

指针类型

空类型

  • void

数据结构

基本结构

单个变量

char c;		//声明变量
int i = 0;		//对变量进行声明及初始化

数组

int a[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};		//对数组进行声明及初始化
double s[10] = {};		//对数组进行声明并默认初始化为0

高级结构

运算符

种类

  • 算术运算符

    符号 用例
    + a+b
    - a-b
    * a*b
    / a/b
    % a%b
    ++ a++, ++a
    -- a--, --a
  • 关系运算符

    符号 用例
    > a > b
    < a < b
    >= a >= b
    <= a <= b
    == a == b
    != a != b
  • 逻辑运算符

    符号 用例
    && a && b
    || a || b
    ! !a
  • 位运算符

    符号 用例
    & a & b
    | a | b
    ~ ~a
    ^ a ^ b
    << a << b
    >> a >> b
    /*
    	异或的交换律
    	a^b = b^a
     */
    //a[i] <==> a[i+1]
    a[i] = a[i] ^ a[i+1];
    a[i+1] = a[i] ^ a[i+1];
    a[i] = a[i] ^ a[i+1];
    

  • 赋值运算符

    • 简单赋值

      符号 用例
      = a = b
    • 复合算术赋值

      符号 用例
      += a += b
      -= a -= b
      *= a *= b
      /= a /= b
      %= a %= b
    • 复合位运算赋值

      符号 用例
      &= a &= b
      |= a |= b
      ^= a ^= b
      <<= a <<= b
      >>= a >>= b
  • 条件运算符

    符号 用例
    ?: (a>=b) ? a : b
  • 逗号运算符

    符号 用例
    , a = 0, b = 2, c = 3
  • 指针运算符

    符号 用例
    * *p
    & &n
  • 求字节运算符

    符号 用例
    sizeof sizeof(a)
  • 特殊运算符

    符号 用例
    ( ) (a-b)*c
    [ ] a[N]
    . a.b
    -> a->b

优先级

计算机按照从小到大(优先级),从左往右(先后顺序)对表达式进行运算。

优先级 符号
1 ( ) [ ] . ->
2 (类型) ! ~ - ++ -- * &
3 * / %
4 + -
5 << >>
6 > < >= <=
7 == !=
8 &
9 ^
10 |
11 &&
12 ||
13 ?:
14 = += -= *= /= %= <<= >>= &= |= ^=
15 ,

流程控制语句

分支

  • if else

      /*
         判断成绩:
         优秀:[85,100],
         良好:[70,85),
         及格:[60,70),
         不及格:[0,60);
         其他未定义
         */
        int score = 0;      //初始化成绩
        if (score > 100) {      //未定义
            printf("你可真牛逼");
        } else if (score >= 85) {       //优秀
            printf("优秀");
        } else if (score >= 70) {       //良好
            printf("良好");
        } else if (score >= 60) {       //及格
            printf("及格");
        } else if (score >= 0) {        //不及格
            //printf("加了个油!!!");
        		printf("不及格");
        } else {
            printf("你也挺牛逼");        //未定义
        }
    
  • switch case

循环

  • for

       /*
         for循环遍历数组
         */
        double a[10] = {};      //声明数组并初始化为0
        for (int i = 0; i < 10; i++) {      //以i为循环变量对遍历数组
            printf("a[%d] : %lf\n", i, a[i]);
        }
    
  • while

       /*
         while循环遍历数组
         */
        int a[10];      //声明数组不进行初始化
        int n = 0;      //声明循环变量
        
        while (n < 10) {
            printf("a[%d] : %d\n", n, a[n]);
          	n++;
        }
    
    
  • do while

函数

库函数

  • 标准输入输出库函数

      #include<stdio.h>		//声明调用标准库函数
    

    其中常用函数有 scanf(), printf()等。

  • 标准库函数

      #include<stdlib.h>		//声明调用标准库函数
    

    其中常用函数有 qsort()等。

自定义函数

算法

排序

  • 冒泡排序

    /*
     冒泡排序
     对长度为len的数组a[]进行排序
     */
    void myBubbleSort(int a[], int len) {
        for (int i = 0; i < len; i++) {
            
            //printf("\t第%d次循环\n", i);      //循环次数
    
            for (int j = 0; j < len - 1 - i; j++) {
                if (a[j] > a[j+1]) {    //从小到大进行排序
                    
                    //交换 : a[j] <==> a[j+1]
                    //printf("\tswap> a[%d] : %d\tto \ta[%d] : %d\n", j, a[j], j+1, a[j+1]);
    
                    int t = a[j];
                    a[j] = a[j+1];
                    a[j+1] = t;
    
                }
            }
        }
        return;
    }
    
  • 快速排序

    //声明调用
    #include<stdio.h>
    #include<stdlib.h>
    
    
    //自定函数的声明及定义
    int myComp(const void*a,const void*b) {
        return *(int*)a-*(int*)b;
    }
    
    
    //主函数
    int main() {
        /*
         数组变量声明及初始化
         */
        int a[10] = {13579, 24680, 0, -129837, 92, 6, -2, -837, 666, 123};
        int n = 10;
        
        //for循环遍历数组
        printf("排序前\n");
        for(int i = 0; i < n; i++) {
            printf("\ta[%d] = %d\n", i, a[i]);
        }
        
        qsort(a, 10, sizeof(int), myComp);        //调用库函数
    
        
        //while循环遍历数组
        printf("排序后:\n");
        n = 0;
        while (n < 10) {
            printf("\ta[%d] : %d\n", n, a[n]);
            n++;
        }
        
        return 0;
    }
    
    

知识结构图

image

posted on 2021-08-22 11:23  dzcq  阅读(62)  评论(0编辑  收藏  举报