编程笔记

1 输入输出处理

  • $scanf$ 函数

    • 字符数组使用 %s读入时,以 空格换行 为读入结束标志
    • %c 格式可读入 空格换行
  • $getchar$ 用来输入单个字符,可 识别换行符$putchar$ 用来输出单个字符

    char c;
    getchar();
    putchar(c);
    
  • 不要同时在一个程序中使用 $cout$$printf$

2 数据类型应用

  • 四种基本数据类型

    algorithm-notes-01

  • 对于浮点型,不要使用 $float$

3 字符串

  • $sscanf$$sprintf$

    • 假设定义一个 $char$ 数组 $str[100]$
      • $sscanf$sscanf(str, "%d", &n);
      • $sprintf$sprintf(str, "%d", n;
  • $strcmp$ 函数的返回值不一定是 $-1$$+1$(与编译器有关)

    • 类似 return strcmp(a.name, b.name) == -1(字典序小的排在前面)的写法是错误的
    • 正确写法:return strcmp(a.name, b.name) < 0

4 排序算法

  • 选择排序

    algorithm-notes-02

  • 插入排序

    algorithm-notes-03

5 进制转换

  • $P$ 进制数 $x$ 转换为十进制数 $y$

    algorithm-notes-04

  • 十进制数 $y$ 转换为 $Q$ 进制数 $z$ (除基取余法)

    int z[40], num = 0;    //数组z存放Q进制数y的每一位,num为位数
    do{
    	z[num++] = y % Q;  //除基取余
    	y /= Q;
    }while(y != 0);        //当商不为0时进行循环
    

    $z$ 数组从高位 $z[num - 1]$ 到低位 $z[0]$ 即为 $Q$ 进制 $z$

6 其他

  • 闰年表示:(year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)

  • $ASCII$:小写字母的值比大写字母大 $32$

  • 注释技巧:

    #define LOCAL
    
    #ifdef LOCAL
        cout << endl;
    #endif