分支语句和循环语句
*分支语句
- if
- switch
*循环语句 - while
- for
- do while
1.语句
C语句可分为以下五类:
-
表达式语句
-
函数调用语句
-
控制语句
-
复合语句
-
空语句
控制语句用于控制程序的执行流程,以实现程序的各种结构方式,它们由特定的语句定义符组成,C语言有九种控制语句。
可分成以下三类:
*a. 条件判断语句也叫分支语句:*if语句、switch语句;
*b. 循环执行语句:*do while语句、while语句、for语句;
*c. 转向语句:*break语句、goto语句、continue语句、return语句。
2.分支语句
(1).if语句
语法结构:
if(表达式)
语句;
if(表达式)
语句1;
else
语句2;
//多分支
if(表达式1)
语句1;
else if(表达式2)
语句2;
else
语句3;
//注意:如果表达式为真,则执行语句
//0表示假,非0表示真
代码演示
//代码1
int main()
{
int age = 0;
scanf("%d", &age);
if(age<18)
{
printf("未成年\n");
}
}
//代码2
#include <stdio.h>
int main()
{
int age = 0;
scanf("%d", &age);
if(age<18)
{
printf("未成年\n");
}
else
{
printf("成年\n");
}
}
//代码3
#include <stdio.h>
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)
{
printf("老年\n");
}
}
注意:else是和它离的最近的if匹配的。
(2).switch语句
switch语句也是一种分支语句。
常常用于多分支的情况。其表达形式如下
switch(整型表达式)
{
case 常量表达式:
语句;
}
#include <stdio.h>
int main()
{
int day = 0;
scanf("%d",&day);
switch(day)
{
case 1: //day为1,则打印星期一
printf("星期一\n");
break;
case 2: //day为2,则打印星期二
printf("星期二\n");
break;
case 3: //day为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;
}
有时候我们的需求变了:
- 输入1-5,输出的是“weekday”;
- 输入6-7,输出“weekend”
#include <stdio.h>
//switch代码演示
int main()
{
int day = 0;
switch(day)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("weekday\n");
break; //1-5都打印weekday
case 6:
case 7:
printf("weekend\n");
break; //6-7打印weekend
}
return 0;
}
3. 循环语句
- while
- for
- do while
**(1)while循环:同一件事情我们需要完成很多次。
//while 语法结构
while(表达式)
循环语句;
比如在屏幕上打印1-10的数字。
#include <stdio.h>
int main()
{
int i = 1;
while(i<=10)
{
printf("%d ", i);
i = i+1;
}
return 0; }
(2)while语句中的break和continue
break在while循环中的作用:其实在循环中只要遇到break,就停止后期的所有的循环,直接终止循环。所以:while中的break是用于永久终止循环的。
continue在while循环中的作用就是:continue是用于终止本次循环的,也就是本次循环中continue后边的代码不会再执行,而是直接跳转到while语句的判断部分。进行下一次循环的入口判断。
(3)for循环
语法
for(表达式1; 表达式2; 表达式3)
循环语句;
表达式1
表达式1为初始化部分,用于初始化循环变量的。
表达式2
表达式2为条件判断部分,用于判断循环时候终止。
表达式3
表达式3为调整部分,用于循环条件的调整。
例如使用for循环 在屏幕上打印1-10的数字
#include <stdio.h>
int main()
{
int i = 0;
//for(i=1/*初始化*/; i<=10/*判断部分*/; i++/*调整部分*/)
for(i=1; i<=10; i++)
{
printf("%d ", i);
}
return 0;
}
3. do…while()循环
语法
do
循环语句;
while(表达式);
#include <stdio.h>
int main()
{
int i = 1;
do
{
printf("%d\n", i);
i++;
}while(i<10);
return 0;
}
//打印1,2,3,4,5,6,7,8,9
二分查找(中间数)
实现一个二分查找函数:
int bin_search(int arr[], int left, int right, int key) {
int mid = 0;
while(left<=right)
{
mid = (left+right)>>1;
if(arr[mid]>key)
{
right = mid-1;
}
else if(arr[mid] < key)
{
left = mid+1;
}
else
return mid;//找到了,返回下标
}