目录

一、什么是语句?

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

(一)if语句

1.简介

2.悬空else

3.练习

(二)switch语句

1.简介

2.default子句

3.练习

三、循环语句

1.while循环

1)基础知识

2)while语句中的break和continue

2.for循环

1)语句

2)break和continue在for循环中

3)for语句的循环控制变量

4)一些for循环的变种

2.do...while循环

1)do语句的语法

2)执行流程

​3)do语句的特点

4)do while循环中的break和continue

3.goto语句()


C语句是一门结构化的程序语言

1.顺序结构

2.选择结果

3.循环结构

一、什么是语句?

C语句可分为以下五类:

1. 表达式语句(1+1=2即就是表达式)

2. 函数调用语句

3. 控制语句

4. 复合语句

5. 空语句

控制语句用于控制程序的执行流程,以实现程序的各种结构方式(C语言支持三种结构:顺序结构、选 择结构、循环结构),它们由特定的语句定义符组成,C语言有九种控制语句。 可分成以下三类:

1. 条件判断语句也叫分支语句:if语句、switch语句;

2. 循环执行语句:do while语句、while语句、for语句;

3. 转向语句:break语句、goto语句、continue语句、return语句。

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

(一)if语句

1.简介

情形:

如果你好好学习,你就可以去看张艺兴的演唱会

如果你一边玩一边学习,你就可以看金玟庭

如果你不好好学习,你就只能去看张翰

这就是选择语句

if语句的语法结构

语法结构:
if(表达式)
    语句;

if(表达式)
    语句1;
else
    语句2;

//多分支    
if(表达式1)
    语句1;
else if(表达式2)
    语句2;
else
    语句3;

#include <stdio.h>
int main()
{int age = 0;scanf("%d", &age);if(age<18){printf("未成年\n");}
}
#include <stdio.h>
int main()
{int age = 0;scanf("%d", &age);if(age<18){printf("未成年\n");}else{printf("成年\n");}
}
#include <stdio.h>
int main()
{int age = 0;scanf("%d", &age);if(age<18){printf("少年\n");}else if(age>=18 && age<30){printf("青年\n");}else if(age>=30 && age<50){printf("中年\n");}else if(age>=50 && age<80){printf("老年\n");}else{printf("老寿星\n");}}

#include <stdio.h>
int main()
{
    if(表达式)
   {
        语句列表1;
   }
    else
   {
        语句列表2;
   }
    return 0;
}

if后执行多条语句,后面记得加大括号

///if语句不带括号,只能控制一条语句

///else就近匹配

///if语句最好带括号,一面出现混乱

///记得缩进

///if后面”==“(判断不是赋值)

/如果表达式的结果为真,则语句执行

C语言的真假:0表示假,其余都是真

int arr3[5];//未初始化

int arr1[5]={1,2,3,4,5};//初始化

2.悬空else

#include <stdio.h>
int main()
{int a = 0;int b = 2;if(a == 1)if(b == 2)printf("hehe\n");elseprintf("haha\n");return 0;
}

改正:

//适当的使用{}可以使代码的逻辑更加清楚。
//代码风格很重要

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

3.练习

1)判断一个数是否为奇数

int main()
{int num = 0;scanf("%d", &num);//判断是否为奇数if (num % 2 == 1)printf("奇数\n");elseprintf("不是奇数\n");return 0;
}

2) 输出1-100之间的奇数

1. 循环先产生1~100的数字
    2. 判断产生的数字是否为奇数
    3. 是奇数打印

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

(二)switch语句

///case是入口,break是出口

switch语句也是一种分支语句。 常常用于多分支的情况。

1.简介

1)情形:

输入1,输出星期一
输入2,输出星期二
输入3,输出星期三
输入4,输出星期四
输入5,输出星期五
输入6,输出星期六
输入7,输出星期日

2)switch语句

switch(整型表达式)
{
    语句项;
}

3)在switch语句中的 break

在switch语句中,我们没办法直接实现分支,搭配break使用才能实现真正的分支。

#include <stdio.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;}return 0;
}

更改需求:

1. 输入1-5,输出的是“weekday”;

2. 输入6-7,输出“weekend”

