所有语言的结构总共有三种,分别是顺序结构、选择结构和循环结构,C语言也不例外。

一、顺序结构

  • 所谓顺序结构就是按照语句的书写顺序,一步一步运行。
//例题:#include <stdio.h>#include <stdlib.h>int main(){int a = 0;int b = 2;printf("%d\n", a + b);system("pause");return 0;}

二、选择结构(分支语句)

人生中,我们会面临很多种选择,不同的选择就会造成不同的结果。而在C语言中就可以用分支语句将这些选择与结果表达出来。

/*例如,如果我们选择好好学习,结果就是找到份好工作。
如果选择不好好学习,结果就是每天乞讨。
*/
#include <stdio.h>
#include <stdlib.h>int main()
{int a = 0;printf("你会选择好好学习吗?(0/1)");scanf("%d", &a);if(1 == a){printf("找到份好工作!\n");}else{printf("每天乞讨!\n");}system("pause");return 0;
}

根据上面的简单演示,我们可以简单了解到分支语句的使用,接下来我们来深入了解。

  • 分支语句主要有两种 if 语句和 switch 语句。

1.if语句

  • if语句的语法结构:

    ①if (表达式)
           语句;
    ②if (表达式)
           语句1;
       else
           语句2;
     ③if (表达式1)
           语句1;
       else if (表达式2)
           语句2;
       else
           语句3;

  • 对于①,如果表达式为真,就执行语句,为假就不执行。

  • 对于②,如果表达式为真,就执行语句1,否则不执行语句1,执行语句2。

  • 对于③,如果表达式1为真,就执行语句1;如果表达式1为假就看表达式2,如果表达式2为真,就执行语句2,如果表达式2也为假,就执行表达式3。

  • 在C语言中0表示假,非0表示真。

  • 当语句是多条语句时要用“{ }”将其结合在一起。

