小白的编程经验(顺序、分支与循环)

    通常我们的代码都是根据顺序从上往下依次执行的,但是如果遇到分支或者循环时,代码的执行顺序将发生改变。这也就是我们常说的代码运行的三种结构:顺序结构、分支结构、循环结构;

在这里插入图片描述

    顺序结构很好理解,就是从上往下依次执行代码,较为复杂的是分支结构和循环结构。

分支结构

1、if 语句

使用格式:
if (表达式)
{
	//当表达式为真,执行括号中的语句
}

根据分支的数量可分为三种:单分支、双分支、多分支。

	// 单分支:
        if(表达式)
        {
            //表达式为真时,执行下面代码

        }

   // 双分支:
        if(表达式)
        {
            //表达式为真时,执行下面代码

        }
        else
        {
            //表达式为假时,执行下面代码
        }
    
   // 多分支:
        if(表达式1)
        {
            //表达式1为真时,执行下面代码
        }
        else if(表达式2)
        {
            //表达式1为假、表达式2为真时,执行下面代码
        }
        else if(表达式3)
        {
            //表达式1、2为假、表达式3为真时,执行下面代码
        }
        ....
        else
        {
            //表达式都为假时,执行下面代码
        }

如上述代码所示,if 语句后面跟着一个表达式。当表达式的值为真时,执行括号内的内容,反之,则不执行。
注意:当执行语句只有一条时,可省略括号,但不建议这样写。

2、switch 语句

使用格式:
//
switch (变量)
{
	case a: 
		//当变量的值等于a时,执行下面语句
		...
		break;
	case b:
		//当变量的值等于b时,执行下面语句
		...
		break;
	...
	...
	default:
		//当前面的条件都不满足时,执行下面的语句
		...
		break;
		
}

关于switch语句有以下要注意的点:

  • 注意变量类型,括号内的变量类型必须是整型(char、short、int 等等类型)。
  • 注意case 语句,case 后的值也是一个整型,并且它们之间的值不能重复,也就是说不能有两个相同的值。
  • 注意 break 语句,如果其中一个case没有 break 语句。执行完它下面的代码后会继续执行下面的 case 中的代码
    例如:
int a = 1;
switch(a)
{
	case 0: printf("0");
	case 1: printf("1");
	case 2: printf("2");
	case 3: printf("3");break
	case 4: printf("4");
}

上述代码输出结果为 123
因为case 1、case 2 没有加 break语句 跳出分支,执行完 case 1中的 printf 语句后继续执行case 2 中的 printf 语句 。在case 2 的最后也没有加 break 语句,所以依旧不退出,继续执行case 3 中的语句,执行到 break 语句后退出 switch 语句。最后输出结果为:123

  • 注意 default 语句,当变量的值,不能与前面case 中的任何一个匹配时, 会跳转到 default 语句中,执行它下面的代码。所以default语句总是最后执行的,确认当前面的语句都不执行时,才会进入default 中。default 语句的位置并不是唯一的,只是习惯放在最后。它也可以放在 switch 中的任意一个位置,并且不影响它的执行顺序(最后执行)。当然 break 语句是必不可少的,不然也可能会出现,运行到其他case 中的情况。

循环结构

循环就是让一段代码反复执行,达到想要的效果,当循环条件不满足的时候退出循环。循环结构主要有三种:while 循环,do-while循环,for循环。

1)while循环

循环主要需要两个部分,
1、循环条件 (满足循环条件时循环,不满足时退出循环)
2、循环体(每次循环执行的代码)

循环体没什么好说的,正常能执行的代码都可以。
循环条件可以是算术表达式、逻辑表达式、关系表达式甚至是变量,只要有返回值的语句都可以作为循环条件。

根据不同的循环条件会形成不同的循环:

死循环

当循环条件不发生改变或者永远成立时,这个循环将永远继续,一般叫做死循环。
举个例子:

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

上述代码定义了一个整型变量 i 并初始化为 0 ,循环条件是 i < 10。但是 i 的值不会随着循环的进行而改变,因此这个循环条件是永远成立的,会不停地输出 0 。

正常循环

既然死循环是因为 i 的值不变,循环条件永远成立导致的,那么只需要使 i 的值随循环发生改变就可以破坏循环条件的恒成立,使得循环不再是一个死循环。
举个例子:

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

输出结果:0123456789
只需要在循环体内使变量 i 的值随着循环的进行而改变,这样就能控制循环的次数,在执行10次后退出循环,而不是死循环。

2)do-while循环

do-while循环在很多方面和while循环简直一模一样,它们的区别只在于:
while循环需要先判断循环条件,当循环条件为真时,才能进入循环,执行循环体。
而do-while循环先会执行一遍循环体,执行完了再判断循环条件是否为真。
换句话说,do-while循环无论如何都会执行一次,而while循环可能一次都不执行。
举个例子

int i = 0;
do
{
	printf("%d\n",i);
	i++}while(i == 0)

执行结果为 0
do-while语句先执行第一次循环体,输出 0 ,并且使 i 的值加一。执行完以后再判断循环条件,i 等于0不成立,退出循环,因此该循环只执行了一次。

3)for 循环

for循环是一种比较灵活且较危险(与其他循环相比)的一种循环。一般用一个变量来引导for循环的运行,这个变量叫做循环变量。

使用格式
 for([1];[2];[3])
{
      [4];
 }    

[1]:给循环变量赋初值,C99标准才可以在此处定义循环变量
[2]:判断循环条件,一般判断循环变量是否到达边界
[4]:如果2的结果为真,则执行此处代码,也叫循环体
[3]:改变循环变量,一般对循环变量进行自增自减(i++\i–)

循环的一般顺序是: [1]、[2]、[4]、[3]、[2]、[4]、[3]、[2]…

举个例子:

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

输出结果:0123456789
在for循环中定义了一个整型变量 i 并初始化为0,当i < 10时循环执行printf语句,打印 i 的值,在每次循环结束后执行 i++,改变循环变量的值。其实 for 循环和 while 循环是可以相互转换的,这个for循环就等价于上面 while 循环的例子,只是 for 循环将循环变量、循环条件、循环变量的改变都放在了一起。

注意:for循环中的循环变量、循环条件、循环变量的改变都是可以省略的。

你可以写成下面的形式:

//将循环变量定义在外面
 int i=0
 for(;i<10;i++)
{
      printf("%d",i);
 }    

//将循环变量的改变放在循环体里,这种形式其实就等同于while循环
 int i=0
 for(;i<10;)
{
      printf("%d",i);
      i++;
 }   

//也将循环条件省略,相当于 循环条件为 1,等同于死循环
 for(int i=0;;i++)
{
      printf("%d",i);
 }
    
//甚至你可以什么都不加,等同于死循环
for(;;)
{
	printf("1");
}

正是因为for循环的写法多样,所以说它是一种比较灵活且较危险(与其他循环相比)的一种循环。

4)(建议)使用场景

当循环次数已知,建议使用 for 循环;如:求1到100的和。
当循环条件已知,循环次数未知,建议使用 while循环;如:求一个数的位数。
当循环语句必须执行一次的时候,建议使用do-while循环;如:输入密码。


结语

希望这篇文章对你有所帮助。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值