3.分支与循环

📅 2026/7/12 20:54:44 👁️ 阅读次数 📝 编程学习
3.分支与循环

1.关系操作符

关系操作符不宜连用

i<j<k

相当于(i<j)<k,i先和j比较大小,为真返回1,为假返回0,0或1再与k比较。

正确写法为

i<j&&j<k

2.三目操作符

exp1 ? exp2 : exp3

条件操作符的计算逻辑是:如果 exp1 为真, exp2 计算,计算的结果是整个表达式的结果;如果 exp1 为假, exp3 计算,计算的结果是整个表达式的结果。

3.逗号表达式

int a=(a=3,a+3,b=c*3,c+2*a+b)

逗号表达式会从左到右依次计算,但是整个表达式的结果是最后一个表达式的结果

4.逻辑操作符:&& , || , !

• ! :逻辑取反运算符(改变单个表达式的真假)。

• && :逻辑与运算符,就是并且的意思(两侧的表达式都为真,则为真,否则为假)。

• || :逻辑或运算符,就是或者的意思(两侧至少有一个表达式为真,则为真,否则为假)

if((year%4==0 && year%100!=0) || (year%400==0)

判断一个年份是否是闰年的代码。

• 如果左边的表达式满足逻辑运算符的条件,就不再对右边的表达式求值。这种情况称为“短路”

&&:左边为0,右边不执行。

|| :左边为真,右边不执行。

5.switch 语句

switch (expression)

{ case value1: statement

case value2: statement

default: statement }

• switch 后的 expression 必须是整型表达式

• case 后的值,必须是整形常量表达式,字符

•每一个case语句执行完成后,需要加上break,才能跳出switch语句,否则会依次向后执行

6.while循环

输入一个正的整数,逆序打印这个整数的每一位 例如: 输入:1234,输出:4 3 2 1 输入:521,输出:1 2 5

题目解析

1. 要想得到n的最低位,可以使用n%10的运算,得到的余数就是最低位,如:1234%10得到4

2. 要想去掉n的最低位,找出倒数第二位,则使用 n=n/10 操作就可以去掉最低位的,如: n=1234/10得到123,123相较于1234就去掉了最低位,123%10就得到倒数第二位3。

3. 循环1和2两个步骤,在n变成0之前,就能到所有的位。

参考代码:

#include <stdio.h> int main() { int n = 0; scanf("%d", &n); while(n) { printf("%d ", n%10); n /= 10; } return 0; }

7. for循环

for(表达式1; 表达式2; 表达式3)

语句;

1初始化,2判断,3调整

整个循环的过程中,表达式1初始化部分只被执行1次,剩下的就是表达式2、循环语句、表达式3在循环。

8. do-while 循环

do

语句;

while(表达式);

do while 语句中循环体是至少执行一次的,这是 do while 循环比较特殊的地方

9. break和continue语句

• break 的作用是用于永久的终止循环,只要 break 被执行,直接就会跳出循环,继续往后执行。

• continue 的作用是跳过本次循环中 continue 后边的代码,在 for 循环和 while 循环中有 所差异的

9.1 while循环中的continue

continue 可以帮助我们跳过某一次循环 continue 后边的代码,直接 到循环的判断部分,进行下一次循环的判断,如果循环的调整是在 continue 后边的话,可能会造成死循环

9.2 for循环中的continue

for 循环中 continue 的作用是跳过本次循环中 continue 后的代码,直接去到循环的调 整部分。未来当某个条件发生的时候,本次循环无需再执行后续某些操作的时候,就可以使用 continue 来实现

10. 练习

找出100~200之间的素数,并打印在屏幕上。

注:素数又称质数,只能被1和本身整除的数字。

题目解析:

1. 要从100~200之间找出素数,首先得有100~200之间的数,这里可以使用循环解决。

2. 假设要判断i是否为素数,需要拿2~i-1之间的数字去试除i,需要产生2~i-1之间的数字,也可以使用 循环解决。

3. 如果2~i-1之间有数字能整除i,则i不是素数,如果都不能整除,则i是素数。

#include <stdio.h> int main() { int i = 0; //循环产生100~200的数字 for(i=100; i<=200; i++) { //判断i是否为素数 //循环产生2~i-1之间的数字 int j = 0; int flag = 1;//假设i是素数 for(j=2; j<i; j++) { if(i % j == 0) { flag = 0; break; } } if(flag == 1) printf("%d ", i); } return 0; }

11. goto 语句

C语言提供了一种非常特别的语法,就是 goto 语句和跳转标号, goto 语句可以实现在同一个函数内跳转到设置好的标号处

#include <stdio.h> int main() { printf("hehe\n"); goto next; printf("haha\n"); next: printf("跳过了haha的打印\n"); return 0; }

goto 语句如果使用的不当,就会导致在函数内部随意乱跳转,打乱程序的执行流程,所以我们的建 议是能不用尽量不去使用;但是 goto 语句也不是一无是处,在多层循环的代码中,如果想快速跳出 使用 goto 就非常的方便了。

本来 for 循环想提前退出得使用 break ,一个 break 只能跳出一层 for 循环,如果3层循环嵌套 就得使用3个 break 才能跳出循环,所以在这种情况下我们使用 goto 语句就会更加的快捷。