1.表达式与语句的区别

    > 不含有分号的是表达式> 含有分号的是语句

2.什么是流程控制

    程序代码执行的顺序

3.流程控制的分类

顺序

选择

    > 定义:某些代码可能执行,也可能不执行,有选择的执行某些代码
    >分类:- if· if最简单的用法格式:if (表达式)语句;功能:如果表达式为真,执行语句如果表达式为假,语句不执行· if的范围问题if (表达式)语句A;语句B;解释:if默认只能控制语句A的执行或不执行if无法控制语句B的执行或不执行if (表达式){语句A;语句B;}此时if可以控制语句A和语句B/*由此可见:if默认只能控制一个语句的执行或不执行如果想控制多个语句的执行或不执行,就必须把这些语句用{}括起来*/· if ... else ... 的用法· if ... else if ... else ...的用法格式:if (1)A;else if (2)B;else if (3)C;elseD;
            · C语言对真假的处理非零是真零就是假真用1表示假用0表示
            · if举例 —— 求分数的等级/*时间:2020年2月13日功能:求分数的等级目的:举例*/#include <stdio.h>int main(void){float score;printf("请输入您的考试成绩:");scanf("%f", &score);if (score > 100)printf("这是做梦!\n");else if (score >= 90 && score <= 100)printf("优秀!\n");else if (score >= 80 && score <= 90)printf("良好!\n");else if (score >= 60 && score < 80)printf("不及格!继续努力!\n");elseprintf("输入的分数过低,不要如此自卑!\n");return 0;}/*在Microsoft Visual Studio 2010的过程:-----------------------------------请输入您的考试成绩:88良好!请按任意键继续. . .-----------------------------------*/
            · if的常见问题解析空语句的问题if (3 > 2);等价于if (3 > 2);//这是一个空语句if (表达式1)A;elseB;是正确的if (表达式1);A;elseB;是错误的if (表达式1)A;else if (表达式2)B;else if (表达式3)C;elseD;即便表达式1和2都成立,也只会执行A语句if (表达式1)A;else if (表达式2)B;else if (表达式3)C;这样写语句不会出错,但逻辑上有漏洞if (表达式1)A;else if (表达式2)B;else if (表达式3)C;else (表达式4)  //50行D;这样写是不对的,正确的写法是:要么去掉50行的(表达式4)要么在50行的else后面加ifif (表达式1)A;else if (表达式2)B;else if (表达式3)C;else (表达式4);D;这样写语法不会出错,但逻辑上是错误的else (表达式4);D;等价于else(表达式4);D;
        - switch· 格式:switch (表达式){case 常量表达式1:语句1;break;case 常量表达式2:语句2;break;case 常量表达式... ...:语句... ...;break;default:语句4;break;    }
            ·注意:所有case后面的常量表达式为便于描述我们姑且称之为标签,这些标签都只能是:枚举常量(有些书称之为枚举元素)数值常量字符常量常变量宏名中的一种,注意普通变量,枚举变量是不能作为标签使用的switch后面括号里面的"表达式"允许是任何类型,但在VC++中只允许为int或char类型执行完一个case语句后,流程控制就转移到下一个case字句继续执行。"case"常量表达式只是起语句标点的作用,并不是在该处进行条件判断。在执行switch语句时,根据switch()中表达式的值找到与之匹配的case子句,就从此case子句开始执行下去,不再进行判断switch是选择不是循环,如果在switch中出现了break语句。该语句的功能只是退出switch语句转去执行它下面的语句。在switch中出现continue是错误的,除非switch本身就属于for或while循环的一部分
            · 例子 —— 电梯程序:/*时间:2020年2月14日功能:电梯程序目的:举例*/#include <stdio.h>int main(void){int val;printf("请输入您要进入的楼层:");scanf("%d", &val);switch (val){case 1:printf("1层开!\n");break;case 2:printf("2层开!\n");break;case 3:printf("3层开!\n");break;default:printf("没有盖到这一层!\n");break;}return 0;}/*在Microsoft Visual Studio 2010的过程:-----------------------------------请输入您要进入的楼层:33层开!请按任意键继续. . .-----------------------------------总结:... ...*/

