个人主页:strive-debug
在 C 语言中,分支结构可以通过 `if`、`switch` 语句来实现,循环结构则可以通过 `for`、`while`、`do while` 语句来实现。
`if` 语句
`if` 语句的语法形式如下:
if (表达式)
语句;
如果表达式成立(为真),则执行语句;如果表达式不成立(为假),则不执行语句。在 C 语言中,0 表示假,非0 表示真。因此,如果表达式的结果是0,则语句不执行;如果表达式的结果不是0,则语句执行。
代码演示:
#include <stdio.h>
int main()
{
int num = 0;
scanf("%d", &num);
if(num % 2 == 1)
printf("%d 是奇数\n", num);
return 0;
}
如果一个数不是奇数,那就是偶数了。为了清楚地判断一个整数是奇数还是偶数,可以使用 `if...else...` 语句。语法形式如下:
if (表达式)
语句1;
else
语句2;
例子
输入一个整数,判断是否为奇数,如果是奇数打印“是奇数”,否则打印“偶数”。
#include <stdio.h>
int main()
{
int num = 0;
scanf("%d", &num);
if(num % 2 == 1)
printf("%d 是奇数
", num);
else
printf("%d 是偶数
", num);
return 0;
}
分支中包含多条语句
默认情况下,`if` 和 `else` 语句中只控制一条语句。例如:
#include <stdio.h>
int main()
{
int age = 0;
scanf("%d", &age);
if(age >= 80)
{
printf("该入土了
");
printf("可以等着了
");
}
else
{
printf("你还有时间
");
}
return 0;
}
嵌套 `if`
在 `if...else` 语句中,`else` 可以与另一个 `if` 语句连用,构成多重判断。例如:输入一个整数,判断输入的整数是0,正数还是负数。
#include <stdio.h>
int main()
{
int num = 0;
scanf("%d", &num);
if(num == 0)
printf("输入的数字是0
");
else if(num > 0) // 这里的 if 相当于嵌套在 else 语句中,形成了嵌套结构
printf("输入的数字是正数
");
else
printf("输入的数字是负数
");
return 0;
}
有了嵌套 `if` 语句,就可以完成更多复杂逻辑的判断。
悬空 `else` 问题
如果有多个 `if` 和 `else`,记住这样一条规则:`else` 总是跟最接近的 `if` 匹配。例如:
#include <stdio.h>
int main()
{
int num = 0;
scanf("%d", &num);
if(num == 0)
printf("输入的数字是0
");
else if(num > 0) // 这里的 if 相当于嵌套在 else 语句中,形成了嵌套结构
printf("输入的数字是正数
");
else
printf("输入的数字是负数
");
return 0;
}
通过适当的大括号,可以让代码的逻辑更加清晰,提高可读性。
`switch` 语句
`switch` 语句根据表达式的值使程序跳转到不同的代码段去执行。其语法形式如下:
switch (表达式)
{
case 常量1:
语句1;
break;
case 常量2:
语句2;
break;
// ...
default:
语句n;
break;
}
输入任意一个整数值,计算除3之后的余数
使用 `if` 语句完成:
#include <stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
if(n % 3 == 0)
printf("整除,余数为0
");
else if(n % 3 == 1)
printf("余数是1
");
else
printf("余数是2
");
return 0;
}
使用 `switch` 语句改写:
#include <stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
switch(n % 3)
{
case 0:
printf("整除,余数为0
");
break;
case 1:
printf("余数是1
");
break;
case 2:
printf("余数是2
");
break;
}
return 0;
}
注意事项:
1. `case` 和后边的数字之间必须有空格。
2. 每一个 `case` 语句中的代码执行完成后,需要加上 `break`,才能跳出这个 `switch` 语句。