如何运用if、switch、while、for、break、continue和goto等控制结构实现复杂逻辑流程?

2026-04-10 08:201阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1455个文字,预计阅读时间需要6分钟。

如何运用if、switch、while、for、break、continue和goto等控制结构实现复杂逻辑流程?

1. 分支结构 - 1.1 if语句 - 0:作为假(表达式为假) - 语句不执行,非零为真(表达式成立) - 例如:503 返回 1;1320 返回 0 - 1.1.1 else问题 - if...else语句中,else后面不能直接跟括号,int main() { int }


1.分支

1.1 if语句

0为假(表达式为假),语句不执行 非零为真(表达式成立),语句执行

例如:50>3返回1;13>20返回0

1.1.1 else问题

  • if…else语句中,else后面不能直接跟括号

int main() { int a = 0; scanf("%d", &a); if (a > 0) { if (a % 2 == 0) printf("%d是偶数", a); else printf("%d是奇数", a); } else if (a <= 0) printf("%d不是整数", a); return 0; }

其中代码

如何运用if、switch、while、for、break、continue和goto等控制结构实现复杂逻辑流程?

if (a % 2 == 0) printf("%d是偶数", a); else printf("%d是奇数", a);

嵌套在if语句中,构成嵌套的if语句。

  • 悬空else问题

else总是跟最接近的if匹配

注:多个关系运算符不宜连用,常量放在左边不容易错 错误示范:i<e<o

走了if就不走else if 如果有多个if ,就会都走一遍

1.1.2 逻辑操作符

逻辑操作符

代表含义

!(逻辑反运算符)

改变真假

&&(与运算符)

并且

1.1.3 短路

左边的表达式满足逻辑运算符的条件,就不再对右边的表达式求值

1.2 switch(表达式)

用于判断条件有多个结果的情况; 表达式必须是整形表达式;不可以是float或者是double类型 case后的值必须是整形常量表达式

输入任意一个值,计算除3后的余数

int main() { int a = 0; scanf("%d", &a); switch (a%3) { case 0: printf("整数"); break; case 1: printf("余数是1"); break; case 2: printf("余数是2"); break; } return 0; }

注:case和后面的数字之间需要有空格,每个case语句中的代码执行完成后需要加上break,才能跳出循环。 case 是入口,需要用break停下来

1.2.1 switch中的default

int main() { int a = 0; scanf("%d", &a); switch (a) { case 1: case 2: case 3: case 4: case 5: printf("工作日"); case 6: case 7: printf("周末"); default: printf("输入错误"); } return 0; }

default的作用就是switch语句里所有的case都不成立时所要执行的语句。 default是用在switch语句中,提示输入错误

2.循环

2.1 while循环

输入正整数,逆序打印整数的每一位

int main() { int a = 0; scanf("%d", &a); while (a !=0) { printf("%d ", a % 10); a=a / 10; } return 0; }

2.2 for循环

for循环打印1~10

int main() { int a = 0; for (a = 1; a <= 10; a++) { printf("%d ", a); } return 0; }

计算1到100之间的3的倍数的数字之和

int main() { int a = 0; int sum = 0; for (a = 1; a <= 100; a++) { if (a % 3 == 0) sum += a; } printf("sum=%d\n", sum); return 0; }

结果:

3.break和continue语句

break是终止循环,跳出一层循环(只能跳一层) continue是跳过本次循环的代码

注意:vs中调试是F10

4.练习

从100到200之间找到素数

int main() { int a = 0; for (a = 100; a <= 200; a++) { int tmp = 1; int i=0; for (i = 2; i < a; i++) { if (a % i == 0) { tmp = 0; break; } } if (tmp == 1) printf("%d ", a); } return 0; }

5.goto语句

可以实现在同一个函数内跳到设置好的标号处

goto error

本文共计1455个文字,预计阅读时间需要6分钟。

如何运用if、switch、while、for、break、continue和goto等控制结构实现复杂逻辑流程?

1. 分支结构 - 1.1 if语句 - 0:作为假(表达式为假) - 语句不执行,非零为真(表达式成立) - 例如:503 返回 1;1320 返回 0 - 1.1.1 else问题 - if...else语句中,else后面不能直接跟括号,int main() { int }


1.分支

1.1 if语句

0为假(表达式为假),语句不执行 非零为真(表达式成立),语句执行

例如:50>3返回1;13>20返回0

1.1.1 else问题

  • if…else语句中,else后面不能直接跟括号

int main() { int a = 0; scanf("%d", &a); if (a > 0) { if (a % 2 == 0) printf("%d是偶数", a); else printf("%d是奇数", a); } else if (a <= 0) printf("%d不是整数", a); return 0; }

其中代码

如何运用if、switch、while、for、break、continue和goto等控制结构实现复杂逻辑流程?

if (a % 2 == 0) printf("%d是偶数", a); else printf("%d是奇数", a);

嵌套在if语句中,构成嵌套的if语句。

  • 悬空else问题

else总是跟最接近的if匹配

注:多个关系运算符不宜连用,常量放在左边不容易错 错误示范:i<e<o

走了if就不走else if 如果有多个if ,就会都走一遍

1.1.2 逻辑操作符

逻辑操作符

代表含义

!(逻辑反运算符)

改变真假

&&(与运算符)

并且

1.1.3 短路

左边的表达式满足逻辑运算符的条件,就不再对右边的表达式求值

1.2 switch(表达式)

用于判断条件有多个结果的情况; 表达式必须是整形表达式;不可以是float或者是double类型 case后的值必须是整形常量表达式

输入任意一个值,计算除3后的余数

int main() { int a = 0; scanf("%d", &a); switch (a%3) { case 0: printf("整数"); break; case 1: printf("余数是1"); break; case 2: printf("余数是2"); break; } return 0; }

注:case和后面的数字之间需要有空格,每个case语句中的代码执行完成后需要加上break,才能跳出循环。 case 是入口,需要用break停下来

1.2.1 switch中的default

int main() { int a = 0; scanf("%d", &a); switch (a) { case 1: case 2: case 3: case 4: case 5: printf("工作日"); case 6: case 7: printf("周末"); default: printf("输入错误"); } return 0; }

default的作用就是switch语句里所有的case都不成立时所要执行的语句。 default是用在switch语句中,提示输入错误

2.循环

2.1 while循环

输入正整数,逆序打印整数的每一位

int main() { int a = 0; scanf("%d", &a); while (a !=0) { printf("%d ", a % 10); a=a / 10; } return 0; }

2.2 for循环

for循环打印1~10

int main() { int a = 0; for (a = 1; a <= 10; a++) { printf("%d ", a); } return 0; }

计算1到100之间的3的倍数的数字之和

int main() { int a = 0; int sum = 0; for (a = 1; a <= 100; a++) { if (a % 3 == 0) sum += a; } printf("sum=%d\n", sum); return 0; }

结果:

3.break和continue语句

break是终止循环,跳出一层循环(只能跳一层) continue是跳过本次循环的代码

注意:vs中调试是F10

4.练习

从100到200之间找到素数

int main() { int a = 0; for (a = 100; a <= 200; a++) { int tmp = 1; int i=0; for (i = 2; i < a; i++) { if (a % i == 0) { tmp = 0; break; } } if (tmp == 1) printf("%d ", a); } return 0; }

5.goto语句

可以实现在同一个函数内跳到设置好的标号处

goto error