循环

    >定义:某些代码会被重复执行
    >分类:- for· 格式:for (1; 2; 3)语句A;
            · 执行的流程【重点】单个for循环的使用for (1; 2; 3)语句A;执行顺序:______________________________|                            |v                            |1 -> (判断2是否为真) —— (真) ——> 语句A; -> 3—— (假) ——> 结束for循环多个for循环的嵌套使用for (1; 2; 3)   //1行for(1; 2; 3)    //2行A;  //3行B;  //4行整体是两个语句,1行 2行 3行是第一语句,4行是第二语句for (1; 2; 3)for (4; 5; 6){A;B;}整体是一个语句for (7; 8; 9)for (1; 2; 3){A;B;for (4; 5; 6)C;}整体是一个语句· 范围问题
            · 举例:例子 —— 1 + 2 + 3 + ... ... +100/*时间:2020年2月14日功能:1 + 2 + 3 + ... ... +100目的:举例*/#include <stdio.h>int main(void){int val = 0;int i;for (i = 1; i <= 100; ++i){val += i; //等价于 val = val + i;}printf("1 + 2 + 3 + ... ... +100 = %d\n", val);return 0;}/*在Microsoft Visual Studio 2010的过程:-----------------------------------1 + 2 + 3 + ... ... +100 = 5050请按任意键继续. . .-----------------------------------总结:... ...*/
                例子 —— 1 + 1/2 + 1/3 + ... ... + 1/100/*时间:2020年2月14日功能:1 + 1/2 + 1/3 + ... ... + 1/100目的:举例*/#include <stdio.h>int main(void){double val = 0.0;int i;for (i = 1; i <= 100; ++i){val += (1 / (double)(i));   //等价于 val = val + (1 / (double)(i));}printf("1 + 1/2 + 1/3 + ... ... + 1/100 = %lf\n", val);return 0;}/*在Microsoft Visual Studio 2010的过程:-----------------------------------1 + 1/2 + 1/3 + ... ... + 1/100 = 5.187378请按任意键继续. . .-----------------------------------总结:... ...*/
        - while· 执行顺序格式:while (表达式)语句;顺序:先判断表达式是否为真,真就执行语句,语句执行完再判断表达式是否继续为真,直到判断表达式为假,循环结束
            · 与for的相互比较for (1; 2; 3)A;等价于1;while (2){A;3;}while和for可以相互转化,但for的逻辑性更强,更不容易出错,推荐多使用for
            · 例子 —— 从键盘输入一个数字,如果该数字是回文数,则返回yes,否则返回no回文数: 正着写和倒着写都一样,如:121 12321 都是回文数/*时间:2020年2月14日功能:判断回文数目的:举例*/#include <stdio.h>int main(void){int val;int m;int sum = 0;printf("请输入您需要判断的数字:");scanf("%d", &val);m = val;while (m){sum = sum * 10 + (m % 10);m /= 10;}if (sum == val)printf("yes!\n");elseprintf("no!\n");return 0;}/*在Microsoft Visual Studio 2010的过程:-----------------------------------请输入您需要判断的数字:12321yes!请按任意键继续. . .-----------------------------------总结:... ...*/
            · 什么时候使用while,什么时候使用for没法说,用多了自然而然就知道了
        - do ... while· 执行顺序:格式:do{语句;}while (表达式);顺序:先执行语句,再判断表达式是否为真,真执行语句,执行完语句,再判断表达式是否为真,直到判断表达式为假,循环结束· do ... while并不等价于for,当然也不等价于while· do ... while主要用于人机交互
            · 例子 —— 一元二次方程/*时间:2020年2月14日功能:一元二次方程目的:举例*/#include <stdio.h>#include <math.h>int main(void){double a, b, c;double delta;double x1, x2;char ch;do{printf("请输入一元二次方程的三个系数:\n");printf("a = ");scanf("%lf", &a);printf("b = ");scanf("%lf", &b);printf("c = ");scanf("%lf", &c);delta = b * b - 4 * a * c;if (delta > 0){x1 = (-b + sqrt(delta) / (2 * a));x2 = (-b - sqrt(delta) / (2 * a));printf("有两个解;x1 = %f, x2 = %f\n", x1, x2);}else if (0 == delta){x1 = x2 = (-b) / (2*a);printf("有一个解;x1 = x2 = %f\n", x1);}else{printf("无解\n");}printf("您想继续么(Y/N):");scanf(" %c", &ch);//注意%c前必须得加一个空格//原因://    空白符的问题}while('y' == ch || 'Y' == ch);return 0;}/*在Microsoft Visual Studio 2010的过程:-----------------------------------请输入一元二次方程的三个系数:a = 1b = 9c = 5有两个解;x1 = -5.094875, x2 = -12.905125您想继续么(Y/N):n请按任意键继续. . .-----------------------------------总结:... ...*/
        - break和continue· break:break如果用于循环是用来终止循环break如果用于switch,则是用于终止switchbreak不能直接用于if,除非if属于内部的一个句子                例子:for (i = 0; i < 3; ++i){if (3 > 2)break;//break虽然是if内部的语句,//但break终止的确是外部的for循环printf("嘿嘿!\n");//永远不会输出}在多层循环中,break只能终止最里面包裹它的那个循环例子:for (i = 0; i < 3; ++i){for (j = 1; j < 4; ++j)break; //break只能终止距离它最近的循环printf("同志们好!\n");}在多层switch嵌套中,break只能终止距离它最近的switch例子:int x = 1, y = 0, a = 0, b = 0;switch (x){case 1:switch (y)//第二个switch{case 0:a++;break;//终止的是第二个switchcase 1:b++;break;}b = 100;break; //终止的是第一个switchcase 2:a++;b++;break;}printf("%d %d\n", a, b);最终输出结果是: 1 100
            · continue:用于跳过本次循环余下的语句,转去判断是否需要执行下次循环例子:for (1; 2; 3){A;B;continue;//如果执行该语句,则执行完该语句后,会执行语句3,C和D都会被跳过去,C和D不会被执行C;D;}while (表达式){A;B;continue;//如果执行该语句,则执行完该语句后,会执行表达式,C和D都会被跳过去,C和D不会被执行C;D;}

如有不对或者疏漏的地方,请多多指出。谢谢(⁄ ⁄•⁄ω⁄•⁄ ⁄)

6.郝斌C语言笔记——流程控制相关推荐

  1. 10.郝斌C语言笔记——指针

    指针的重要性 表示一些复杂的数据结构;快速的传递数据,减少了内存的耗用;使函数返回一个以上的值;能直接访问硬件;能够方便的处理字符串;是理解面向对象语言中引用的基础.总结:指针是C语言的灵魂. 指针的 ...

  2. 【郝斌 C语言 笔记】自增

    前自增:++ i -- 整体表达式的值是 i 加 1 后的值 后自增:i ++ -- 整体表达式的值是 i 加 1 前的值 最终都使 i 的值加 1. #include<stdio.h>i ...

  3. 12.郝斌C语言笔记——枚举

    什么是枚举 把一件事所有可能的取值一一列举出来 怎样使用枚举 例如:#include <stdio.h>//只定义了一个数据类型,并没有定义变量,//该数据类型的名字是 enum Week ...

  4. Java学习笔记——流程控制

    Java学习笔记--流程控制 Day05 一.用户交互Scanner 1.Scanner对象 我们通过Java工具包java.util.Scanner中的Scanner类来获取用户的输入 基本语法:S ...

  5. c语言程序流程控制(下)

    c语言程序流程控制 嵌套 switch分支结构 语法 例题 switch细节 练习 switch与if语句的比较 循环控制 for循环 练习题 while循环控制 do while 循环 多重循环控制 ...

  6. PHP语言之流程控制 educoder答案

    PHP语言之流程控制 educoder答案 第1关:条件语句 - 学生测评 期末考试结束了,老师需要统计学生的成绩并根据成绩对学生本学期的表现作出一个评价,老师的评价规则是: 90100分:优秀809 ...

  7. 郝斌c语言大纲百度云,C语言学习大纲 郝斌(讲解)

    教你如何快速掌握C语言,郝斌讲解,幽默而且加深了解.... 语言概述: 1.为什么学习C语言 1). C的起源和发展 2).C的特点 优点 代码量小 速度快 功能强大 缺点 危险性高 开发周期长 可移 ...

  8. <郝斌C语言自学教程>

    文章目录 P1 我对自学的一些看法 P2 我为什么要出视频 P3 本讲内容概述 p4 HelloWorld程序举例 p5 C语言的起源与发展 p6 C的特点 p7 C的应用领域 p8 C的重要性 p9 ...

  9. 2.郝斌C语言课程大纲

    共分23讲 C语言简介                                                                                 1讲 第一讲  ...

  10. 中谷教育Python09~14笔记——流程控制

    if else if语句: --python的if语句类似其他语言.if语句包含一个逻辑表达式,使用表达式比较,在比较的结果的基础上作出决定. 注:python使用缩进作为其语句分组的方法,建议使用4 ...

