C语言——入门分支与循环

目录

1.if循环结构

1.1else语句(常常与if搭配)

2.关系操作符

3.短路

总结:

对于&&操作符来讲:有假则输出假

对于||操作符来讲:有真则输出真

4.switch语句

问:想一想,如果switch语句中没有break将会怎么样呢?

5.while与for循环

6.do while语句

7.continue

8.goto语句


1.if循环结构

if 语句的语法形式如下:
if
    ( 表达式 )

表达式成⽴(为真),则语句执⾏,表达式不成⽴(为假),则语句不执⾏
如:
#include<stdio.h>

int main()
{
    int a = 8;
    if (a < 9) {                   //默认情况下,if else后只跟一条语句时,不需要大括号括进
        printf("hehe");        //如果多条语句,则放进大括号   注:为方便理解,最好都放进大括号里!
    }
    return 0;

}

输入8,满足8<9,则输出hehe;

1.1else语句(常常与if搭配)

如果一个数不是奇数,那就是偶数了,如果任意一个整数,我们要清楚的判断是奇数还是偶数怎么表示呢?

这⾥就需要 if...else... 语句了,语法形式如下:
判断一个整数为偶数还是奇数:
#include <stdio.h>
int main()
{
    int num = 0;
    scanf("%d", &num);
    if (num % 2 == 1)
        printf("%d 是奇数\n", num);
    else                                 //不满足奇数则执行else语句输出偶数
        printf("%d 是偶数\n", num);
    return 0;
}

在 if else 语句中, else 可以与另⼀个 if 语句连用,构成多重判断。

如:要求输入一个整数,判断输入的整数是0,还是正数或者负数。请看如下代码:
#include <stdio.h>

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;

}
如有更多要求,可无限嵌套。
如果有多个 if 和 else ,可以记住这样⼀条规则, else 总是跟最接近的 if 匹配。
我们⾸先从下⾯代码开始  
#include <stdio.h>
 int main()
 {
      int a = 0;
      int b = 2;
   if  (a == 1)
      if  (b == 2)
         printf("hehe\n");
      else
         printf("haha\n");
   return 0;
 }

运行代码,输出的结果是:什么都不输出

2.关系操作符

>、<、>=、<=、==、!=(不等于)

通常返回0或1表示真假
&&:并且
||:或者
条件操作符
1.  exp1?exp2::exp3
如果exp1为真,则执行exp2,且exp2的结果为整个表达式的结果,如果exp1为假,则执行exp3,exp3的结果为整个表达式的结果
逻辑操作符:&&,||,!
!:逻辑取反运算符(改变单个表达式的真假,真变假,假变真)
&&:与运算符,并且的意思(两侧为真,则为真,否则为假)
||:或运算符,或者的意思(至少一个表达式为真,则为真,否则为假)
!:
a!a
非0                       真-->0                           假
0                           假-->非0                        真
&&:
aba&&b
非000
000
非0非0非0

||:

aba||b
00非0
非0非0非0
非00非0

3.短路

C语言逻辑运算符还有一个特点,它总是先对左侧的表达式求值,再对右边的表达式求值,这个顺序是保证的。
如果左边的表达式满足逻辑运算符的条件,就不再对右边的表达式求值。这种情况称为“短路”。
if ( day>= 3 && day <= 5)
表达式中&& 的左操作数是 day >= 3 ,右操作数是 day<= 5 ,当左操作数 day >= 3 的结果是0的时候,即使不判断 day<= 5 ,整个表达式的结果也是0。
所以,对于&&操作符来说,左边操作数的结果是0的时候,右边操作数就不再执⾏。

对于 || 操作符是怎么样呢?我们结合前面的代码:
if (day == 12 || day==1 || day == 2)
如果day== 12,则不用再判断day是否等于1或者2,整个表达式的结果也是1。
所以, || 操作符的左操作数的结果不为0时,就无需执行右操作数。

总结:

对于&&操作符来讲:有假则输出假

对于||操作符来讲:有真则输出真

4.switch语句

