C语言菜鸟到大牛的蜕变(二)

本文详细解析了C语言中的分支与循环控制结构,包括if、switch、while、for及do...while语句的使用方法与注意事项,通过示例代码帮助读者深入理解。

分支与循环语句


 分支语句:

  •         if
  •         switch  

循环语句 

  • while
  • for
  • do while

go to语句 


C语言中的语句——由一个;隔开的就是一条语句

C语言中的三种结构——顺序结构;选择结构;循环结构


分支语句(选择结构)

如果你加入内卷,可能会取得成功

如果你完全躺平,一定不会有好结果

像这样的就是选择,C语言如何实现:

if语句

语法结构:

  • if(表达式)

             语句;

  • if(表达式)

            语句1;

       else

            语句2;

    //多分支

  • if(表达式)

           语句1;

       else if(表达式)

           语句2;

       else

           语句3;

注:表达式是判断条件真假的,C语言中0表示假,非0表示真


if语句实现 

示例代码:


#include<stdio.h>

int main()

{

int a;

printf("你要加入内卷吗,请选择:>0\1  \n");

scanf("%d\n",&a);

if(a==1)

printf("取得成功\n");

else

print("不会成功\n");

return 0;

}

类比剩下两种语法


如果条件成立,要执行多条语句,应使用{  }放代码块

#include<stdio.h>

int main()

{

if(表达式)

{

语句列表1;

}

else

{

语句列表2;

}

return 0;

}


悬空else

代码见:

#include<stdio.h>

int main()

{

int a = 0,b = 2;

if(a == 1)

     if(b == 2)

          printf("haha\n");

else

     printf("heihei\n");

return 0;

}

这段代码的运行结果是什么都不打印;

程序进行到a==1时,判断为假所以不会再继续下面语句直接到return 0;

那么不懂得铁铁们就要问了,为什么呢,不是还有else呢么;

告诉各位铁铁这个没有明确清楚的代码形式时,else总是与离它最近的if相匹配;

所以大家写代码时要注意自己的代码风格;


swith语句

语法结构