最新文章

  1. 垂垂老矣,一代人的回忆,Adobe Flash 寿命将尽
  2. swiper去除滑动设置
  3. [部署]CentOS安装PHP环境
  4. mysql.max links_Mysql的max_allowed_packet设定
  5. C指针原理(4)-ATT汇编
  6. ssm(Spring+Spring mvc+mybatis)Dao层配置sql的文件——DeptDaoMapper.xml
  7. java依赖_java 依赖、组合、聚合与继承
  8. html5网站 500.19错误,WIN7操作系统创建IIS后浏览时提示HTTP500.19错误是怎么回事?如何解决?...
  9. APP One Link ,android and ios qrcode merge as One QRCode and one short link
  10. 使用MATLAB绘制周期信号的,周期信号频域分析及MATLAB实现.ppt
  11. java Calendar 小时值得到24进制格式
  12. Git协作流程(转)
  13. Ajax到底是什么?
  14. P3032 [USACO11NOV]二进制数独Binary Sudoku
  15. 8、RabbitMQ-消息的确认机制(生产者)
  16. Neutron Vlan Network 原理- 每天5分钟玩转 OpenStack(92)
  17. (详解)11年真题:求两个序列合并后的的中位数
  18. CSS基础(挺详细版)
  19. 税控盘是服务器系统,税控盘系统参数设置服务器设置
  20. 回首13我们奋斗在14的路上

热门文章

  1. QT网络编程TCP/UDP开发流程 制作网络调试助手
  2. selenium安装和chromedriver下载安装
  3. 数学牛人们的轶事[下]--zt 出处不详
  4. maven配置阿里仓库
  5. 了解NLP(自然语言处理)技术
  6. yum源配置方法(阿里云源)
  7. python3.9.0a2怎么安装pygame_Python自学——pygame安装
  8. 嵌入式Linux开发工具C语言 Makefile的编写
  9. 苹果iPhone/iPad不越狱怎么破解付费APP?
  10. Unity3d trial version 水印