分支和循环(一)

if语句

C语言中,0表示假,非0表示真

#include<stdio.h>

int main()
{
   int i=(3>5);
   printf("%d",i);
   return 0;
   }

输出结果为0,也就是假命题
而若把括号内改成真命题,输出的值一般为1

#include<stdio.h>

int main()
{
   int a=0;//初始化变量是个好习惯
   scanf("%d",&a);//取地址不能忘!!!(我差点又忘了)
     if(0==a%3)
       printf("a为3的倍数");
     else
       printf("a不为3的倍数");
   return 0;
   }
  • 0==a%3这里,0放在左边是为了在漏掉一个等号时系统会自动报错
  • 0==a%3的本质是非零数,也就是真
  • 排版要美观,因为else在确定对应的if时遵从就近原则
  • if和else默认只控制一条语句,除非用大括号括起来就可以控制多条

注意:括号里面不能进行连续运算,容易出问题!!

if(a<b<c)

这段代码的执行顺序是,先a和b比较输出0或1(判断真假)再与c比较
如果此时abc分别为2,1,3
则是先ab比较因为a>b,为假命题,输出值为0
然后0与c比较,0<c,为真命题,输出值为1

逻辑操作符

为避免以上问题,应使用逻辑操作符&&
改成if(a<b && b<c)

  • &&:与
  • ||:或
  • !:逻辑取反运算符,假改真真改假

短路现象:系统从左到右读,若前面的式子已经可以判断整体的真假就不会再读下去

switch语句

#include<stdio.h>

int main()
{
   int a=0;
   scanf("%d",&a);
   switch(a%3)
     case 0:printf("是3的倍数")break;//这里如果没有break,程序会一直下去打印出下面的内容
     case 1:
     case 2:printf("不是3的倍数");
            break;
     default:printf("error")return 0;
   }
     
  • 这里的case算是判断的入口,如果没有break会一直滑下去
  • switch里是一个参数,而且必须为整型
  • case后必须是一个确定的数,也必须为整型
  • default和else功能相近
  • case和default没有顺序要求

while循环

#include<stdio.h>
int main()
{
   while(1)
   printf("hello world");
   return 0;
   }

与if语句不同,while语句可以实现循环
所以以上代码结果就是死循环的打印hello world

#include<stdio.h>
int main()
{
   while(1)
   {
   printf("hello world");
   break;
   }
   return 0;
}

使用break可以跳出该循环,只输出一个hello world
while和if一样只能控制一条语句,需要多条时需要大括号

while循环的逻辑是:
执行完while循环的语句后,若没有break或continue,继续返回while判定处,执行循环的语句;
如果遇到break直接跳出循环;
如果遇到continue,跳过之后的语句回到while处,继续执行循环的语句。
在这里插入图片描述

for循环

for循环格式如下:

for(语句1;语句2;语句3)
  • 语句1用于循环变量初始化
  • 语句2用于确定变量的取值范围
  • 语句3表示对变量的操作
  • 三个语句要用分号分隔开
#include<stdio.h>
int main()
{
   int i=0;
   for(i=1;i<=100;i++)//记住是分号!!
   {
      if(0==i%3)
      printf("%d ",i);//打印1-100内3的倍数
      }
   return 0;
}
  • 同样的,for只能控制一条语句,需要多条语句要加大括号
    与while语句对比:
#include<stdio.h>
int main()
{
   int i=1;//初始化
   while(i<=100)//取值范围
   {
      if(0==i%3)
      printf("%d ",i);
      i++;//对变量的操作
      }
   return 0;
}

do while循环

本质上是先执行后判断,格式为

do
  语句
  while(条件)

for和while语句都是先判断后执行,但是do while不同。它是至少执行一次的。

#include<stdio.h>

int main()
{
   int a=1;
   do
      {
      if(0==a%3)
      printf("%d ",a);
      a++;
      }
   while(a<=100)
   return 0;
 }

同样的do后面的语句需要用大括号括起来

break和continue语句

  • 在switch语句中:break用于终止程序继续往下,防止输出不需要的内容
  • 在while循环中:break用于跳出当前循环,continue用于跳过当前循环continue后面的代码
#include<stdio.h>
 int main()
 {
    int i=1
    while(i<=10)
    {
      printf("%d ",i);
        if(i=5)
          break;
    }//注意需要大括号,不过把上面if两行放到while前面就不用(因为while只控制一条语句)
    return 0;
}

以上代码运行到i=5时跳出循环,只输出1 2 3 4
break放在前面后面都是一样的结果

#include<stdio.h>
 int main()
 {
    int i=1
    while(i<=10)
    {
      if(i=5)
         continue;
      printf("%d ",i);
    }
    return 0;
}

以上结果是打印完1 2 3 4 后陷入死循环

#include<stdio.h>
int main()
{
    int i = 1;
    while (i <= 10)

    {
        printf("%d ", i);
        if (i == 5)
            continue;
        i++;
       
    }
    return 0;
}

以上结果是打印完1 2 3 4 后陷入打印5 的死循环

#include<stdio.h>
int main()
{
    int i = 1;
    while (i <= 10)

    {   
        i++;
        if (i == 5)
            continue;  
        printf("%d ", i);
    }
    return 0;
}

以上结果是打印2 3 4 6 7 8 9 10 11
而continue放在最后面是无法起到任何效果的

  • 在for循环中,break的作用也是跳出循环,而continue的作用就是跳过该循环后面的语句直接回到for的第三个语句,即对变量的调整语句
#include<stdio.h>
int main()
{
   int i=0;
   for(i=1;i<=10;i++)
     {
       if(5==i)
         continue;
       printf("%d ",i);
       }
   return 0;
}

以上结果是1 2 3 4 6 7 8 9 10 ,5被跳过了

对比二者区别,continue在while循环当中是跳过之后语句回到while处,而for循环中是跳过之后语句回到for括号中的第三个语句

goto语句

#include<stdio.h>
int main()
   exit:
   printf("hello world");
   goto exit;
return 0;
}

以上代码的结果是循环打印hello world

  • goto语句像一个传送门,可以传到想去的语句
  • 有时嵌套多层的语句中可以通过goto语句快速返回最外层的语句
  • 但如果使用不当容易造成代码混乱
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值