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

简介: C语言——入门分支与循环

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                        真

&&:

a b a&&b
非0 0 0
0 0 0
非0 非0 非0

||:

a b a||b
0 0 非0
非0 非0 非0
非0 0 非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!!!点个赞走吧



相关文章
|
1天前
|
C语言
【C语言基础】:分支与循环
【C语言基础】:分支与循环
|
9天前
|
C语言
c语言循环题目
c语言循环题目
|
10天前
|
存储 C语言 索引
C语言数组:从入门到进阶
C语言数组:从入门到进阶
14 0
|
10天前
|
C语言
C语言控制流程详解:分支与循环语句
C语言控制流程详解:分支与循环语句
11 0
|
10天前
|
C语言
C语言结构体教程:从入门到实践(保姆式教学)
C语言结构体教程:从入门到实践(保姆式教学)
|
10天前
|
C语言
C语言中求x的n次方:从入门到实践(保姆式教学)
C语言中求x的n次方:从入门到实践(保姆式教学)
14 0
|
15天前
|
算法 C语言 索引
C语言中的for循环:深入探索与实用技巧
C语言中的for循环:深入探索与实用技巧
12 1
|
15天前
|
C语言
C语言中如何避免循环死循环
C语言中如何避免循环死循环
13 1
|
1天前
|
安全 C语言
【C语言基础】:内存操作函数
【C语言基础】:内存操作函数
|
1天前
|
编译器 C语言 C++
【C语言基础】:字符函数和字符串函数-2
【C语言基础】:字符函数和字符串函数