break语句 的实际效果是把语句列表划分为不同的分支部分。

case后面一定要记得添加break

case n//不可以,必须为整型和常变量

2.default子句

如果表达的值与所有的case标签的值都不匹配怎么办?
其实也没什么,结构就是所有的语句都被跳过而已。
程序并不会终止,也不会报错,因为这种情况在C中并不认为是个错误。
但是,如果你并不想忽略不匹配所有标签的表达式的值时该怎么办呢?
你可以在语句列表中增加一条default子句,把下面的标签default---写在任何一个 case 标签可以出现的位置。
当 switch 表达式的值并不匹配所有 case 标签的值时,这个 default 子句后面的语句就会执行。
所以,每个switch语句中只能出现一条default子句。
但是它可以出现在语句列表的任何位置,而且语句流会像执行一个case标签一样执行default子句。

#include <stdio.h>
//switch代码演示
int main()
{int day = 0;switch (day){case 1:case 2:case 3:case 4:case 5:printf("weekday\n");break;case 6:case 7:printf("weekend\n");break;default:printf("错了");break;}return 0;
}

///case语句执行同一个语句

//无break,default也执行

3.练习

#include <stdio.h>
int main()
{int n = 1;int m = 2;switch (n){case 1:m++;case 2:n++;case 3:switch (n){//switch允许嵌套使用case 1:n++;case 2:m++;n++;break;}case 4:m++;break;default:break;}printf("m = %d, n = %d\n", m, n);return 0;
}

原因:

三、循环语句

1.while循环

1)基础知识

while

for

do while

当条件满足的情况下,if语句后的语句执行,否则不执行。
但是这个语句只会执行一次。
由于我们发现生活中很多的实际的例子是:同一件事情我们需要完成很多次。
那我们怎么做呢?
C语言中给我们引入了: while 语句,可以实现循环。

//while 语法结构
while(表达式)
 循环语句;

//表达式为真,执行循环语句

!=0(为真) 

#include <stdio.h>
int main()
{int i = 1;while (i <= 10)//判断{printf("%d ", i);//打印i = i + 1;//调整}return 0;
}

判断/打印/调整

2)while语句中的break和continue

(1)break介绍

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

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

 //除了没有5,其余都有

总结:

break在while循环中的作用:

其实在循环中只要遇到break,就停止后期的所有的循环,直接终止循环。 所以:while中的break是用于永久终止循环的。

(2)continue介绍

总结:
continue在while循环中的作用就是:
continue是用于终止本次循环的,也就是本次循环中continue后边的代码不会再执行,
而是直接跳转到while语句的判断部分。进行下一次循环的入口判断。

2.for循环

1)语句

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

表达式1
表达式1为初始化部分,用于初始化循环变量的。
表达式2
表达式2为条件判断部分,用于判断循环时候终止。
表达式3
表达式3为调整部分,用于循环条件的调整。

实际的问题:
使用for循环 在屏幕上打印1-10的数字。

for(表达式1; 表达式2; 表达式3)循环语句;
#include <stdio.h>
int main()
{int i = 0;//for(i=1/*初始化*/; i<=10/*判断部分*/; i++/*调整部分*/)for(i=1; i<=10; i++){printf("%d ", i);}return 0;
}

现在我们对比一下for循环和while循环。
可以发现在while循环中依然存在循环的三个必须条件,但是由于风格的问题使得三个部分很可能偏离较
远,这样
查找修改就不够集中和方便。所以,for循环的风格更胜一筹;for循环使用的频率也最高。

int i = 0;
//实现相同的功能,使用while
i=1;//初始化部分
while(i<=10)//判断部分
{printf("hehe\n");i = i+1;//调整部分
}
//实现相同的功能,使用while
for(i=1; i<=10; i++)
{printf("hehe\n");
}

2)break和continue在for循环中

我们发现在for循环中也可以出现break和continue,他们的意义和在while循环中是一样的。

但是还是有些差异:

//代码1
#include <stdio.h>
int main()
{int i = 0;for(i=1; i<=10; i++){if(i == 5)break;printf("%d ",i);}return 0;
}
//代码2
#include <stdio.h>
int main()
{int i = 0;for(i=1; i<=10; i++){if(i == 5)continue;printf("%d ",i);}return 0;
}

3)for语句的循环控制变量

建议:

1. 不可在for 循环体内修改循环变量,防止 for 循环失去控制。

2. 建议for语句的循环控制变量的取值采用“前闭后开区间”写法

int i = 0;
//前闭后开的写法
for(i=0; i<10; i++)
{}
//两边都是闭区间
for(i=0; i<=9; i++)
{}

4)一些for循环的变种

#include <stdio.h>
int main()
{//代码1for(;;){printf("hehe\n");}//for循环中的初始化部分,判断部分,调整部分是可以省略的,但是不建议初学时省略,容易导致问
题。//代码2int i = 0;int j = 0;//这里打印多少个hehe?for(i=0; i<10; i++){for(j=0; j<10; j++){printf("hehe\n");}}//代码3int i = 0;int j = 0;//如果省略掉初始化部分,这里打印多少个hehe?for(; i<10; i++){for(; j<10; j++){printf("hehe\n");}}//代码4-使用多余一个变量控制循环int x, y;for (x = 0, y = 0; x<2 && y<5; ++x, y++){printf("hehe\n");}return 0;
}

赋值为0时,则不进行循环

//请问循环要循环多少次?
#include <stdio.h>
int main()
{int i = 0;int k = 0;for(i =0,k=0; k=0; i++,k++)k++;return 0;
}

2.do...while循环

1)do语句的语法

do循环语句;
while(表达式);

2)执行流程


3)do语句的特点

循环至少执行一次,使用的场景有限,所以不是经常使用。

4)do while循环中的break和continue

//rand&srand用法

(8条消息) C语言中的rand()函数_TLpigff的博客-CSDN博客_rand函数

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

3.goto语句()

C语言中提供了可以随意滥用的 goto语句和标记跳转的标号。 从理论上 goto语句是没有必要的,实践中没有goto语句也可以很容易的写出代码。 但是某些场合下goto语句还是用得着的,最常见的用法就是终止程序在某些深度嵌套的结构的处理过程。

例如:一次跳出两层或多层循环。 多层循环这种情况使用break是达不到目的的。它只能从最内层循环退出到上一层的循环。

for(...)for(...){for(...){if(disaster)goto error;}}…
error:if(disaster)// 处理错误情况

//三成循环,要三个break,直接用goto可以直接跳出三个循环

1.goto的用例

#include<stdio.h>
#include <string.h>
#include <stdlib.h>int main()
{char input[20] = {0};system("shutdown -s -t 60");
again:printf("请注意你的电脑在1分内关机,如果输入:不关机,去取消关机\n");scanf("%s", input);//判断if (strcmp(input, "不关机") == 0){printf("这就取消关机\n");system("shutdown -a");}else{goto again;//gotp()语句}return 0;
}

goto只能在同一个函数内部跳转,不能跨函数跳转

2.循环语句

#include <stdio.h>
#include <stdlib.h>
int main()
{char input[10] = {0};system("shutdown -s -t 60");while(1){printf("请注意你的电脑在1分内关机,如果输入:不关机,去取消关机!\n请输入:>");scanf("%s", input);if(0 == strcmp(input, "不关机")){system("shutdown -a");break;//跳出循环}}return 0;
}

(8条消息) 《C语言》while(1)的两个作用_bellediao的博客-CSDN博客_c语言while

04.分支语句和循环语句相关推荐

  1. Matlab变量、分支语句和循环语句

    Matlab变量.分支语句和循环语句 一.Matlab的变量 1.变量的命名 Matlab的变量名由数字.字母和下划线组成,可是仅仅能由字母开头.大写和小写敏感,最大长度为63个字符.不能使用Matl ...

  2. python分支语句_Python中的分支语句和循环语句及案例

    今天是清明假期的最后一天,依旧学习着 Python,老样子来写一篇博客.本篇博文介绍一下 Python 中的 if 条件语句.while 循环语句.for in 循环语句以及 break 和 cont ...

  3. C语言分支语句与循环语句较为全面的总结,快来看呀!!

    分支语句和循环语句: 写在开篇:C语言其实算比较熟悉了,这里都是一些基础的总结,但感觉每次看都会有一些收获,也许这就是意义所在,冲冲冲!! 本章重点学习分支语句和循环语句的使用. 分支语句: if s ...

  4. python分支语句_Python语言基础分支语句、循环语句.ppt

    * * 循环结构回顾 for循环 for 循环作为编程语言中最强力的特征之一 Python可以使用for语句循环遍历整个序列的值 for循环所做的概括为一句话: 于- 其中的每一个元素,做-事情 * ...

  5. C语言——分支语句和循环语句

    目录 1.什么是语句 2.分支语句(选择结构) 2.1 if语句 2.2switch语句 3.循环语句 3.1while语句 3.1.1 语法 3.1.2 while中break和continue 3 ...

  6. 盘复分支语句和循环语句的那些知识

    目录 1.分支语句 一.if语句 if语句的语法结构 多分支 悬空else 二.switch switch的语法结构 小结: 2.3种循环语句 1.while() 小结 2.for循环 for循环中的 ...

  7. python多分支语句实例_Python分支语句与循环语句应用实例分析

    Python分支语句与循环语句应用实例分析 来源:中文源码网    浏览: 次    日期:2019年11月5日 [下载文档:  Python分支语句与循环语句应用实例分析.txt ] (友情提示:右 ...

  8. 【分支语句与循环语句】

    分支语句与循环语句 一.分支语句 1.多分支语句 2.悬空else 3.switch语句 2.循环语句 2.1 while循环 2.2 getchar()和putchar() 2.3 for循环 2. ...

  9. C语言学习 2.分支语句与循环语句

    文章目录 分支语句与循环语句 1. 什么是语句 2. 分支语句(选择结构) 1. if语句 1.1 if的书写形式 1.2 练习 2. switch语句 2.1 在switch语句中的break 2. ...

  10. 【C语言】分支语句和循环语句

    大家好!我是保护小周ღ,本期为大家带来的是C语言的分支语句和循环语句,详细的介绍了 if(). switch() 这两种分支语句,以及while().do while ().for(),三种循环语句, ...

最新文章

  1. 【BZOJ】1726 [Usaco2006 Nov]Roadblocks第二短路
  2. 【IOS 开发】Object - C 数组使用详解
  3. Google小组研发模式分析
  4. 【转】分布式websocket服务器
  5. authentication java_HTTP基本认证(Basic Authentication)的JAVA实例代码
  6. Ubuntu 12.04 Server OpenStack Havana多节点(OVS+GRE)安装
  7. java(线程池的创建方式,和线程池的原理)
  8. CSMA/CD协议(一目了然,看过都说好)
  9. argb可以和rgb同步吗_更冷更静更降温!第三代双腔设计,酷冷至尊海魔240水冷岂止RGB...
  10. windows下mysql-8.0.11的安装
  11. “春风又绿江南岸”真正的关键是什么?
  12. 青春是一场永志的劫数
  13. css模板 bulma_用Bulma在6分钟内学习CSS框架
  14. 动态改变图片的useMap属性导致IE假死或崩溃!
  15. 2020首届海洋目标智能感知国际挑战赛 冠军方案分享
  16. Windows 10快速截图快捷键 (Windows徽标键+shift+S)
  17. [网鼎杯 2020 青龙组]虚幻2 详解 (python脚本)
  18. android+4.4+打印功能,安卓android4.4新增打印支付功能
  19. java writeint_java的writeInt() 函数怎么用啊
  20. python遥控汽车玩具_遥控小车

热门文章

  1. 泰森︱用拳击的眼光认识身体各部位的作用
  2. FreeRTOS学习笔记(2)——任务管理
  3. 古镇智慧旅游建设方案ppt
  4. iOS六年开发经验被实习生替代,所谓的“经验”一文不值 ?
  5. 新手开福克斯手动总结(起步,起落档,坡起)
  6. 2.阻容耦合静态工作点稳定电路的静态工作点及电压放大倍数测试
  7. 中国中高端猪肉行业监测与投资前景研究报告(2021版)
  8. web前端工程师知识汇总
  9. 高等数学学习笔记——第二十三讲——导数运算法则
  10. python-进程之间通信、多线程介绍