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

本文详细介绍了C语言中的运算符(逻辑、关系、条件),以及if-else、switch-case、while、do-while和for循环结构,包括它们的用法、示例和break/continue关键字在循环中的应用。
摘要由CSDN通过智能技术生成

5.1 运算符和运算符

5.1.1逻辑运算发

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

举例

#include <stdio.h>
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 <stdio.h>
int main(){
    char c='k';
    int i=1, j=2, k=3;
    float x=3e+5, y=0.85;
    int result_1 = 'a'+5<c, result_2 = x-5.25<=x+y;
    printf( "%d, %d\n", result_1, -i-2*j>=k+1 );
    printf( "%d, %d\n", 1<j<5, result_2 );
    printf( "%d, %d\n", i+j+k==-2*j, k==j==i+5 );
    return 0;
}
运行结果:
1, 0
1, 1
0, 0

注意

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

5.1.3 条件运算符

格式

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

结合方向

自右向左

举例

#include <stdio.h>
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 <stdio.h>
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<j&&x<y );
    printf( "%d,%d\n", i==5&&c&&(j=8), x+y||i+j+k );
    return 0;
}
运行结果:
0,0
1,0
0,1

5.2 if-else 选择结构

用法

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

在这里插入图片描述

用法2

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

等效图

在这里插入图片描述

用法3:多分支

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

用法4 :嵌套
```
	#include <stdio.h>
	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<b\n");
    }else{
        printf("a=b\n");
    }
    return 0;
	}
运行结果:
Input two numbers:12 68
a<b

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 <stdio.h>
int main(){
    int i=1, sum=0;
    while(i<=100){
        sum+=i;
        i++;
    }
    printf("%d\n",sum);
    return 0;
}

do-while

格式

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

举例

#include <stdio.h>
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){
语句块
}

等效图

在这里插入图片描述

举例

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

5.6 循环嵌套和跳出

break

举例

#include <stdio.h>
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 <stdio.h>
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 <stdio.h>
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 用来结束本次循环,直接跳到下一次循环,如果循环条件成立,还会继续循环。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值