c复习day03

算术运算符

  • 两数相除,如果要得小数,必须有一个是double或者float
  • 除数不能为零
  • %:取模,就是数学中的余数
求个十百千位(int num 1234)
  • 个位:num%10

  • 十位:num/10%10

  • 百位:num/100%10

  • 千位:num/1000%10

自加自减

  • 如果 a++和++a单独使用效果相同
1
2
3
4
int a = 1;
int b;
b = a++;
printf("%d %d",a,n)
  • 以上代码b等于1,a等于2;

  • 结合其他表达式子

  • ++在前先加后使用,++在后先用后加 5

赋值运算符号

  • a += 2 -> a = a+ 2 ;
  • a *= 3 -> a = a * 3;

比较运算符

  • == 判断是否等于
  • != 不等于
  • 在x语言中0为假 1为真

逻辑运算符

  • 逻辑非
    • 非0为真
  • 逻辑&&必须a和b都为真,整个表达式的值才为真
    • 当前面为假的时候,b表达式不执行
  • 逻辑||
    • 只要有一个为真就为真
    • 如果a||b,如果a为真b表达式不执行

优先级

  • 如果是同一个优先级,则看结合方向

逗号运算符

  • 最终的结果是最后一个表达式的结果

类型转换

  • 自动转换

    • 所需要的类型,和给的类型不匹配,需要进行转换
  • 强制转换

    • (int)2.14 :强制转换为int类型
    • (double)2 :转换为double类型
  • 转换的原则:

    • 数据不丢失:一般都是小的转大的

选择结构

  • if
    • if后面不要加分号,分号是空语句,导致后面的代码不属于if结构
    • 在条件中最好常量卸载左边
    • 如果if语句后面只有一条语句,则可以不加 属于if
if else
  • 结果有两种
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
int main(void)
{
int a = 2;
int b = 3;
if (a < b)
{
printf("a < b\n");
}
else
{
printf("a > b\n");

}
return 0;
}
  • 如果条件成立执行if中的循环体语句,条件不成立执行else中的语句
  • 除此之外我们还可以使用多级的if else if else if else
  • 如果结果有多种,但是不确定,而且每个结果是互斥的用多级的if else

三目运算符

  • 求a和b的最大值
  • a>b?a:b
  • 如果a大于b 表达式的值就是a,否则就是b

Switch

1
2
3
4
5
6
7
8
9
10
11
12
switch (a)
{
case 0:
printf("nihao\n");
break;
case 1:
printf("hello");
break;
defaule://默认
printf("def");
break;
}
  • ()中判断条件只能是整数
  • break的作用是用来跳出循环,如果没有break会跳过下一句的判断直接执行

循环结构

while循环

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
int main()
{
int sum = 0;
int i = 1;
//条件为真就执行,条件为假结束循环
//注意:while条件后面没有分号
while (i <= 100)
{
sum += sum;
i++;
}
printf("%d\n",sum);
return 0;
}
  • 当我们需要做多次且重复的事情的时候
  • 上面的程序通过循环来实现了加和的计算
  • while(1) : 死循环

do while循环

1
2
3
do {

} while ();
  • 与while的区别就是,会先进行执行,然后再进行判断
  • 无论条件是否满足都会执行一次

for循环

1
2
3
4
for(int x; x < n; x++)
{
sum += x;
}
  • 括号中的三个表达式都是可有可无
  • 初始化表达式只会执行一次
  • 条件表达式是执行的条件
  • 条件递增是为了修改条件的控制
  • for后面也不可以加分号,否则即使一直在执行空语句
  • 如果for循环中不写条件,默认为真

嵌套循环

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
int main()
{
int i = 0;
int j = 0;
for (i = 0;i < 2;i++)
{
for (j = 0;j < 3;j++)
{
printf("%d %d",i,j);
}
}
return 0;
}
  • 如果我们在循环中再写一个循环就叫做 循环的嵌套
  • 不仅仅是for ,while,if也可以是用嵌套

跳转语句

  • break

    • 跳出switch或者离break最近的一层循环
  • continue

    • 跳过本次循环
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #include <stdio.h>
    int main()
    {
    int i = 0;
    for (i = 0; i < 5; i++)
    {
    if (i == 2)
    {
    //break;
    continue;
    }
    }
    return 0;
    }
  • 可以使用如上代码来比较continue和break的区别

  • goto

    无条件跳转

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    #include <stdio.h>
    int main()
    {
    int i = 0;
    int j;
    for (i = 0; i < 2; i++)
    {
    for ( j = 0; j < 3;j++)
    {
    if (j == 1)
    goto end
    //break;
    printf("i = %d j = %d\n",i,j)
    }
    }
    end:
    return 0;
    }
  • 由于break只能跳出一层的循环,所以我们可以使用goto来跳出多重的循环

循环的注意事项

  • if(10 < a < 15)
  • 实际上我写除这样的代码完全不是正确的:首先无论a是不是大于10,其结果只能是0或者是1,所以最终表达式的值只能1,因为无论是0还是1都注定小于15\
  • 因此我们如果先写出表达区间的代码通常我们采用这种写法:a > 10 && a < 15
  • 如果有两个三目运算符号在同一个表达式,按照从右向左的顺序进行运算
你的支持是我最大的动力!
0%