switch(常量表达式

{

语句项;

}

语句项指的是一些case语句如下:

case常量表达式:

        语句;


switch通常用于多分支的情况,因为使用if....else if...else if...else 的形式太麻烦,所以就有了另一种语法形式——switch语句

比如:

输入1,输出星期一

输入2,输出星期二

输入3,输出星期三

输入4,输出星期四

输入5,输出星期五

输入6,输出星期六

输入7,输出星期七


#include<stdio.h>

int main()

{

int day=0;

scanf("%d\n",&day);

switch(day)

{

case 1:

printf("星期一\n");

case 2:

printf("星期二\n");

case 3:

printf("星期三\n");

case 4:

printf("星期四\n");

case 5:

printf("星期五\n");

case 6:

printf("星期六\n");

case 7:

printf("星期七\n");

}

return 0;

}

这种形式的代码如果输入1的话,电脑会把星期从一到七全部打印出来;

从case1进去后就顺着执行剩下的情况不会跳出;

就像如过输入3,电脑会从case3进去然后一直运行到程序最后;

为了解决这种情况就出现了break;

纠正:

#include<stdio.h>

int main()

{

int day=0;

scanf("%d\n",&day);

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;

}

像这样如果把case比作入口break就像是出口直接跳到程序最后;

switch语句中,没有办法直接实现分支,需要搭配break才能实现真正的分支

根据需要灵活使用break

1~5输出工作日,6、7输出周末

#include<stdio.h>

int main()

{

int day=0;

scanf("%d\n",&day);

switch(day)

{

case 1:

case 2:

case 3:

case 4:

case 5:

printf("weekday\n");

break;

case 6:

case 7:

printf("weekend\n");

break;

}

return 0;

}

break语句的实际效果是把语句列表划分为不同的部分

编程的好习惯

default子句

如果表达式的值与所有的case标签的值都不匹配怎么办?

其实也没什么,就是所有的语句都被跳过而已,程序也不会终止,也不会报错,因为这种情况C中并不认为适合错误。

但是,如果你并不想忽略不匹配所有标签的表达式的值时怎么办呢?

可以在语句列表中增加一条default子句——default;写在任何一个case可以出现的位置,当switch表达式的值并不匹配所有的case情况时,这个default子句后面的语句就会执行。所以每个switch语句中只能出现一条default子句。

但是它可以出现在语句列表中的任何位置,而且语句流就会像贯穿一个case标签一样贯穿default子句

在每个switch语句中都放一条default子句是个好习惯,甚至可以在后边再加一个break语句


 循环语句 (循环结构)

while循环

上面已经介绍了if语句

当条件成立的情况下,if语句后的语句执行,否则不执行。但这个语句只会执行一次。

但生活中很多的实际例子是:同一件事情我们需要完成很多次就像学习。

C语言为了解决这个引入了while语句,可以实现循环

语法结构

while(表达式)

           循环语句;

表达式也是判断条件真假的,条件为真则进入循环


while语句执行流程:

基本语法理解

在屏幕打印1~10的数字

#include<stdio.h>

int main()

{

int i = 0;

while(i<=10)

{

printf("%d ",i);

i++;

}

return 0;

}

帮助我们理解while语句的基本语法

while语句中的break与continue


break:

//代码示例

#include<stdio.h>

int main()

{

int i = 0;

while(i<=10)

{

if(i == 5)

   break;

printf("%d ",i);

i++;

}

return 0;

}

屏幕打印:1 2 3 4

注:break在while循环中的作用:

在循环中只要遇到break,就停止后期所有的循环,直接终止循环,while中的break是永久终止循环的。


continue:

//代码示例

#include<stdio.h>

int main()

{

int i = 0;

while(i<=10)

{

if(i == 5)

   continue;

printf("%d ",i);

i++;

}

return 0;

}

这里屏幕输出的是:1 2 3 4 死循环

#include<stdio.h>

int main()

{

int i = 0;

while(i<=10)

{

i++;

if(i == 5)

   continue;

printf("%d ",i);

}

return 0;

}

这里屏幕输出的是:1 2 3 4 6 7 8 9 10

注:continue在while循环中的作用就是:

continue是用于终止本次循环的,也就是本次循环中continue后边的代码不会再执行,而是直接跳转到while语句的判断部分。进行下次循环的入口判断


看一个代码:

#include<stdio.h>

int main()

{

int ch = 0;

while ((ch = getchar()) != EOF)

     putchar(ch);

return 0;

}

getchar()——从键盘上获取字符等价于scanf("%c",&ch);

putchar()——把获取字符打印在屏幕上


for循环

语法结构:

for(表达式1;表达式2;表达式3)

     循环语句;

表达式1——循环变量初始化;

表达式2——条件判断部分,用于判断循环合何时终止;

表达式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;

}

for循环的流程执行图:

对比for循环与while循环,可看出for循环风格更胜一筹,同时for循环的使用次数也是最高的

for循环中的break与continue与在while循环中的意义是一样的

for语句的循环控制变量

建议:

  1. 不可在for循环体内修改循环变量,防止for循环失去控制
  2. 建议for语句的循环控制变量的取值采取前开后闭区间的写法

eg:

int i = 0;

//前开后闭写法

for(i = 0; i<10 ; i++)

{}

//两边都是闭区间

for(i = 0; i <= 9 ; i++)

{}


do...while循环

do语句语法:

do

循环语句;

while(表达式);

do...while循环语句执行流程:

do语句的特点

循环至少执行一次,使用的场景有限,所以不是经常使用

#include<stdio.h>

int main()

{

int i = 10;

do

{

printf("%d\n",i);

}while(i<10);

return 0;

}

break和continue具体分析


       害~隔了挺长时间才更一个原因是在等时机,还有一个原因是期末考试复习紧张,一下这么多内容希望这个系列能对大家有帮助,一起加油!!!

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值