C语言 顺序、分支和循环

顺序结构

即语句从上往下依次执行,编译器默认的读取顺序就是顺序结构,从第一条到最后一条一个接着一个完成。

分支结构

在生活中,往往会遇到选择的问题,我们需要凭借选择去完成去实现我们想要的效果,这时,我们会用到分支结构。

分支结构如下图

c语言中也有可以实现上图功能的语句

if语句

if语句多用在只判断一个条件的时候,如果符合条件,那么执行一个效果

在c语言中,0表示假,非0表示真,if()括号中的条件语句若是非0,则if后跟着的语句执行,若是0,则不执行

例如,如果a能够被2整除,那么打印a,代码如下

if(a%2==0)
printf("%d",a)

if else语句

在选择有两种情况时,会用到if-else语句

例如,判断一个数是奇数还是偶数,如果这个数不是奇数,那么他必定是偶数,只有这两种情况,这时,可以用if-else语句,代码如下

#include <stdio.h>
int main()
 {
    int a = 0;
    scanf("%d", &a);
     if(num % 2 == 1)
      printf("%d是奇数",a)
     else
      printf("%d是偶数",a)
    return 0;
 }

if else if else 语句(if嵌套)

如果选择时遇到三种及以上的情况时,那么就需要用到if else if else语句

第一个判断用if,中间的用else if (即在else后再加一个if增加分支条数),最后其他情况用else。

例如,在判断一个数的正负性时,就有三种情况需要分别列举,0、正数、负数,那么这时就要 用到else if,代码如下

#include<stdio.h>
int main()
{
    int a=0;
    scanf("%d",&a)
    if(a==0)
        printf("%d是0",a)
    else if(a>0)
        printf("%d是正数",a)
    else
        printf("%d是负数",a)
    return 0;
}

特别注意 :

1.当if或者else if或者else里面要执行的语句大于一条时,要给执行语句加一个{},此时{}里的多条语句被称为复合语句或者叫做程序块。如果不加{}那么第二条往下的语句将不遵从条件语句的判断结果。

2.else会跟最接近它的if组成一个if-else结构,如果程序里第一个if的执行语句里还有if,而想要让第一个if和else组成if-else结构,那么要给第一个if后的语句加一个{}。例代码如下

#include <stdio.h>
 int main()
 {
     int a = 0;
     int b = 2;
     if(a == 1)
     {
         if(b == 2)
         printf("hehe\n");
     }
     else//这里的else与第六行的if组成if-else结构
     {
         printf("haha\n");
     }
         return 0;
 }

switch结构

除了 if 语句外,C语⾔还提供了 switch 语句来实现分⽀结构。 switch 语句是⼀种特殊形式的if...else 结构,⽤于判断条件有多个结果的情况。它把多重 else if 改成更易懂、可读性更好的形式。

switch的基本结构如下

switch (expression) {
 case value1: statement
 case value2: statement
 default: statement
 }

根据expression的不同来执行case语句,如果没有对应的case值,那么执行default语句。

注意:expression必须是整形类型。

case后面的值必须是整形常量表达式。

例如,判断除以3以后的余数时,if语句如下:

#include <stdio.h>
 int main()
 {
     int n = 0;
     scanf("%d", &n);
     if(n%3 == 0)
        printf("整除,余数为0\n");
     else if(n%3 == 1)
        printf("余数是1\n");
     else
        printf("余数是2\n");
     return 0;
}

 用switch结构的代码如下:

#include <stdio.h>
 int main()
 {
     int n = 0;
     scanf("%d", &n);
     switch(n%3)
 {
     case 0:
      printf("整除,余数为0\n");  
      break;
     case 1:
      printf("余数是1\n");       
      break;
     case 2:
      printf("余数是2\n");       
      break;
 }
    return 0;
 }

注意:1. case和后面的整形常量表达式中间一定要有一个空格。

2.在执行完一个case语句后,一定要加一个break语句才能跳出switch,否则会按顺序结构依次往下执行语句。

循环结构 

在生活中,我们常常会做一些重复的事情,有时会感到千篇一律会感到有点厌烦。

在程序的世界里也经常如此,如果每次做这件事的时候就要写重复的代码,会降低代码效率,所以这时就需要用到循环结构。

while循环

while结构的执行图如下:

while循环与if结构语法上有相似点,while结构如下

while(条件语句)
  语句;//如果是复合语句(程序块)需要加上{}

当我们想要打印无限的hehe时就要用到while循环,代码如下:

#include <stdio.h>
int main()
{
     while(1)//只要条件语句为真那么就执行语句
      printf("hehe\n"); 
     return 0;
}

while的实践:打印1-10

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

for循环

使用最多的循环还是for循环,for循环的结构如下:

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

for循环流程图如下:

首先执行表达式 1 初始变量赋值;接下来就是表达式 2 的判断部分, 表达式 2 的结果如果 表达式 2 的结果==0,那么循环结束,如果!=0,则再次执行循环语句,循环语句执行完后,再去执行表 表达式 3,调整循环变量,然后再去表达式 2 的地方判断结果是否为0,决定循环是否继续。

整个循环的过程中,表达式1初始化部分只被执行1次,剩下的就是表达式2、循环语句、表达式3在循环。

实践:用for循环打印1-10

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

do while循环

do
    语句;
while(表达式);

do while循环执行图如下:

do while 循环是先直接进⼊循环体,执行循环语句,然后再执行while后的条件语句, 条件表达式为真,就会进行下⼀次循环,表达式为假,则不再继续循环

实践:打印1-10

#include <stdio.h>
int main()
{
    int i = 1;
    do
      {
        printf("%d ", i);
        i = i + 1;
      }//复合语句(程序块)要加大括号
    while(i<=10);
     return 0;
}

do while语句相比前两个循环语句用的比较少,由于do while至少会执行一次语句,所以一些特别情况或者有特殊需求的情况下do while语句会比较好用。

break、continue语句

在循环语句中,我们会遇到需要提前跳出循环的情况,而c语言为这种情况提供了关键字,breakcontinue。

break的作用是当程序在循环语句内遇到break,则立即跳出循环,执行后面的语句。

continue的作用是当程序在循环语句内遇到continue,跳过continue后面的代码,直接跳到循环的判断部分。 

break实例: 

 #include <stdio.h>
 int main()
 {
     int i = 1;
     while(i<=10)
      {
     if(i == 5)
      break;//当i=5时,循环便立即终止了
      printf("%d ", i);
      i = i+1;
      }
    return 0;
 }

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;
 }

  • 56
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值