1.if分支:
1.简单分支
2.阶梯分支:
if (逻辑表达式1)
{
语句块1;
}
else if (逻辑表达式2)
{
语句块2;
}
else if (逻辑表达式3)
{
语句块3;
}
else
{
语句块4;
}
练习:
1. 从键盘输入一个字符,输出该字符的按字典排列顺序的下一个字符,
例如,输入a,则输出b。如果输入的字符不在26个英语字母中,
则显示输入数据有误,如果输入的字符是z或Z,则输出a或A。
#include <stdio.h>
int main(void)
{
char ch = 0;
ch = getchar();
if ((ch >= 'a' && ch <= 'y') || (ch >= 'A' && ch <= 'Y'))
{
ch = ch + 1;
printf("%c\n",ch);
}
else if (ch == 'z' || ch == 'Z')
{
ch = ch - 25;
printf("%c\n",ch);
}
else
{
printf("输入数据有误\n");
}
return 0;
}
3.嵌套分支:
if (逻辑表达式1)
{
if (逻辑表达式2)
{
语句块1;
}
else
{
语句块2;
}
}
else
{
}
注意:嵌套太深会导致可读性变差,最多嵌套3 - 5层
例子:
#include <stdio.h>
int main(void)
{
int Score = 0;
scanf("%d", &Score);
if (Score >= 60)
{
if (Score >= 70)
{
if (Score >= 80)
{
if (Score >= 90)
{
printf("优秀!\n");
}
else
{
printf("良好!\n");
}
}
else
{
printf("中等!\n");
}
}
else
{
printf("及格!\n");
}
}
else
{
printf("不及格!\n");
}
return 0;
}
2.switch分支
1.基本形式
switch (整形表达式)
{
case 常量1:语句块1;break;
case 常量2:语句块2;break;
case 常量3:语句块3;break;
default:
语句块4;
}
注意:
1.switch后面的表示式类型必须为整形,不能为浮点数类型
2.case后面必须为常量,不允许是变量或表达式
3.switch只与case后面的值比一次,然后顺序向下执行直到break或者switch结束
练习:
1.从终端输入一个成绩,打印成绩的级别 (使用switch实现)
90 - 100打印 优秀
80 - 89打印 良好
70 - 79打印 中等
60 - 69打印 及格
0 - 59打印 不及格
#include <stdio.h>
int main(void)
{
int i = 0;
scanf("%d",&i);
switch (i / 10)
{
case 10:
case 9:printf("优秀!\n");break;
case 8:printf("良好!\n");break;
case 7:printf("中等!\n");break;
case 6:printf("及格!\n");break;
default:
printf("不及格!\n");
}
return 0;
}
2.switch嵌套形式
switch (整形表达式1)
{
case 常量1:switch (整形表达式2)
{
case 常量2:语句块2;break;
case 常量3:语句块3;break;
default:
语句块4;
};break;
default:
语句块5;
}
注意:
1.双层switch中,里层switch结束,如果没有break,外层switch会继续向下执行
3.循环结构:
1.重复执行一段代码时使用循环结构
2.有规律的代码使用循环结构
未知循环次数使用while
已知循环次数使用for
1. while 循环
while (逻辑表达式)
{
语句块;
}
练习:编写代码实现0 - 100的求和,并将和值打印在终端
#include <stdio.h>
int main(void)
{
int sum = 0;
int i = 0;
// 使用 while 循环求和
while (i <= 100)
{
sum += i;
i++; // 每次循环结束后自增1
}
printf("%d\n", sum);
return 0;
}
-------------------------------------------------------
while (1)
{
}
这是一个死循环。
2. do..while 循环
do {
} while (逻辑表达式);
用于人机交互、界面控制
3. for循环
1.基本形式:
for (A; B; C)
{
D;
}
A:for循环前执行一次
B:循环判断条件
D:满足条件执行的循环体内部代码
C:每轮循环执行结束后会执行的代码
穷举法:将所有的情况都使用循环试一遍
练习:鸡兔同笼,共50只,140只脚,打印出鸡兔的个数
#include <stdio.h>
int main(void)
{
int x = 0;
for (x = 0;x <= 50;x++)
{
if (140 == 2 * x + 4 * (50 - x))
{
printf("鸡:%d\n 兔: %d\n", x, 50-x);
}
}
return 0;
}
2.双层for循环使用:
for (A; B; C)
{
for (D; E; F)
{
G;
}
}
外层执行一次,里层执行一遍
练习:利用双层for循环打印 99乘法表
#include <stdio.h>
int main(void)
{
int x = 0;
int y = 0;
for (y = 1; y <= 9; y++)
{
for (x = 1; x <= y; x++)
{
printf("%d*%d=%-2d ", x, y, x * y);
}
printf("\n");
}
return 0;
}