1.什么是语句?
在C语言中语句可分为以下几种:
- 表达式语句
- 函数调用语句
- 控制语句
- 复合语句
- 空语句
其中分支和循环语句就属于控制语句。在控制语句中又可分为:
- 循环执行语句:do while语句、while语句、for语句;
- 分支语句:if语句、switch语句;
下面首先来讲分支语句,也就是我们常说的选择。
2.分支语句
我们先看一个条件选择:
当我们去逛超市,我们可以选择买好吃的螺蛳粉,也可以选择买薯片。当我们选择不同的路径时,我们得到不同的结果。
2.1 if语句
这里用if语句来实现一个年龄对应问题:
int main()
{
int age = 0;
scanf("%d", &age);
if (age < 18)
{
printf("你是未成年\n");
}
else
{
printf("你已成年\n");
}
return 0;
}
从这个代码可以看出。当我们输入不同的年龄,会输出不同的判断。那么我们输入的数据是如何进入选择中的呢?从if语句的基本语法可以看出,当if(表达式)中的表达式为真时,则语句执行。
注:0表示假,非0表示真
这里我们来看两个练习:
1. 判断一个数是否为奇数
2. 输出1-100之间的奇数
代码如下:
//练习:1、判断一个数是否为奇数;2、输出1-100之间的奇数
int main()
{
int i = 0;
scanf("%d", &i);
if (i % 2 != 0)
{
printf("%d是奇数\n", i);
}
int j = 0;
for (j = 1;j <= 100;i++)
{
if (j % 2 != 0)
{
printf("%d是奇数\n", j);
}
}
return 0;
}
2.2 switch语句
switch可以用来实现多分支的情况。
以下是一段运用了switch语句的分支代码来打印星期值:
int main()
{
int day = 0;
scanf("%d", &day);
switch (day)//整形表达式
{
case 1://常量表达式
printf("星期一\n");//语句
break;
case 2:
printf("星期二\n");
break;
case 3:
printf("星期三\n");
break;
case 4:
printf("星期四\n");
break;
case 5:
printf("星期五\n");
break;
case 6:
printf("星期六\n");
break;
case 7:
printf("星期七\n");
break;
default:
printf("无效的星期值\n");
break;
}
return 0;
}
当我们的要求变化时,我们也可以将不同的分支进行进行合并。
int main()
{
int day = 0;
scanf("%d", &day);
switch(day)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("weekday\n");
break;
case 6:
case 7:
printf("weekend\n");
break;
}
return 0;
}
注:不要忘记每条case语句结束时加上break,以避免输出结果不准确的情况。
3.循环语句
以上是一个循环的例子。当我们一直重复做一件事时,这就是循环。循环语句分为三种:
- while
- for
- do while
3.1 while循环
当我们要实现:
在屏幕上打印1-10的数字
可以用while循环来完成:
int main()
{
int i = 1;
while (i <= 10)
{
printf("%d\n",i);
i++;
}
return 0;
}
3.1.1 while语句中break和continue的用法
下边是一段含有break语句的代码,他的输出结果是什么样的呢?
int main()
{
int i = 1;
while (i <= 10)
{
i++;
if (5 == i)
{
break;
}
printf("%d ", i);
}
return 0;
}
他的输出结果为:
2 3 4
那么当我们把break换成continue时,他又会输出什么结果呢?
int main()
{
int i = 1;
while (i <= 10)
{
i++;
if (5 == i)
{
continue;
}
printf("%d ", i);
}
return 0;
}
当我们换成continue语句,输出结果变成了:
2 3 4 5 6 7 8 9 10 11
由此,我们可以得出结论:
break在while循环中的作用:
在循环中遇到break,则结束循环。所以,他是用来永久的终止循环的。
continue在while循环中的作用:
再循环中遇到continue,则结束当前的循环,重新回到while的判断部分,来进行下一次循环。
3.2 for循环
int main()
{
int i = 1;
while (i<=10)
{
printf("%d ", i);
i++;
}
printf("\n---------------------\n");
for (i = 1;i <= 10;i++)
{
printf("%d ", i);
}
return 0;
}
这是分别用while循环和for循环写成的两个输出1-10数字的程序代码。相比之下,while循环中的条件语句彼此之间相隔较远,而for循环中彼此相隔更近。所以for循环风格更胜一筹,使用频率也更高。
3.1.1 for循环语句中break和continue的用法
与while循环中一样,break和continue都是同样的作用。
3.3 do...while循环
3.3.1 do..while循环的特点
int main()
{
int i = 1;
do
{
printf("%d 哈哈哈\n",i);
i++;
} while (i<=10);
return 0;
}
从do...while语句的语法结构特点来看,无论是否满足循环条件都会先进入循环,当运行到判断语句时,满足的话就输出结果,不满足则退出循环。
所以,do...while循环至少循环一次。