一丶什么是语句
C 语句可分为以下五类: 1. 表达式语句 2. 函数调用语句 3. 控制语句 4. 复合语句 5. 空语句 本篇介绍的就是控制语句。 控制语句 用于控制程序的执行流程,以实现程序的各种结构方式,它们由特定的语句定义符组成, C 语言有九种控制语句。 可分成以下三类: 1. 条件判断语句也叫分支语句: if 语句、 switch 语句; 2. 循环执行语句: do while 语句、 while 语句、 for 语句; 3. 转向语句: break 语句、 goto 语句、 continue 语句、 return 语句。 我们下面主要涉及到的是分支语句和循环语句。 C语言是结构化的语言常见的语句结构有如下几种:
二丶分支结构(循环语句)
1.选择语句的基本结构图
2.if语句
(1).
if(表达式)
语句1:
(2)
if(表达式)
语句1;
else
语句2;
(3)多分支型
if(表达式)
语句1;
else if(表达式2)
语句2;
else
语句3;
#include//代码1 int main() { int age = 0; scanf("%d", &age); if (age < 18) { printf("未成年n"); } } //代码2 #include int main() { int age = 0; scanf("%d", &age); if (age < 18) { printf("未成年n"); } else //else与最近的上面那个if相匹配 { printf("成年n"); } } //代码3 #include int main() { int age = 0; scanf("%d", &age); if (age < 18) { printf("少年n"); } else if (age >= 18 && age < 30) { printf("青年n"); } else if (age >= 30 && age < 50) { printf("中年n"); } else if (age >= 50 && age < 80) { printf("老年n"); } else { printf("老寿星n"); } }
在上面的代码中,if括号里的语句如果是成立的话即可执行代码,否者不执行或者进入下个语句。表达式的结果为0的话就表示假,非0的话就表示真。同时如果要实现多个语句的执行的话,就需要在if语句后跟代码段。即如下情况
if(表达式1)
{
多条语句;
}
else
{
多条语句;
}
return 0;
注:用{}隔开即可
在书写if语句时,我们需要注意的是注意书写格式和规范性,规范的书写习惯能让我们更好的阅读语句,在发生bug时也能更好的检查错误。
3.练习
(1)判断一个数是否为奇数
(2)输出1-100之间的奇数
参考答案如下:
#includeint main() { int num = 0; scanf("%d", &num); if (num % 2 == 0) printf("该数不是奇数"); else printf("该数是奇数"); return 0; }
int main()
{
int n = 0;
while (n < 101)
{
if (n % 2 == 1)
printf("%d ", n);
n++;
}
return 0;
}
4.switch语句
(1)switch常用于多分支情形下,在分支太多的情况下,if语句就显得冗杂多余了。switch语句语句结构如下
switch语句在特定情况下方便很多,例如下面这个:
输入 1 ,输出星期一 输入 2 ,输出星期二 输入 3 ,输出星期三 输入 4 ,输出星期四 输入 5 ,输出星期五 输入 6 ,输出星期六 输入 7 ,输出星期日 用if语句的话就得一直写else if,而switch则简洁多了int main()
{
int day = 0;
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;
}
return 0; }
break
语句
的实际效果是把语句列表划分为不同的分支部分,在书写中我们习惯的把最后一句case后面跟上一个break,这样可以防止出bug。
那么,如果输入的值和上面所给的值都不一样怎么办。这时我们就需要default语句了,它可以出现在任何一个casa的后面,它将会结束这个进程,但是会执行它前面的子语句。
三丶循环结构
1.if语句和switch语句帮我们解决了很多问题,但是还有很多问题并不能一次就解决,需要重复多次才能完成,因此循环结构也就显得十分重要。循环语句主要有三种:while,for,do while。
2.while语句
(1)while语句的语句结构如下:
具体写做 {while(语句)
循环语句;}
(2)在switch语句中有停止语句,在while语句中同样也是如此。
break在循环语句中,遇到break的话,就会停止后面的所有循环,直至终止循环。
并且是永久终止循环,即直接跳出这个循环,结束进程或者进入下个语句。
continue语句则是为了结束当前语句的循环,即continue语句后面的语句不再执行,而是跳到while语句处,进行下一次的循环判断。
示例如下:
int main()
{
int i = 1;
while(i<=10)
{
if(i == 5)
break;
printf("%d",i);
i++;
}
return 0;
}
上诉代码输出的结果为1234,即在i==5的时候整个循环就结束,不再执行。
#includeint main() { int i = 1; while(i<=10) { if(i == 5) continue; printf("%d ", i); i = i+1; } return 0; }
上诉代码的输出结果也为1234,但是与上面那个不同的是,上面的代码是因为跳出了循环,而这个是因为i++语句在continue语句后面,因此在i==5被continue语句中断那次循环后,i的值一直是5,输出不了后面的值了。
3.for循环
(1)for循环的结构
for(语句1:语句2:语句3)
循环语句;
for后面的三个语句功能如下:
语句1 表达式 1 为 初始化部分 ,用于初始化循环变量的。 语句2 表达式 2 为 条件判断部分 ,用于判断循环时候终止。 语句3 表达式 3 为 调整部分 ,用于循环条件的调整。示例如下:
#includeint main() { int i = 0; //for(i=1; i<=10; i++) for(i=1; i<=10; i++) { printf("%d ", i); } return 0; }
(2)break和continue语句在for语句中与while语句中大同小异,具体用法和作用参考上面的while部分。
//代码1 #includeint main() { int i = 0; for(i=1; i<=10; i++) { if(i == 5) break; printf("%d ",i); } return 0; } //代码2 #include int main() { int i = 0; for(i=1; i<=10; i++) { if(i == 5) continue; printf("%d ",i); } return 0; }
4.do..while语句
(1)do...while的语法
do
循环语句;
while(表达式);
(2)do..while的限制条件是至少得循环一次,因此没有上面2种的使用范围广,我们不是经常使用
示例:
int main()
{
int i = 10;
do
{
printf("%dn", i);
}while(i<10);
return 0; }
(3)do..while语句中的break和continue与while中基本一样,参照上诉就可了
5.如果想快速熟悉分支语句和循环语句的话,可以多做做以下的题目,能加深印象和提高熟练度.
折半查找算法
int main()
{
int arr[] = {1,2,3,4,5,6,7,8,9,10};
int left = 0;
int right = sizeof(arr)/sizeof(arr[0])-1;
int key = 7;
int mid = 0;
while(left<=right)
{
mid = (left+right)/2;
if(arr[mid]>key)
{
right = mid-1;
}
else if(arr[mid] < key)
{
left = mid+1;
}
else
break;
}
if(left <= right)
printf("找到了,下标是%dn", mid);
else
printf("找不到n");
}
四丶后语
分支结构和循环结构是我们平时不可避免的2种方式,因此必须得熟练熟练再熟练,只有熟练掌握了这2种结构才能在后面的学习中不断进步。
最后,谢谢大家的观看!!