除了 if 语句外,C语言还提供了 switch 语句来实现分支结构。
switch 语句是一种特殊形式的if...else 结构,用于判断条件有多个结果的情况。它把多重的else if 改成更易用、可读性更好的形式。
如:
switch (expression) {

    case value1: statement
    case value2: statement

    default: statement
}

注意:

  • switch 后的 expression 必须是整型表达式
  • case 后的值,必须是整形常量表达式
  • case 和后边的数字之间必须有空格
  • 每一个 case 语句中的代码执行完成后,需要加上 break ,才能跳出这个switch语句。否则将会执行下一个case,直到执行完

问:想一想,如果switch语句中没有break将会怎么样呢?

输入5,结果出来为“余数是1”,好像与加了break输出是一样的,是否觉得没有问题呢?

那我们接着往下看:

怎么输出了两个。我们从表达式中看,输入4,4/2==0,则运行case 0;输出“整数,余数为0”,因为没有返回语句,所以接着运行case 1;所以输出了两个。

如果switch的表达式中无法表达case()时,就要引用default

switch (expression) {
     case value1: statement                    
     case value2: statement              // 如果不满足case 1,case 2
default: statement                           //则运行default的表达式
}

在 switch 语句中case语句和default语句有要求顺序吗? default 只能放在最后吗?

其实,在 switch 语句中 case 语句和 default 语句是没有顺序要求的,只要你的顺序是满足实际需求的就可以。

但一般情况下是把default语句放在最后处理的(易于对循环的理解)。

5.while与for循环

C语言提供了3种循环语句, while就是其中⼀种,接下来就介绍⼀下 while 语句。
while 语句的语法结构和 if 语句非常相似。
 
if与while
#include <stdio.h>
int main()
{
if(1)
     printf("hehe\n");           //if后边条件满⾜,打印⼀次hehe
     return 0;
}
让我们再来看看while语句

#include <stdio.h>
int main()
{
while(1)
     printf("hehe\n");           //while后边的条件满⾜,死循环的打印hehe
     return 0;
}
他们的区别是while语句是可以实现循环效果的。
for 循环是三种循环中使用最多的,for循环的语法形式如下:
for(表达式1; 表达式2; 表达式3)
语句();
 如果有多个表达式时,要用大括号括起来
表达式1 用于循环变量的初始化
表达式2 用于循环结束条件的判断
表达式3 用于循环变量的调整

6.do while语句

while 和 for 这两种循环都是先判断,条件如果满足就进⼊循环,执行循环语句,如果不满足就跳
出循环;
而do while 循环则是先直接进⼊循环体,执⾏循环语句,然后再执行while 后的判断表达式,表
达式为真,就会进行下⼀次,表达式为假,则不再继续循环。
#include <stdio.h>
int main()
{
     int i = 1;
  do                     //当i的值进入,先执行的printf(“%d”,i),在进行i=i+1,最后在进行i的判断
{
     printf("%d ", i);
     i = i + 1;
}    while(i<=10);

return 0;

7.continue

continue 是继续的意思,在循环中的作用就是跳过本次循环中continue 后边的代码,继续进行
下⼀次循环的判断。
#include <stdio.h>
int main()
{
int i = 1;
     while(i<=10)
{
     if(i == 5)
continue;
                     //当i等于5后,执行continue,直接跳过continue的代码,再次进入循环
                 //因为这里跳过了i = i+1,所以i⼀直为5,程序将会陷⼊和死循环
    printf("%d ", i);
    i = i+1;
}
return 0;
}

8.goto语句

C语言提供了⼀种⾮常特别的语法,就是 goto 语句和跳转标号, goto 语句可以实现在同一个函数内跳转到设置好的标号处。
例如:
#include <stdio.h>
int main()
{
printf("hehe\n");
      goto next:
     printf("haha\n");            //这里本应该打印hehe,但由于goto next
                    
     next:                            //所以直接跳过进行当行语句
     printf("跳过了haha的打印\n");
return 0;
}

注:

对于goto语句一般需要少使用,因为大量的goto语句会使你逻辑混乱


oi!!!点个赞走吧

  • 17
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值