【无标题】C语言学习笔记5--循环结构和选择结构

5.1 运算符和运算符

5.1.1逻辑运算发

运算符 说明 结核性 举例
&& 与运算,双目,对应数学中的“且” 左结合 1&&0、(9>3)&&(b>a
与运算,双目,对应数学中的“且” 左结合 1
! 非运算,单目,对应数学中的“非” 右结合 !a、!(2<5)

举例

#include 
int main(){
    int a = 0, b = 10, c = -6;
    int result_1 = a&&b, result_2 = c||0;
    printf("%d, %d\n", result_1, !c);
    printf("%d, %d\n", 9&&0, result_2);
    printf("%d, %d\n", b||100, 0&&0);
    return 0;
}
运行结果:
0, 0
0, 1
1, 0

5.1.2 关系运算符

关系运算符在使用时,它的的两边都会有一个表达式,比如变量、数值、加减乘除运算等,关系运算符的作用就是判明这两个表达式的大小关系。注意,是判明大小关系,不是其他关系。

关系运算符 含义 数学中的表示
< 小于 <
<= 小于或等于
> 大于 >
>= 大于或等于
== 等于 =
!= 不等于

举例

#include 
int main(){
    char c='k';
    int i=1, j=2, k=3;
    float x=3e+5, y=0.85;
    int result_1 = 'a'+5=k+1 );
    printf( "%d, %d\n", 1

注意

需要提醒的是,==才表示等于,而=表示赋值,大家要注意区分,切勿混淆。

5.1.3 条件运算符

格式

表达式1 ? 表达式2 : 表达式3

结合方向

自右向左

举例

#include 
int main(){
    int a, b;
    printf("Input two numbers:");
    scanf("%d %d", &a, &b);
    printf("max=%d\n", a>b?a:b);
    return 0;
}
运行结果:
Input two numbers:23 45
max=45

5.1.4 优先级

赋值运算符(=) < &&和|| < 关系运算符 < 算术运算符 < 非(!)

举例

#include 
int main(){
    char c='k';
    int i=1,j=2,k=3;
    float x=3e+5,y=0.85;
    printf( "%d,%d\n", !x*!y, !!!x );
    printf( "%d,%d\n", x||i&&j-3, i

5.2 if-else 选择结构

用法

 ### 用法1
if(判断条件){
 语句块1
}else{
 语句块2
}
等效图

【无标题】C语言学习笔记5--循环结构和选择结构_第1张图片

用法2

if(判断条件){
语句块
}

等效图

【无标题】C语言学习笔记5--循环结构和选择结构_第2张图片

用法3:多分支

if(判断条件1){
语句块1
} else if(判断条件2){
语句块2
}else if(判断条件3){
语句块3
}else if(判断条件m){
语句块m
}else{
语句块n
}

用法4 :嵌套
```
	#include 
	int main(){
    int a,b;
    printf("Input two numbers:");
    scanf("%d %d",&a,&b);
    if(a!=b){  //!=表示不等于
        if(a>b) printf("a>b\n");
        else printf("a

5.3 switch-case 选择结构

格式

switch(表达式){
case 整型数值1: 语句 1;
case 整型数值2: 语句 2;

case 整型数值n: 语句 n;
default: 语句 n+1;
}
需要重点强调的是,当和某个整型数值匹配成功后,会执行该分支以及后面所有分支的语句。
break 是C语言中的一个关键字,专门用于跳出 switch 语句。
case 后面必须是一个整数,或者是结果为整数的表达式,但不能包含任何变量。请看下面的例子:

case 10: printf("..."); break;  //正确
case 8+9: printf("..."); break;  //正确
case 'A': printf("..."); break;  //正确,字符和整数可以相互转换
case 'A'+19: printf("..."); break;  //正确,字符和整数可以相互转换
case 9.5: printf("..."); break;  //错误,不能为小数
case a: printf("..."); break;    //错误,不能包含变量
case a+10: printf("..."); break;  //错误,不能包含变量

default 不是必须的。当没有 default 时,如果所有 case 都匹配失败,那么就什么都不执行

5.4 while循环结构

while循环

格式

	while(表达式){
语句块

}
我们通常将“表达式”称为循环条件,把“语句块”称为循环体,整个循环的过程就是不停判断循环条件、并执行循环体代码的过程。

举例

#include 
int main(){
    int i=1, sum=0;
    while(i<=100){
        sum+=i;
        i++;
    }
    printf("%d\n",sum);
    return 0;
}

do-while

格式

do{
语句块
}while(表达式);

举例

#include 
int main(){
    int i=1, sum=0;
    do{
        sum+=i;
        i++;
    }while(i<=100);
    printf("%d\n", sum);
    return 0;
}

for 循环

格式

for(表达式1; 表达式2; 表达式3){
语句块
}

等效图

【无标题】C语言学习笔记5--循环结构和选择结构_第3张图片

举例

#include 
int main(){
    int i, sum=0;
    for(i=1; i<=100; i++){
        sum+=i;
    }
    printf("%d\n",sum);
    return 0;
}

5.6 循环嵌套和跳出

break

举例

#include 
int main(){
    int i=1, j;
    while(1){  // 外层循环
        j=1;
        while(1){  // 内层循环
            printf("%-4d", i*j);
            j++;
            if(j>4) break;  //跳出内层循环
        }
        printf("\n");
        i++;
        if(i>4) break;  // 跳出外层循环
    }

    return 0;
}
运行结果:
1   2   3   4
2   4   6   8
3   6   9   12
4   8   12  16

continue

举例

#include 
int main(){
    char c = 0;
    while(c!='\n'){  //回车键结束循环
        c=getchar();
        if(c=='4' || c=='5'){  //按下的是数字键4或5
            continue;  //跳过当次循环,进入下次循环
        }
        putchar(c);
    }
    return 0;
}
运行结果:
0123456789↙
01236789

嵌套

举例

#include 
int main()
{
    int i, j;
    for(i=1; i<=4; i++){  //外层for循环
        for(j=1; j<=4; j++){  //内层for循环
            printf("%-4d", i*j);
        }
        printf("\n");
    }
    return 0;
}
运行结果:
1   2   3   4
2   4   6   8
3   6   9   12
4   8   12  16

5.7 总结

最后还要注意 break 和 continue 关键字用于循环结构时的区别:
break 用来跳出所有循环,循环语句不再有执行的机会;
continue 用来结束本次循环,直接跳到下一次循环,如果循环条件成立,还会继续循环。

你可能感兴趣的:(#,C语言,c语言,学习,笔记,嵌入式)