分支语句无和循环语句

1.什么是语句
C 语句可分为以下五类:
1. 表达式语句
2. 函数调用语句
3. 控制语句
4. 复合语句
5. 空语句
控制语句 用于控制程序的执行流程,以实现程序的各种结构方式,它们由特定的语句定义符组成,
C 言有九种控制语句。
可分成以下三类:
1. 条件判断语句也叫分支语句: if 语句、 switch 语句;
2. 循环执行语句: do while 语句、 while 语句、 for 语句;
3. 转向语句: break 语句、 goto 语句、 continue 语句、 return 语句。
2.分支语句(选择语句)
 分支语句有两种:if语句  switch语句
<1>if语句语法结构
if(表达式)
{
语句;
}
 代码例子:
#include<stdio.h>
int main()
{
int age = 0;
scanf("%d",&age);
if(age>18)
{
printf("成年\n");
}
return 0;
}

 2.

if(表达式)

{

语句1;

}

else

{

语句2;

}

先判断表达式是否成立,成立进行语句1,不

成立进行语句2.

3.多分支

if(表达式1)

{

语句1;

}

else if(表达式2)

{

语句2;

}

.......

else if(表达式n-1)

{

语句n-1;

}

else

{

语句n

}

 

 

总结:如果表达式的结果为真,则语句执行。

在C语言中如何表示真假?

0表示假,非0表示真。

if语句中,如果要执行多条语句要用一个代码块{}

4.悬空else

代码:

#include<stdio.h>

int main()

{

int a = 0;

int b = 2; 

if(1==a)

     if(2==b)

         printf("hehe\n");

else

      printf("haha\n");

return 0;

}

预期:会输出hehe或haha

运行结果:

 

结果并没有输出hehe或haha
原因分析:首先,这样写代码会让人误以为第一个if与else配对,其实else与第二个if配对。所以,第二个if和else的内容都属于第一个if的内容。
  代码改为:
int main()
{
int a = 0;
int b = 2; 
if(1==a)
     if(2==b)
         printf("hehe\n");
     else
      printf("haha\n");
return 0;
}
但是,改完的代码还是让人看的不是很懂,因该进一步修改
int main()
{
int a = 0;
int b = 2; 
if(1==a)
  {   
if(2==b)
         printf("hehe\n");
     else
      printf("haha\n");
}
return 0;
}
总结: else的匹配else是和它离的最近的if匹配的。
适当的使用{}可以使代码的逻辑更加清楚。
代码风格很重要
3.switch语句:常用于多分支情况,可以嵌套
<1>在switch语句中可以出现:case,break,default.
<2>switch的语句结构
switch( 整型表达式
{
case   整形常量表达式1
语句1;
break;
.........
case  整形常量表达式n :
语句n;
break;
default :
语句n+1;
break;
}
注意: 整型表达式   整形常量表达式都必须为整型。

 

default ,break可以写,也可以不写

如果switch中没有break,代码从哪里进去,后面的代码也会执行

 

 

所以,我们要根据编程要求适当的运用break

代码改为

 

如果星期1到5为weekday,6到7为weekend

代码可以这样写

 

总结:break语句 的实际效果是把语句列表划分为不同的分支部分。

编程好习惯

在最后一个 case 语句的后面加上一条 break语句。

(之所以这么写是可以避免出现在以前的最后一个 case 语句后面忘了添加 break语句)

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

循环语句

while

for

do while

goto语句

<1>while循环

语法结构:

while(表达式)

{

语句;

}

while语句的执行流程

 

while语句中的break和continue

<1>break

break在while循环中的作用:

其实在循环中只要遇到break,就停止后期的所有的循环,直接终止循环。

所以:while中的break是用于永久终止循环的。

<2>continue

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

continue是用于终止本次循环的,也就是本次循环中continue后边的代码不会再执行,

而是直接跳转到while语句的判断部分。进行下一次循环的入口判断

for 循环
语法形式:
for(表达式1;表达式2;表达式3)
{
循环语句;
}
表达式 1
表达式 1 初始化部分 ,用于初始化循环变量的。
表达式 2
表达式 2 条件判断部分 ,用于判断循环时候终止。
表达式 3
表达式 3 调整部分 ,用于循环条件的调整
for循环的执行流程

 

break continue for 循环中用法与在while中相似
for 语句的循环控制变量
建议:
1. 不可在 for 循环体内修改循环变量,防止 for 循环失去控制。
2. 建议 for 语句的循环控制变量的取值采用 前闭后开区间 写法。
一些 for 循环的变种
<1>
for(; ;)
{
printf("11");
}
for的初始化,判断,调整三个部分都可以省略
. 中间的判断部分如果省略,意味着判断恒为真,就构成了死循环
不建议初学时省略,容易导致问
代码例子:
#include<stdio.h>
int main()
{
int i = 0;
int j = 0;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
printf("hehe\n");
}
}
return 0;
}
运行结果:打印9个hehe

 

将两个循环的初始化部分省略

#include<stdio.h>

int main()

{

int i = 0;

int j = 0;

for(;i<3;i++)

{

for(;j<3;j++)

{

printf("hehe\n");

}

}

return 0;

}

预期:打印9个hehe

运行结果:

 

这就是乱省略所造成的后果
<2> 使用多余一个变量控制循环
int x , y ;
    for ( x = 0 , y = 0 ; x < 2 && y < 5 ; ++ x , y ++ )
  {
        printf ( "hehe\n" );
  }
return 0 ;
}
do...while() 循环
语法结果:
do
{
循环语句;
}while(表达式)};
执行流程:

 

do 语句的特点
循环至少执行一次,使用的场景有限,所以不是经常使用。
在while循环,for循环,do  while()循环中break,continue的作用相似
goto 语句
C 语言中提供了可以随意滥用的 goto 语句和标记跳转的标号
从理论上 goto 语句是没有必要的,实践中没有 goto 语句也可以很容易的写出代码。
但是某些场合下 goto 语句还是用得着的,最常见的用法就是终止程序在某些深度嵌套的结构的处理过
程。
例如:一次跳出两层或多层循环。
多层循环这种情况使用 break 是达不到目的的。它只能从最内层循环退出到上一层的循环。
goto语句的格式:
goto+你所命名的名称 ;
你想跳转到哪里就在其前面加上   你所命名的名称:
例子:写一个关机程序
//shutdown windows提供的关机命令
//shutdown -s -t 60
system() - 库函数-执行系统命令
#include<stdio.h>
//关机程序
//shutdown windows提供的关机命令
//shutdown -s -t 60
system() - 库函数-执行系统命令
#include<stdlib.h>
#include<string.h>
int main()
{
        char arr[20] = { 0 };
        system("shutdown -s -t 60");
        again:
    printf("请输入我是猪,否则电脑将一分钟后关机!!!!");
        scanf("%s", arr);
        if (0 == strcmp(arr, "我是猪"))
               //取消关机    strcmp 用来比较字符串是否相等
               system("shutdown -a");
        else
               goto again;
        return 0;
}
  • 7
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值