C语言:分支与循环语句

一丶什么是语句

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 <stdio.h>
//代码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            //else与最近的上面那个if相匹配       
	{
		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 && age < 80)
	{
		printf("老年\n");
	}
	else
	{
		printf("老寿星\n");
	}

}

在上面的代码中,if括号里的语句如果是成立的话即可执行代码,否者不执行或者进入下个语句。表达式的结果为0的话就表示假,非0的话就表示真。同时如果要实现多个语句的执行的话,就需要在if语句后跟代码段。即如下情况

if(表达式1)
{
    多条语句;
}
else
{
    多条语句;
}
return 0;

注:用{}隔开即可

在书写if语句时,我们需要注意的是注意书写格式和规范性,规范的书写习惯能让我们更好的阅读语句,在发生bug时也能更好的检查错误。

3.练习

(1)判断一个数是否为奇数

(2)输出1-100之间的奇数

参考答案如下:

#include<stdio.h>
int 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的时候整个循环就结束,不再执行。

#include <stdio.h>
int 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 调整部分 ,用于循环条件的调整。

示例如下:

#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; }

(2)break和continue语句在for语句中与while语句中大同小异,具体用法和作用参考上面的while部分。

//代码1
#include <stdio.h>
int main()
{
 int i = 0;
 for(i=1; i<=10; i++)
 {
 if(i == 5)
 break;
 printf("%d ",i);
 }
 return 0; }
//代码2
#include <stdio.h>
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("%d\n", 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("找到了,下标是%d\n", mid);
 else
 printf("找不到\n");
}

四丶后语

分支结构和循环结构是我们平时不可避免的2种方式,因此必须得熟练熟练再熟练,只有熟练掌握了这2种结构才能在后面的学习中不断进步。

最后,谢谢大家的观看!!

 

评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值