控制语句包括分支语句(选择语句),循环语句和其他语句,今天我们来系统性的学习一下这三种语句。
生活中的所有事情都可以抽象为顺序,选择,循环三种模式,或者是三种模式的结合
一.分支语句:if语句,switch语句
1.if语句
if语句的格式是:(1)单分支情况(即一种选择)
if(条件表达式)
语句
#include <stdio.h>
int main()
{
int a = 3;
int b = 3;
if (a == b)//==是用于比较两个值是否相等的运算符,而=是赋值运算符。
{
printf("a=b");
}
return 0;
}
(2)双分支情况(即两种选择)
if(条件表达式)
语句
else(另一种选择)
语句
int main()
{
int a = 3;
int b = 3;
if (a == b)
{
printf("a等于b");
}
else//这里只有两种情况,一种是a=b,一种是a≠b,上面的if跟的是a
等于b的情况,所以else这里只剩下另外一种情况a不等于b
{
printf("a不等于b");
}
return 0;
}
当a=b时,就会执行if语句,else语句不执行,输出结果为:a等于b
当a≠b时,就执行else语句,if语句不执行,输出结果为:a不等于b
(3)多分支情况
if(条件表达式)
语句
else if(条件表达式)
语句
......(有多少种选择就根据情况加几个else if,每个else if后跟一种选择,如果条件满足就进行这个选择)
else(条件表达式)
语句
#include <stdio.h>
int main()
{
int a = 3;
int b = 4;
if (a < b)
{
printf("a小于b");
}
else if (a > b)
{
printf("a大于b");
}
else
{
printf("a等于b");
}
return 0;
}
2.switch语句
switch语句的格式是:
switch(表达式)
{
case 常量表达式1:
语句1
case 常量表达式2:
语句2
......
case 常量表达式n:
语句n
default:语句n+1
}
#include <stdio.h>
int main()
{
char grade = 'A'; // 成绩等级
switch (grade)
{
case 'A':
printf("优秀\n"); // 打印"优秀",并换行
break; // 结束switch语句
case 'B':
case 'C':
// 由于'B'和'C'共享相同的代码块,这里会打印"良好"
printf("良好\n"); // 打印"良好",并换行
break; // 结束switch语句
case 'D':
printf("及格\n"); // 打印"及格",并换行
break; // 结束switch语句
default:
// 如果grade不是'A'、'B'、'C'或'D',则执行这里
printf("不及格\n"); // 打印"不及格",并换行
break; // 实际上,在这里break是可选的,因为switch语句已经结束
}
return 0; // 程序正常结束
}
在这个程序中,switch语句根据grade变量的值选择执行的代码块。由于grade被初始化为'A',程序将执行与'A'对应的case块,打印"优秀",然后通过break语句跳出switch结构。如果grade是其他值,如'B'或'C',则会执行共享的代码块并打印"良好"。如果grade是'D',则打印"及格"。如果grade不是这四个值中的任何一个,则执行default块,打印"不及格"。
需要注意的是,case后面只能跟整型(int),字符型(char)或枚举型。break用于结束switch语句,如果没有遇到break语句,那么代码就会继续执行下去。
二.循环语句
1.do while语句
do while语句格式为:
do
循环体
while(条件表达式)
#include <stdio.h>
int main()
{
int a = 1;
do
{
printf("%d ", a);
a++;
}
while (a <= 10);//while()为判断循环何时结束,当a>10时循环结束
return 0;
}
上面代码运行效果为在屏幕上打印出1 2 3 4 5 6 7 8 9 10
值得注意的是,do while语句是先执行一次循环,再判断是否结束循环。
2.while语句
while语句的格式为:
while(条件表达式)
循环体
#include <stdio.h>
int main()
{
int a = 1;
while (a <= 10)//判断是否执行循环,当a>10时,循环结束,执行return 0;
{
printf("%d ", a);
a++;
}
return 0;
}
运行结果为在屏幕上打印1 2 3 4 5 6 7 8 9 10
3.for语句
for语句的格式为:
for(表达式1;表达式2;表达式3)
循环体
#include <stdio.h>
int main()
{
int a = 1;
for(a=1;a <= 10;a++)//a=1为给a初始化为1,a<=10为判断循环是否结束的条件,a++为调整部分,用于循环条件的调整
{
printf("%d ", a);
}
return 0;
}
表达式1为初始化部分
表达式2为条件判断部分,判断何时循环终止
表达式3为调整部分,用于循环条件的调整
所以for循环是将循环体所用的控制放在循环顶部统一展示,显得更直观。同时for语句还充分表现了其灵活性。
(1)表达式1可以省略。此时应在for语句之前给循环变量赋初值。若省去表达式1,其后分号;不能省略。
(2)表达式2可以省略,即不判断继续条件,循环无终止进行下去,这时候若要终止循环,则需要在循环体中有跳出循环的控制语句如break语句。
(3)表达式3可以省略,但此时应另设方法让循环变量递进变化,以保证循环能正常结束,如在循环体中加上a++;
(4)表达式1,2,3都可省略或省略其中两个,此时循环仍可进行。
三.其他语句
1.break:用于终止循环,不管之后还有没有循环,有没有满足终止循环的条件,都直接运行return 0;。或用于退出switch语句,防止继续执行下一个case代码块。
2.continue:用于跳过本次循环,当未满足终止循环条件时,执行下一次循环。与break形成鲜明对比
3.go to:go to 语句是一种无条件跳转语句,它允许程序直接跳转到程序中标记的某个位置继续执行。goto 语句可以用于跳出多层嵌套的循环或条件语句,但通常更好的做法是使用循环控制语句(如 break)和函数返回(return)来实现这一目标。
4.return:return
语句用于从函数返回一个值给调用者,并结束函数的执行。return
语句可以出现在任何类型的函数中,包括返回值为void
的函数(在这种情况下,return
语句不返回任何值,只是简单地结束函数的执行)。