C语言分支与循环

C语言的语句可以分为以下五大类:

1、表达式语句

2、函数调用语句

3、控制语句

4、复合语句

5、空语句

而这篇文章要分享的分支与循环就是控制语句。


c语言是一种结构化的程序设计语言,其中结构是指顺序结构选择结构循环结构三种结构。

其中选择结构又叫分支结构,可以使用ifswitch语句实现,

循环结构则可以利用forwhiledo while语句实现

if语句

if 语句的语法形式如下:
if(表达式)
{
  语句
}
表达式成立(为真),则语句执行,表达式不成立(为假),则语句不执行
而在c语言中,判断规则是, 0为假,非0为真,即表达式的值不为0就执行{}内语句,若为0,则不执行该语句。
例子:输入一个整数,判断是不是偶数
#include<stdio.h>
int main()
{
  int n = 0;
  scanf("%d",&n);
  if (n%2==0)
  {
    printf("%d 是偶数\n",n);
  }
  return 0;
}


else

如果⼀个数不是偶数,那就是奇数了,如果任意⼀个整数,我们要清楚的判断是奇数还是偶数怎么表示呢?
这⾥就需要 if...else... 语句了,语法形式如下:
if()
{
   //语句
}
else
{
  //语句
}

例子:

int main()
{
	int num = 0;
	scanf("%d", &num);
	if (num % 2 == 0)
	{
		printf("%d 是偶数\n", num);
	}
	else
	{
		printf("%d 是奇数\n", num);
	}
	return 0;
}

else if

 if else 语句中, else 可以与另⼀个 if 语句连⽤,构成多重判断。也就是if的嵌套

下面用一个例子说明:

int main()
{
	int num = 0;
	scanf("%d", &num);
	if (num == 0)
		printf("输⼊的数字是0\n");
	else if (num > 0) //这⾥的if 相当于嵌套在els语句中,形成了嵌套结构
		printf("输⼊的数字是正数\n");
	else
		printf("输⼊的数字是负数\n");

	return 0;
}

 从运行结果可以看出:答案有误

原因是:else会与其距离最近的if语句结合,构成if else语句。


swich语句

除了 if 语句外,C语⾔还提供了 switch 语句来实现分⽀结构。switch 语句是⼀种特殊形式if...else 结构,⽤于判断条件有多个结果的情况。它把多重 的 else if 改成更易⽤、可读性更好的形式。

语法格式:

switch(整形表达式) //注意:这里必须是整形表达式,不能是浮点型。
{
      语句项;
}

这里所谓的语句项,指的是case语句。

假如我们要实现一个功能:输入1,打印周一,输入2,打印周二……我们就可以选择switch语句。

int main()
{
  int day = 0;
  scanf("%d", &day);
  switch (day)
  {
  case 1:
  printf("周一");
  case 2:
  printf("周二");
  case 3:
  printf("周三");
  case 4:
  printf("周四");
  case 5:
  printf("周五");
  case 6:
  printf("周六");
  case 7:
  printf("周日");
  }
  return 0;
}

但是当我们运行时,却发现:我们输入1,我们只需要程序打印周一,但是程序却将周一到周日全打印了。这是因为我们输入day的值之后,会与case之后的值由上到下进行匹配,在这个匹配过程中,并不会执行case之后的代码块。若匹配成功,就执行该case后的代码,直到遇到break才退出switch语句

所以,我们可以这样改进:在每个case语句的代码的最后都加上break语句。

int main()
{
  int day = 0;
  scanf("%d", &day);
  switch (day)
  {
  case 1:
  printf("周一");
  break;
  case 2:
  printf("周二");
  break;
  case 3:
  printf("周三");
  break;
  case 4:
  printf("周四");
  break;
  case 5:
  printf("周五");
  break;
  case 6:
  printf("周六");
  break;
  case 7:
  printf("周日");
  break;
  }
  return 0;
}

switch语句中的default
在使⽤ switch 语句的时候,我们经常可能遇到⼀种情况,比如 switch 后的表达式中的值无法匹
配代码中的 case 语句的时候,这时候要不就不做处理,要不就得在 switch 语句中加入default 子句。
例子:
#include <stdio.h>
int main()
{
 int day = 0;
 scanf("%d", &day);
 
 switch(day)
 {
 case 1:
 case 2:
 case 3:
 case 4:
 case 5:
 printf("⼯作⽇\n");
 break;
 case 6:
 case 7:
 printf("休息⽇\n");
 break;
 default:
 printf("输⼊错误\n");
 break;
 }
 return 0;
}
如果 day 的输⼊不是1~7的值,我们输出:“输入错误”时,就可以用default

编程好习惯

  • 最后一个case加上break

  • 每个switch语句都放入一个default

注意:break只能在switch语句和循环语句中使用,且一个break只能跳出当前的循环或者switch语句

while循环

 我们已经了解了if语句:

if(表达式)
{
  语句
}

 当表达式为真时,if后面的语句被执行,反之则不执行。

但是if后的语句只会被执行一次,假如我们想要他执行多次,那我怎么做呢?C语言给我们提供了while循环做到这件事。

//while语法
while(表达式)
{
    循环语句;
}

 如何在屏幕上打印出1~10的数字?

 难道要十个printf来输出吗?显然,我们拥有while后不再需要如此麻烦。

例子:

int main()
{
	int i = 1;
	while (i <= 10)
	{
		printf("%d\n", i);
			i++;
	}
	return 0;
}

for循环

 for 循环是三种循环中使⽤最多的, for 循环的语法形式如下:

for(表达式1; 表达式2; 表达式3)
{
    //循环语句
}
表达式1 用于循环变量的初始化
表达式2 用于循环结束条件的判断
表达式3 用于循环变量的调整

 在屏幕上打印1~10的值

 代码:

int main()
{
int i = 0;
for(i=1; i<=10; i++)
 {
 printf("%d ", i);
 }
 
 return 0;
}

 运行结果:

 比较:

 可以看到for循环while循环相比的初始化部分、条件判断部分和调整部分在循环中都可以集成到一起,看起来更加简洁,使用起来更加方便。


do-while循环

 在循环语句中 do while 语句的使⽤最少,它的语法如下:

do
{
    //循环体语句;
}
while(表达句)
while for 这两种循环都是先判断,条件如果满足就进入循环,执行循环语句,如果不满足就跳
出循环;
do while 循环则是先直接进入循环体,执行循环语句,然后再执行  while 后的判断表达式,表
达式为真,就会进行下⼀次,表达式为假,则不再继续循环。
三个循环执行对比:

 

 在屏幕上打印1~10的值

int main()
{
 int i = 1;
 do
 {
 printf("%d ", i);
 i = i + 1;
 }while(i<=10);
 
 return 0;
}

 执行结果:

do while语句的特点:

无论是否满地条件判断,循环体至少会被执行一次。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值