//例题
#include <stdio.h>
#include <stdlib.h>int main()
{int sum = 0;int a = 0;int b = 0;printf("请输入a的值(1~3):\n");scanf("%d", &a);if(1 == a){b = 2;sum = a + b;//sum = 1 + 2 =3printf("sum = %d\n", sum);}else if(2 == a){b = 10;sum = a + b;//sum = 2 + 10 = 12printf("sum = %d\n", sum);}else{b = 12;sum = a + b;//sum = 3 + 12 = 15printf("sum = %d\n", sum);}system("pause");return 0;
}

2.switch语句

  • switch语句常常用于多个分支的情况(有很多种选择的时候)。

  • 相当于多个if… else if…else if…的语句。

  • switch语句的语法结构:
    switch (整型表达式)
    {
          case 整型常量表达式:
                     语句;
    }

  • 实际上单独的switch语句是无法实现分支的作用的,在switch语句中实现分支的是关键字break,故我们要搭配break关键字。

  • 若我们输入的选择所有case的语句项中都没有。则需要用default子句来执行,所有在case中找不到的值,都可以通过执行default后面的语句来使程序不会报错和崩溃。每个switch语句中只有一条的default子句。

//例题
#include <stdio.h>
#include <stdlib.h>int main()
{int day = 0;scanf("%d", &day);switch(day){case 1: printf("星期一\n");break;case 2: printf("星期二\n");break;case 3: printf("星期三\n");break;case 4: printf("星期四\n");break;case 5: printf("星期五\n");break;case 6: printf("星期六\n");break;case 7: printf("星期日\n");break;default://当day不是1~7的值时执行default后面的语句。printf("输入的day不符合规定!");break;}system("pause");return 0;
}
  • 其实不是每个case语句项中都要加break关键字,加break关键字主要为了实现分支,使选择的结果分类。就如同可能我们做出了两三个不同的选择,但其最终的结果是一样的,此时这两三个不同的选择就不需要分支,就不需要break关键字。
//例题:
#include <stdio.h>
#include <stdlib.h>int main()
{int day = 0;scanf("%d", &day);switch(day){case 1:case 2: case 3: case 4:  case 5: printf("工作日\n");break;case 6:case 7: printf("休息日\n");break;default://当day不是1~7的值时执行default后面的语句。printf("输入的day不符合规定!");break;}system("pause");return 0;
}

三、循环结构

  • C语言中循环语句主要有三种分别是 while 语句、do while 语句和 for 语句。

1. while循环语句(先判断再执行)
(1)while循环语句的基本了解

  • while语句的语法结构:
    while (表达式)
    {
            循环语句;
    }
//例题:
#include <stdio.h>
#include <stdlib.h>int main()
{int i = 0;while(i <= 5){printf("我爱敲代码!\n");++i;}system("pause");return 0;
}
  • 上面例题的执行结果就是输出6次“我爱敲代码!”
  • 根据上面的例题可以得到while循环语句的过程是,先判断while(表达式)中的表达式是否为真,若为真就进入循环体,执行循环语句,之后再进行判断表达式,若为真则继续执行循环语句,就这样一直循环下去,但是若表达式为假,就结束循环。

(2)break和continue在while循环中的作用

  • break表示停止循环,即从break处终止接下来的所有循环,直接永久终止循环。
  • continue是停止本次循环,从continue处停止本次循环直接进入下一次循环,本次循环中continue之后的语句不再执行。
#include <stdio.h>
#include <stdlib.h>int main()
{int i = 0;while(i <= 10){ ++i;if(i == 6)break;printf("%d ", i);}system("pause");return 0;
}
  • 该代码执行后的结果为 1 2 3 4 5
  • 当i = 6的时候,执行break,跳出本次循环并且终止以后的所有循环。
#include <stdio.h>
#include <stdlib.h>int main()
{int i = 0;while(i <= 10){ ++i;if(i == 6)continue;printf("%d ", i);}system("pause");return 0;
}
  • 该代码执行后的结果为 1 2 3 4 5 7 8 9 10 11
  • 当i = 6的时候,continue也会跳出本次循环,但会直接执行下一次循环,本次循环中continue之后的代码都不会执行,所以6是没有被输出。

2. do while 循环语句(先执行再判断)
(1)while循环语句的基本了解

  • do while循环的语法结构:
    do
    {
           循环语句;
    }while(表达式);
  • do while 循环与while循环大致一样,唯一区别在于do while循环无论如何都要先执行一次循环语句,然后再判断表达式,若表达式为真,则继续执行循环语句,继续判断,若表达式为假,则结束循环。
//例题:
#include <stdio.h>
#include <stdlib.h>int main()
{int i = 0;do{printf("我爱敲代码!\n");++i;}while(i <= 5);system("pause");return 0;
}
  • 上面的例题执行的结果是输出6次“我爱敲代码!”
  • 先执行一次循环语句输出一次“我爱敲代码!”,再判断 i 是否小于等于5。

(2)do while和while的区别

#include <stdio.h>
#include <stdlib.h>//代码1
int main()
{int i = 1;do{printf("我爱敲代码!\n");++i;}while(i <= 0);system("pause");return 0;
}//代码2
int main()
{int i = 1;while(i <= 0){printf("我爱敲代码!\n");++i;}system("pause");return 0;
}
  • 代码1执行的结果是 输出 1 次“我爱敲代码!”
  • 代码2执行的结果是 输出 0 次“我爱敲代码!”
  • 因为do while 无论如何都要先执行一次循环语句,再判断表达式是否为真,而while是先判断了表达式为假,直接结束了循环,不进入循环中。

3. for 循环语句

  • for循环的语法结构:
    for(表达式1;表达式2;表达式3)
    {
             循环语句;
    }

  • 表达式1是变量进行初始化的部分,表达式2是条件判断部分,表达式3是调整部分。

//例题
#include <stdio.h>
#include <stdlib.h>int main()
{int i = 0;for(i = 0; i <= 5; ++i){printf("我爱敲代码!\n");}system("pause");return 0;
}
  • 上面例题的执行结果依旧是输出6次“我爱敲代码!”。
  • for循环的执行过程是,第一次先执行表达式1将变量进行初始化后,再执行表达式2进行判断,若表达式2为真,则执行循环语句,然后再执行表达式3,之后执行表达式2进行再次判断,若表达式2为真,则执行循环语句,然后再执行表达式3,就此循环下去。若表达式2为假,则结束循环。

(2)break和continue在for循环中的作用

  • break和continue在for循环中的作用和在while循环中的作用大致相同。但还是有一丢丢的区别。
``c
//例题:
#include <stdio.h>
#include <stdlib.h>int main()
{int i = 0;while(i <= 5){printf("我爱敲代码!\n");++i;}system("pause");return 0;
}
  • 上面例题的执行结果就是输出6次“我爱敲代码!”
  • 根据上面的例题可以得到while循环语句的过程是,先判断while(表达式)中的表达式是否为真,若为真就进入循环体,执行循环语句,之后再进行判断表达式,若为真则继续执行循环语句,就这样一直循环下去,但是若表达式为假,就结束循环。

(2)break和continue在for循环中的作用

  • break表示停止循环,即从break处终止接下来的所有循环,直接永久终止循环。
  • continue是停止本次循环,从continue处停止本次循环直接进入下一次循环,本次循环中continue之后的语句不再执行。
  • break在for循环和while循环中没有人和区别,而continue是有区别的,区别如下
#include <stdio.h>
#include <stdlib.h>int main()
{int i = 0;while(i <= 10){ if(i == 6)continue6;printf("%d ", i);++i;}system("pause");return 0;
}
  • 该代码执行的结果为0 1 2 3 4 5 6死循环。
#include <stdio.h>
#include <stdlib.h>int main()
{int i = 0;for(i = 0; i <= 10; ++i){ if(i == 6)continue;printf("%d ", i);}system("pause");return 0;
}
  • 改代码执行的结果为0 1 2 3 4 5 7 8 9 10,并不会造成死循环。
  • 根据上面两个相同的例题和while循环的例题对比发现,其实break和continue在两个循环中的意义是一样的,但是两种循环最终输出的结果不一样是由于for循环和while循环的执行过程不一样造成的。for循环内部的continue会跳到调整部分,这样就不会造成死循环了。
  • for循环的出现是为了解决while循环的初始化部分、判断部分和调整部分比较分散的问题。
  • 使用for循环时,一定不可以在循环体内改变循环变量,防止失去控制。
#include <stdio.h>
#include <stdlib.h>int main()
{int i = 0;int arr[10] = {1,2,3,4,5,6,7,8,9,10};for(i = 0; i <= 12; ++i){ printf("我爱敲代码!");arr[i] = 0;}system("pause");return 0;
}
  • 该代码的结果是死循环。
  • 因为数组总共就10个元素,i最大应该为9,但是我们for循环中i最大为12,此时会使i和arr[
    12]使同一块空间,然后我们在循环内部将arr[12]只成0了,此时i也变成0了,就会造成死循环。
  • 建议for循环的控制变量采用前闭后开的写法。

C语言之顺序结构、选择结构和循环结构(break和continue的不同作用)相关推荐

  1. 周信东c语言实验二实验报告,实验三 循环结构程序设计参考答案

    C语言实操课循环结构答案 实验三 循环结构程序设计(参考答案) 1.设计程序sy3-1.c ,要求打印小学九九乘法表. 算法分析: 根据九九乘法表可知,该表共有9行,第i行有i个表达式,而且表达式中的 ...

  2. python的两种循环结构_python分支和循环结构

    Python Python开发 Python语言 python分支和循环结构 1.分支结构 1.1应用场景 迄今为止,我们写的Python代码都是一条一条语句顺序执行,这种代码结构通常称之为顺序结构. ...

  3. python中循环结构关键字_Python的循环结构,也简单!

    Python语言的循环结构包括两种:遍历循环和无限循环.其中遍历循环由for保留字建立,用来一次访问元素组中的每一个元素:无限循环由while保留字建立,依据是否满足特定条件决定是否结束循环. 1.遍 ...

  4. JAVA键盘录入 分支结构if swtich语句+循环结构for while语句 练习

    JAVA键盘录入 分支结构if swtich语句+循环结构for while语句 练习 今天学习的三个点,键盘录入 分支结构和循环结构.感觉这些还是得通过实操大量题目后才便于理解,前期只听教师讲解和死 ...

  5. Go 语言 for 循环、break、continue 讲解

    Go 语言 for 循环.break.continue 讲解 一.for 循环控制: 1.基本概念: 基本语法: for 循环变量初始化:循环条件:循环变量迭代 { ​ 循环操作(语句) } 简单使用 ...

  6. c语言实现顺序存储程序,线性表的顺序存储结构动态态分配C语言实现

    线性表的顺序存储结构动态态分配C语言实现 线性表的顺序存储结构动态态分配C语言实现 初始化执行期间通过malloc函数为数组申请空间,程序运行期间若空间不够可通过realloc函数在保留原存储值的前提 ...

  7. (1)c语言学习总结之从关键字到循环结构

    一.关键字和标示符 1.关键字:c规定的有特殊含义的单词(也就是系统起的名字),全部是小写,有32个; 由关键字引出数据类型和流程类型 1.分类: (1)数据类型:整型用int标示,字符型用char表 ...

  8. Java基础 选择语句,循环结构数组

    1.选择语句 概述:提前把一些结果对应的处理方式写好,执行的时候根据表达式的结果去和罗列好的结果去匹配,对应执行匹配的结果的 处理方式的语句体 格式解释:swith:选择的意思 表达式:它的结果表示所 ...

  9. 【C语言】第五章 迭代计算与循环结构 题解

    第五章 迭代计算与循环结构 1.代码如下: #include <stdio.h>int main() {double sum = 0, prev = 1, next = 2, temp;f ...

最新文章

  1. 详解携程与去哪儿的“去携之战”
  2. 将STM32的标准库编译成lib
  3. CSS 实现图片横向拖动
  4. ubuntu建站遇到的mysql数据库问题
  5. oracle命令未正确结束_详解Oracle数据库终止正在进行expdp导出数据的正确操作
  6. HDU多校4 - 6989 Didn‘t I Say to Make My Abilities Average in the Next Life?!(单调栈)
  7. centos7下python3与python2共存并且开启py3虚拟环境
  8. minimum在java中的意思_Java Calendar getMinimum()用法及代码示例
  9. comparator比较器用法_汽车三元催化器堵塞咋办?不拆不换,用这招清理干净、动力猛如虎...
  10. pycharm 右键无法显示unittest框架解决右键只有unittest 运行如何取消右键显示进行普通run...
  11. 北京思源培训中心---C#下用P2P技术实现点对点聊天(2)
  12. em算法详细例子及推导_EM算法详解
  13. 《那些年啊,那些事——一个程序员的奋斗史》四
  14. Visual C++ 微软常用运行库合集
  15. 数据恢复软件FinalData
  16. 关于Springboot、SpringCloud以及SpringCloud-Alibaba Nacos依赖问题
  17. Spring-01-HelloWorld
  18. avr单片机c语言计算log,AVR单片机定时器初值计算公式与方法 - 单片机定时器初值计算公式(51单片机和AVR单片机的初值计算三种方法)...
  19. yii mysql gii_Yii2.0开发——使用Gii生成代码的简单实践
  20. 《动手学深度学习》学习之路01-- Kaggle⽐赛:房价预测

热门文章

  1. 使用JODConverter转换文档为PDF
  2. xp cmd命令大全
  3. CTF网络安全比赛简介
  4. 可怕!CPU 竟成了黑客的帮凶
  5. Oracle EBS AP发票类型SQL
  6. JobScheduler API的使用详细
  7. RM电控(更新中……
  8. Hive案例之股票分析
  9. elasticsearch 基础 —— _mget取回多个文档及_bulk批量操作
  10. layer.aler点击按钮回调方法