如何运用if、switch、while、for、break、continue和goto等控制结构实现复杂逻辑流程?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1455个文字,预计阅读时间需要6分钟。
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 (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分钟。
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 (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

