C语言易错复习

数据描述

  • C语言标识符区分大小写,即intInt有区别
  • return 0;通知操作系统程序正常结束(主要用于main函数最后一行)

数据操作

  • %运算,结果取决于模左边(被除数)的符号

    eg:-2%3结果为-2;2%-3结果为2

  • c=b*=a+2; 等价于 c=(b=b*(a+2));
  • 强制类型转换:float x;int i;i=(int)x; i的强制转换取值为整数部分
  • 运算符:sizeof(类型标识符或表达式),计算参数的长度,标识符参数为标识符大小,字符参数为字符串长度

    eg:sizeof(double)值为8;sizeof(“hello”)值为6

  • 输入数据流的分割
    1
    2
    3
    char a;int b;
    scanf("%3c%3d",&a,&b);
    printf("%c,%d\n",a,b);
    在此段代码中(输入值为ab12345),输入时a的取值为ab1,b的取值为234;则输出时a值为'a',b值为234
    输入数据时可用空格、tab键、回车键来分割数据
  • %ld中l表示输入长整型数据;%lf表示double型;%*d表示输入的数据在输入后不赋值给相应的变量

    %.1lf表示double型数据,取值仅保留一位小数
    double型默认为6为小数点(不含小数点位),默认不足的情况下以0补齐,超过的则按四舍五入截断

  • 条件运算符?,形式:表达式1?表达式2:表达式3(如果表达式1非0则计算表达式2,表达式2值为整个条件的值,否则计算表达式3)

    eg:max=(a>b)?a:b计算两数间的最大值

选择结构

  • switchcase后边表达式为整形或字符型

    执行过程:switch与case后的表达式比较,如果相等则从该case开始往下执行;若没有,则从default开始往下执行

    当循环中嵌套switch时,switch中的break跳出的是switch而不是循环

循环结构

  • continue只能用于循环结构

数组

  • 一维数组长度为常量表达式值,二维数组长度为两个常量表达式值的乘积(表达式可为整型常量、符号常量、只含常量的表达式),二维数组先行后列
    二维数值数组初始化形式:
    1
    2
    3
    4
    int a[][4]={{1,2,3,4},{5,6}};	按行初始化
    int a[][4]={{1,2,3,4},{5,6}};
    int a[][4]={{1,2,3,4},{5,6}}; 按存储顺序初始化
    int a[2][4]={1,2,3}; 按存储顺序部分初始化
    二维字符数组初始化形式(字符数组初始化可用字符常量、ASCII码或字符串):
    1
    2
    3
    4
    char str[3][6]={"hello","red"};	使用单个字符初始化
    char str[5]={114,101,100}; 使用ASCII码值初始化
    char str[6]={"hello"}; 使用字符串初始化
    char str[3][6]={"hello","red"}; 使用字符串二维数组初始化
  • 引用数组元素的三种方法:下标法、地址法、指针法
  • 数组名作为函数参数时,在主调函数和被调函数中需分别定义实参数组和形参数组,参数传递时,是将实参数组的起始地址传给形参数组