- if分支语句:
- 格式一:
//若表达式为真,则执行语句块;若表达式为假,则不执行语句块。
if(表达式)
{
语句块//语句块只有一行时,可以省略{}
}
- 格式二:
//若表达式为真,则执行语句块1;若表达式为假,则不执行语句块2。
if(表达式)
{
语句块1
}
else
{
语句块2
}
vim编辑器全选对其命令:在命令模式下使用:ggvG=。ggvG:全选,=:对齐。
- 格式三:if的嵌套
if(表达式1)
{
语句块1//表达式1为真,语句块1执行
if(表达式2)
{
语句块2//表达式1和表达式2为真,语句块1和语句块2执行
}
else
{
语句块3//表达式1为真,表达式2为假,语句块1和语句块3执行
}
}
else
{
语句块4//表达式1为假,表达式4执行
}
练习:使用循环嵌套,判断输入的成绩的等级。
#includeint main() { int grades; printf("请输入你的成绩:"); scanf("%d",&grades); if(grades >= 90 && grades <= 100) { puts("优"); } else { if(grades >= 80 && grades < 90) { puts("良"); } else { if(grades >= 60 && grades < 80) { puts("中"); } else { puts("差"); } } } return 0; }
- 格式四:对格式三if语句嵌套的精简。
if(表达式1)
{
语句块1//只有表达式1为真时,语句块1执行
}
else if(表达式2)
{
语句块2//表达式1为假,且表达式2为真时,语句块2执行
}
else
{
语句块3//表达式1和表达式2为假时,语句块3执行
}
练习:elseif语句,判断输入的成绩的等级。
#includeint main() { int grades; printf("请输入一个成绩:"); scanf("%d",&grades); if(grades >= 90 && grades <= 100) { puts("优"); } else if(grades >= 80 && grades < 90) { puts("良"); } else if(grades >= 60 && grades < 80) { puts("中"); } else { puts("差"); } return 0; }
- 多分支结构——switch()语句:
- 格式:
switch(表达式)//表达式的结果只能是常量
{
case 常量表达式1://常量表达式,表达式中不能有变量
语句块1;
break;//语句块1执行后,退出switch case结构。
case 常量表达式2:
语句块2;
break;//若case确实break,则继续执行后面的case
...
case 常量表达式n:
语句块n;
break;
default://表达式的值,不是前面所有的常量表达式时执行
语句块n+1;
break;
}
练习:使用switch语句,判断输入的成绩的等级。
#include(二)循环结构int main() { int grades; printf("请输入一个成绩:"); scanf("%d",&grades); switch(grades / 10) { case 10: case 9: puts("优"); break; case 8: puts("良"); break; case 7: case 6: puts("中"); break; default: puts("差"); break; } return 0; }
- 循环:指在程序实现过程中,有动作是重复的,则可以使用循环结构,复用这部分代码,有条件的循环或退出循环。
- while循环语句:
- 格式:
//先判定表达式的真假,若真执行一次语句块,执行完毕后回到表达式,判定步骤重复执行;若假,跳过语句块的执行,往后继续执行。
while(表达式)
{
语句块
}
练习:使用while循环求输入数的阶乘。
#includeint main() { int n,ret = 1; printf("请输入一个数:"); scanf("%d",&n); while(n) { ret *= n; n--; } printf("ret = %dn",ret); return 0; }
- do-while循环语句:
- 格式:
//先执行一次语句块,再判定表达式,若表达式为真,则再一次执行语句块;若表达式为假,则跳过语句块,继续往后执行。
do
{
语句块
}while(表达式);
- 应用:输入时,输入错误,重新输入。
#includeint main() { int a,flag = 0; printf("请输入一个学号:n"); do { flag = scanf("%d",&a); }while(flag == 1); printf("%dn",a); return 0; }
- for循环:
- 格式:
//执行表达式1,
for(表达式1:表达式2:表达式3)
{
语句块
}
练习:打印图形。
#includeint main() { int n; printf("请输入打印的层数:"); scanf("%d",&n); int row,column; for(row = 0; row < n; row++) { for(column = 0; column < 2*n-1; column++) { if(column == n-row-1 || column == n+row-1) { printf("*"); } else if(row == n-1) { printf("*"); } else { printf(" "); } } printf("n"); } return 0; }
程序运行结果:



