李洪强-C语言6-控制结构
C语言流程控制
一、流程控制结构
(1)顺序结构:按书写顺序执行每一条语句。
(2)选择结构:对给定的条件进行判断,根据判断结果决定执行哪一段代码。
(3)循环结构:在给定条件成立的情况下,反复执行某一段代码。
二、选择结构-if
(一)if简单使用
1) 第一种结构:
a) 如果条件为真,就执行后面的语句,否则不执行。
if(条件)
{
语句1;
语句2;
····
}
2) 第二种结构:
a) 如果条件成立就执行语句1,否则执行语句2。
if(条件)
{
语句1;
}
else
{
语句2;
}
3) 第三种结构:
a) 先判断条件1,若成立则执行语句1,其它不执行;若条件1不成立,则检查条件2···,【注意】如果条件3成立,则说明前面的都不成立。所有的语句块只有一个会被执行。
if(条件1)
{
语句1;
}
else if(条件2)
{
语句2;
}
else (条件3)
{
语句3;
}
4) 第四种结构:
a) 在这种情况下,当条件成立,只执行语句1,语句2不属于次条件结构,但不推荐此种写法。
If(条件)
语句1;
语句2;
(二)if使用注意
①. 比较大小时,可以把常量值放在左边,变量值放在右边以避免错误。因为if(a==0)也容易被写成if(a=0),而这种情况,编译器并不会报错,推荐使用if(0==a)这种写法。
②. 注意赋值运算符,不要把=写成是==。
③. If(条件)后面不要加分号,这代表是一个空语句,后面的代码块将成为一个独立的代码块。如if(条件);{.....}//需要多加注意
④. 注意作用域的问题,如果要在if后面定义新的变量,则一定要使用大括号。
if(10>6)
{
Int a;//a的作用域在代码块结束后失效
}
Printf(“a=%d”,a);//编译器报错,找不到标识符
if(10>6)
Int a; //这种情况下报错,a的作用域不明确
Printf(“a=%d”,a); //编译器报错,找不到标识符
⑤. If(0){...}随便挑一个数值也可以做条件
(三)If结构练习
问题:输入一个整数seore代表分数,根据分数输出等级(A-E)。
A 90-100 B80-89 C70-79 D60-69 E0-60
代码:
三、选择结构-switch
(一)switch结构
Switch(值) //通常是变量
{
Case 数值1:
语句1;
Break;
Case 数值2:
语句2;
Break;
Case 数值3:
语句3;
Break;
Default :
语句4;
Break;
}
解说:该结构把数值与数值1进行比较,若相等,则执行后面的所有语句,直到遇见break语句跳出整个循环,若前面的条件都不满足,则最终会执行default后面的语句。如果不写break语句,则后面的语句会接连执行,直到遇到break语句或者是全部语句执行完毕,只要前面的条件成立,则后面的判断就直接被忽略。
(二)Switch使用注意
Char c=‘A’;
Switch(c)
{
Case ‘A’:
语句1;
Break;
Case 65://不能这样写,因为‘A’的ASCII值就是65,会报错
语句2;
Break;
Case 数值3:
Int a=10;
//a的作用域不明确报错,c语言检查变量的作用域根据{}决定,这里可以加{}
Break;
Default :
语句4;
Break;
}
注意:如果要在case后面的语句中定义变量,则必须使用大括号包住。
(三)switch结构练习
问题:输入一个整数seore代表分数,根据分数输出等级(A-E)。
A 90-100 B80-89 C70-79 D60-69 E0-60
代码:
【对比】if与switch:
1. If语句能够完成的功能,switch有时并不能够完成,如判断if(a>100)
2. 在有些情况下,if语句和switch语句可以互换
3. Switch语句能完成的功能,if语句都可以完成
四、循环结构-while
(一)简单使用
While(条件)
{
语句;
}
解说:先判断条件是否成立,成立则执行,执行完代码后再次判断条件是否成立(判断条件-》执行代码块-》判断条件-》执行代码块···)1.首先确定循环执行的操作,2.在确定约束条件,即需要循环多少次,3.定义一个变量来记录循环的次数。
提示:在while循环体内使用if...break(跳出整个循环)或if...continue语句(跳出本次循环,继续下一次循环判断)。
While结构的运行原理:
①. 如果一开始条件不成立,则永远不会执行循环体。
②. 如果条件成立,则执行一次循环体,执行完毕后再次判断条件是否成立。
③. Break:直接退出整个循环。
④. Continue:结束当前循环体,进行下一轮循环判断。
(二)使用注意
1) While(1){.....}是一个死循环
2) While(a<10);{...}在条件后面加逗号表示循环体是一个空语句,而非{}部分
3) While条件语句后推荐使用{},否则只有第一条语句时循环体
4) 最简单的死循环 while(1);//永远执行空语句,让程序崩溃
(三)While练习
问题:编程实现,提示输入一个正整数n,计算1+2+3+...n的值。
代码:
五、循环结构-do while
Do
{
语句
}while(条件)
特点:do while循环至少会执行一次循环体
六、循环结构-for
(一)基本使用
for(语句1,条件,语句2)
{
循环体
}
语句1:一般为初始化语句
语句2:一般为增量语句(执行完循环体后再执行的语句)
For循环原理:
1) For循环一开始就会执行语句1(整个for循环只会执行一次)
2) 判断条件是否成立,若成立,则执行一次循环体,然后执行语句2,再次判断条件是否成立,若条件不成立则结束循环
3) 顺序为:(语句1-》判断条件-》循环体—》语句2-》判断条件-》循环体···)
【对比】for和while:
在性能上,for循环稍胜一筹,因为while循环只能使用外部的变量,而for循环可以对变量进行及时回收。
(二)for使用注意
①. 不要随便在for语句后面写上分号,如for();{....}
②. 定义变量的作用域不明确错误
for(int i=0;i<5;i++)
Int a=10; //编译器报错,变量作用域不明确
③. For语句中最简单的死循环for(;;);
④. 需要注意变量定义的作用域
Int a=10;
For(int i=0,int a=9;i<5;i++)
{
Int a=10;
Printf(“a=%d\n”,a);//这里打印的a的值是多少?
}
(三)For循环嵌套
用以输出特定格式的内容,如QQ好友列表等,提升可扩展性。
For(in i=0;i<5;i++)
{
//外面的循环控制行数
Printf(“好友列表%d\n”,i);
//内部的循环控制列数
For(int j=1;j<=6;j++)
{
Printf(“好友%d\n”,j);
}
}
(四)For练习
使用for循环输出九九乘法表。//先控制行数,在控制列数
代码:
李洪强-C语言6-控制结构的更多相关文章
- 李洪强-C语言关键字、标识符和注释
一.关键字 C语言提供的有特殊含义的符号,共32个. 在Xcode中关键字全部高亮显示,关键字全部都为小写.如return.int等. 二.标识符 定义:标识符是程序员在程序中自定义的一些符号和名称. ...
- 李洪强-C语言9-C语言的数据,变量和常量
一.数据 图片文字等都是数据,在计算机中以0和1存储. (一)分类 数据分为静态数据和动态数据. ①. 静态数据:一些永久性的的数据,一般存储在硬盘中,只要硬盘没坏数据都是存在的.一般以文件的形式存储 ...
- 李洪强 - C语言8-Scanf函数
C语言的scanf函数 一.变量的内存分析 (一)字节与地址 ①. 内存以字节为单位 每个字节都有自己的内存地址,根据地址就可以找到该字节.整个内存相当于一整个酒店,而酒店以房间为单位,在这里每个房间 ...
- 李洪强-C语言7-C语言运算符
C语言运算符 一.算术运算 C语言一共有34种运算符,包括常见的加减乘除运算. ①. 加法:+ 还可以表示正号 ②. 减法:- 还可以表示负号 ③. 乘法:* 非数学意义上的X ④. 除法:/ 注意 ...
- 李洪强-C语言5-函数
C语言函数 一.函数 C语言程序是由函数构成的,每个函数负责完成一部分的功能,函数将工恩呢该封装起来,以供程序调用. 二.函数定义 目的:将一些常用的功能封装起来,以供日后调用. 步骤:确定函数名,确 ...
- 李洪强-C语言4-内存分析
C语言内存分析 一.进制 概念:进制是一种计数方式,是数值的表现形式 4种主要的进制: ①. 十进制:0~9 ②. 二进制:0和1 ③. 八进制:0~7 ④. 十六进制:0~9+a b c d e f ...
- 李洪强-C语言2-字符串
C语言字符串 一.字符串基础 注意:字符串一定以\0结尾. Printf(“yang\n”); 其中yang为字符串常量,“yang”=‘y’+‘a’+‘n’+‘g’+‘\0’.字符串由很多的字符 ...
- 李洪强-C语言1-指针
C语言指针 前导程序 一.基本知识点 Int a=10; Int *p;//定义一个int类型的指针 P=&a;//指针变量p指向了变量a *p=20;//使用指针不通过变量直接修改变量a ...
- 李洪强-C语言3-数组
一.数组的概念 用来存储一组数据的构造数据类型 特点:只能存放一种类型的数据,如全部是int型或者全部是char型,数组里的数据成为元素. 二.数组的定义 格式: 类型 数组名[元素个数]: 举例:存 ...
随机推荐
- 《ASP.NET1200例》解决母版页报错“内容控件必须是内容页中的顶级控件,或是引用母版页的嵌套母版页。”
VS2005下,添加了母版页这个控件,我们可以讲N个页面中共同的部分放在母版页来实现,并让WEB窗体集成自我们的母版页,就可以让我们的站点具有统一的风格了.在VS2005SP1之前的版本中,我们只能创 ...
- Android Studio "diamond operator is not supported" 处理方法
低版本的android编译环境是不支持使用java7语法的,如果使用了,就会产生上述问题,如果你的android环境较新,那么可以使用以下方法: 在build.gradle的android标签下加入以 ...
- (转)SQL SERVER的锁机制(二)——概述(锁的兼容性与可以锁定的资源)
二.完整的锁兼容性矩阵(见下图) 对上图的是代码说明:见下图. 三.下表列出了数据库引擎可以锁定的资源. 名称 资源 缩写 编码 呈现锁定时,描述该资源的方式 说明 数据行 RID RID 9 文件编 ...
- Java for LeetCode 046 Permutations
Given a collection of numbers, return all possible permutations. For example, [1,2,3] have the follo ...
- Cocos2d-JS场景树
场景树概念(Scene Graph) 场景树是Cocos2d-JS中用来管理场景中所有元素的一个数据结构,场景树之所以被称为一棵树是因为它将一个场景的所有子结点以树状图的形式组织在一起. Cocos2 ...
- 搭建Maven工程的时候,做单元测试,报ClassNotFoundException
搭建Maven工程的时候报错 问题原因是在spring.xml中配置的 classpath:config.properties 没有在工程中创建.
- RedHat中敲sh-copy-id命令报错:-bash: ssh-copy-id: command not found
RedHat中敲sh-copy-id命令报错:-bash: ssh-copy-id: command not found 在多台Linux服务器SSH相互访问无需密码, 其中进入一台Linus中,对其 ...
- undefined reference to libiconv_open'
ext/iconv/.libs/iconv.o: In function `php_iconv_stream_filter_ctor': /home/king/php-5.2.13/ext/iconv ...
- wp8 json2csharp
string jsonData = "{\"result\":\"600\",\"data\":{\"items\&qu ...
- hdu 5312 数学