3015C语言_流程设计
第五章 流程设计
- 5.1 C语句概述
- C语言的语句用来向计算机系统发出指令,一个实际的源程序通常包含若干语句,这些语句用来完成一定的操作任务。
- 1.其他类型语句
- 函数调用语句(由函数调用加一个分号构成),如 scanf(“%d”,&a);。
- 表达式语句(由一个表达式;构成一个语句),如 a=b;。
- 2.空语句
- C语言中所有语句都必须由一个分号(;)结束,如果只有一个分号如main(){;},这个分号也是一条语句,称为空语句,程序执行时不产生任何动作,但表示存在着一条语句。
- 3.复合语句
- 在C语言中花括号“{ }”不仅可以用做函数体的开始和结束标志,同时也常用做复合语句的开始和结束标志,复合语句也可称为 “语句体”。
- 在C语言中,任何表达式都可以加上分号构成语句,如 “i++;”。随意加“;”会导致很多逻辑上的错误,要慎用,不要乱用。复合语句中最后一个语句中最后的分号不能忽略不写。
- 4.赋值语句
- 前面已经介绍赋值语句是由赋值表达式和末尾的分号 (;)构成的。这里要提醒读者注意:“=”与“==”是两个不同的运算符,前者才是赋值运算符,而后者是关系运算符,用来进行条件判断,不能把二者混为一谈。如“i=2;”,功能是把数值2放到变量i中,而i==2是判断变量i的值是否为2。“j=j+1;”在程序执行时,首先取出j中的值,执行加数值1的操作后再把新值放回到j中。
- 1.其他类型语句
- C语言的语句用来向计算机系统发出指令,一个实际的源程序通常包含若干语句,这些语句用来完成一定的操作任务。
- 5.2 顺序结构
- C程序中的语句,按照它们在程序中出现的顺序依次执行,由这样的语句构成的程序结构称为顺序结构。
- 5.3选择结构
- 5.3.1 if语句和用if语句构成的选择结构
- if语句用来对所给定的条件进行判定,判断其表达式的值是否满足某种条件,并根据判定的结果(真或假)决定执行给出的两种操作中的哪一种。
- 5.3.1.1 if语句的几种形式
- (1)if
- if(表达式)语句
- 例如:
if(a>b)
printf(“The answer is right!\n“);- 其中,if是C语言的关键字,a>b是条件判断表达式。表达式两侧的括号不可少,并且只能是圆括号,不能用其他括号替代。紧跟着的是一条输出语句,称为if子句,如果在if子句中需要多个语句,则应该使用大括号({})把一组语句括起来构成复合语句,这样在语法上满足“一条语句“的要求。
- 例如:
- if(表达式)语句
- (2)if - else
- if(表达式)
- 语句1
- else 语句2
- 例如:
if(a>b)printf(“The answer is right.\n“);
else printf(“The answer is wrong.\n“);
- 例如:
- if(表达式)
- (3) if-else-if
if(表达式1)语句1
else if(表达式2)语句2
else if(表达式3)语句3
┆
else if(表达式m)语句m
else 语句n“语句1“是if子句,“语句2…语句m“是else子句。这些子句在语法上要求是一条语句,但需要执行多条语句时,则应该使用花括号({})把这些语句括起来组成复合语句。
- else不能独立成为一条语句,它只是if语句的一部分,不允许单独出现在程序中。else必须与if配对,共同组成if…else语句。
- (1)if
- 5.3.1.2 if语句的嵌套
- 在if语句中又包含一个或多个if语句结构,称为if语句的嵌套,一般形式如下:
if( )
if()语句1
else语句2
else
if()语句3
else语句4应当注意:else总是与它上面的最近的没有与else配对的if配对。
- 5.3.1.3 条件运算符构成的选择结构
- 有如下语句:
if(x<y)
min=x;/*求两数中较小的一个*/
else min=y; - 可以用min=(x<y)?x:y来替换,其中(x<y)?x:y 是一个条件表达式,“? :“就是条件运算符。该表达式是这样执行的:如果(x<y)条件成立,则整个条件表达式取值x ,否则取值y 。
- 优先级:条件运算符高于赋值运算符,但低于逻辑运算符、关系运算符和算术运算符。
- 有如下语句:
- 5.3.2 switch语句和goto语句
- 5.3.2.1 switch语句
- switch语句是C语言提供的多分支选择语句,用来实现多分支选择结构。它的一般形式如下:
switch(表达式)
{
case 常量表达式1 :语句1
case 常量表达式2 :语句2
case 常量表达式n :语句n
default : 语句n+
}说明:
- (1)switch是关键字,switch后面用花括号括起来的部分是switch语句体。
- (2)switch后面括号内的“表达式“,可以是C语言中任意合法表达式,但表达式两侧的括号不能省略。
- (3)case也是关键字,与其后面的常量表达式合称case语句标号,常量表达式的类型必须与switch后面的表达式的类型相匹配,且各case语句标号的值各不相同,不能重复。
- (4)default也是关键字,起标号的作用,代表除了以上所有case标号之外的那些标号,default标号可以出现在语句体中任何标号位置上,当然,也可以没有。
- (5)case语句标号后的语句1、语句2等,可以是一条语句,也可以是若干条,在必要时,case语句标号后的语句可以省略不写,case和常量表达式之间一定要有空格。
- (6) 一定要注意 有break 和没有break的差别,没有break时候,只要有一个case匹配了,剩下的都要执行,有break则是直接跳出了swiche语句。
- (7) switch只可以和break一起用,不可以和continue用。
- (8) switch(x) x:是整型常量,字符型常量,枚举型数据。不可以是变量。
- switch语句是C语言提供的多分支选择语句,用来实现多分支选择结构。它的一般形式如下:
- 5.3.2.2语句标号
- 语句标号用标识符表示,它的命名规则与变量名相同,即由字母、数字和下画线组成,在标识符后加一个冒号,就成了一个语句标号。在C语言中可以在任何语句前加上语句标号。
- m: 语句
- 5.3.2.3 goto语句
- goto语句为无条件转向语句,goto语句的一般形式如下:
- goto 语句标号;
- goto语句的作用:把程序的执行转向语句标号所在的位置,这个语句标号必须与此goto语句同在一个函数内,滥用goto语句将使程序的流程毫无规律,可读性差,因此初学者应慎用。
- 5.3.2.1 switch语句
- 5.3.1 if语句和用if语句构成的选择结构
- 5.4 循环结构
- 概念
- 在许多问题中,需要做某些重复执行的操作,这时就会用到循环结构。
- 在程序设计中也一样,例如,对1~100之间的自然数进行求和计算,计算某班级所有同学的成绩总分,还有很多,几乎所有的程序都会包含循环控制结构。循环结构是程序中一种很重要的结构。
- 其特点是,在给定条件成立时,反复执行某程序段,直到条件不成立为止。给定的条件称为循环条件,反复执行的程序段称为循环体。C语言提供了多种循环语句,可以组成各种不同形式的循环结构。
- 1) 用while语句;
- 2) 用do-while语句;
- 3) 用for语句;
- 5.4.1 while循环语句
- 5.4.1.1 while语句一般形式如下:
while(表达式)
循环体 - 5.4.1.2说明:
- while是C语言的关键字。
- 紧跟其后的表达式可以是C语言中任意合法的表达式,该表达式是循环条件,由它来控制循环体是否执行。
- 循环体可以是一条可执行语句,当多项操作需要多次重复做时,可以使用复合语句。
- 5.4.1.3执行过程:
- (1)计算紧跟while后括号中表达式的值,当表达式的值为非0时,则接着执行while语句中的内嵌语句;当整个表达式值为0时,则跳过该while语句,执行该while结构后的其他语句。
- (2)执行循环体内嵌语句。
- (3)返回去执行步骤(1),直到条件不满足,即表达式的值为0时,退出循环,while结构结束。
- 5.4.1.4 特点:
- 先对表达式进行条件判断,后执行语句。
- while语句构成的循环结构不同于由if语句构成的选择结构。当if后面的条件表达式的值为非零时,其if子句只执行一次;而当while后面的条件表达式的值为非零时,其后的循环体中的语句将被重复执行。而且在设计循环时,通常应在循环体内改变与条件表达式中有关变量的值,使条件表达式的值最终变成零,以便能及时退出循环。
#include<stdio.h>
main()
{
int i,sum=;
i=;
while(i<=)
{
sum=sum+i;
i++;
}
printf ("%d\n",sum);
}例如:用while循环求自然数1到100的和,程序段如下:
- 5.4.1.1 while语句一般形式如下:
- 5.4.2 do…while循环语句
- 5.4.2.1 do … while 循环结构的一般形式如下:
do
循环体语句
while(表达式); - 5.4.2.2说明:
- (1)do是C语言的关键字,必须和while联合使用,不能独立出现。
- (2)do …while 循环由 do 开始,用while结束。在语法上,在do和while之间只能是一条语句,如需要执行多条语句时,可以用大括号({})括起来,构成复合语句。必须注意的是:while(表达式)后的分号不可丢,它用以表示do … while 语句的结束。
- (3)while后面的圆括号中的表达式,可以是C语言中任意合法的表达式,由它控制循环是否执行,且圆括号不可丢。
- 执行过程:先执行一次指定的循环体语句,执行完后,判别while后面的表达式的值,当表达式的值为非零(真)时,程序流程返回,去重新执行循环体语句。如此反复,直到表达式的值等于零为止,此时循环结束。
- 5.4.2.3特点:先执行循环体一次,然后判断循环条件是否成立。
- do…while构成的循环与while循环十分相似,它们之间的重要区别是:while循环的控制出现在循环体之前,只有当while后面的表达式的值为非零时,才可能执行循环体;在do … while 构成的循环体中,总是先执行一次循环体,然后再求表达式的值,因此无论表达式的值是否为零,循环体至少要被执行一次。
#include<stdio.h>
main()
{
int i,sum=;
i=;
do
{
sum=sum+i;
i++;
}while(i<=);
printf("%d\n",sum);
}例如:用do-while循环求自然数1到100的和,程序段如下:
- do…while构成的循环与while循环十分相似,它们之间的重要区别是:while循环的控制出现在循环体之前,只有当while后面的表达式的值为非零时,才可能执行循环体;在do … while 构成的循环体中,总是先执行一次循环体,然后再求表达式的值,因此无论表达式的值是否为零,循环体至少要被执行一次。
- 5.4.2.1 do … while 循环结构的一般形式如下:
- 5.4.3 for循环语句
- for语句的一般形式为:
for(表达式1;表达式2;表达式3)
语句 - 5.4.3.1 说明:
- for是C语言中的关键字,其后的圆括号中通常是3个表达式,这3个表达式可以是C语言中任意合法表达式,它们通常用于for循环的控制。各个表达式之间用“;“隔开,且圆括号不可省略。按照语法规则,循环体只能是一条语句,如需要完成多项操作,可以用大括号({})括起来构成复合语句。
- 5.4.3.2执行过程:
- (1)先求表达式1的值 。
- (2)求表达式2的值,若其值为真(非0),则执行for语句中指定的内嵌语句后执行下面步骤(3),若其值为假(0),则退出循环,执行for以下的其他语句。
- (3)求解表达式3的值。
- (4)重复执行步骤(2)。
#include<stdio.h>
main()
{
int i,sum=;
for(i=;i<=;i++)
{
sum=sum+i;
}
printf("%d\n",sum);
}例:用for循环求自然数1-100的和,程序段如下:
- for语句的一般形式为:
- 5.4.4循环的嵌套
- 在某一个循环体内部又包含了另一个完整的循环结构,称为循环的嵌套。前面介绍的3种类型的循环都可以互相嵌套,循环的嵌套可以多层,但要保证每一层循环在逻辑上必须是完整的。
#include<stdio.h>
main()
{
int i, j;
for (i=; i<; i++)
for(j=; j<; j++)
printf("%d %d \n", i,j);
}
/* 程序显示的结果是:
0 0
0 1
1 0
1 1
*/例 有如下程序段:
- 5.4.5 几种循环的比较
- 前面讲的几种循环都可以用来处理同一问题,一般情况下它们可以互相代替。不过最好根据每种循环的不同特点选择最适合的。
- while和do … while 循环,只在while后面指定循环条件,循环体内应包含使循环趋于结束的语句,for中使循环趋于结束的操作可以包含在“表达式3“中。由while完成的循环,用for循环都能完成。在for语句“表达式1“中可以实现循环变量的初始化,而while和do…while的循环变量初始化应在while和do…while语句之前完成。
- 5.6 break语句和continue语句
- 5.6.1 break语句
- 在break后面加上分号就可以构成break语句。
- 在介绍选择结构时,我们已经知道break语句可以使流程跳出switch结构,继续执行switch语句下面的语句。实际上,break语句还可以用于从循环体内跳出,即提前结束循环。
- 说明:
- (1)break语句只能出现在循环体内及switch语句内,不能用于其他语句。
- (2)当break出现在循环体中的switch语句体内时,其作用只是跳出该switch语句体。当break出现在循环体中,但并不在switch语句体内时,则在执行break后,跳出本层循环,当然也不再去进行条件判断。
- 5.6.2 continue语句
- 一般形式为:continue;其作用是结束本次循环,即跳过循环体中下面尚未执行的语句,而转去重新判定循环条件是否成立,从而确定下一次循环是否继续执行。
- 说明
- 与break语句不同,执行continue语句并没有使整个循环终止。在while和do … while 循环中,continue语句使得流程直接跳到循环控制的条件判断部分,然后决定循环是否继续执行。在for循环中,遇到continue后,跳过循环体中余下的语句,而去求解for语句中的“表达式3“的值,然后再次对“表达式2“的条件进行判断,最后根据“表达式2“的值来决定for循环是否继续执行。continue不管是作为何种语句中的语句成分,都按上述功能执行。
- continue语句和break语句的区别是: continue语句只结束本次循环,而不是终止整个循环的执行;而break语句则是结束整个循环过程,不再判断执行循环的条件是否成立。
#include<stdio.h>
#include<math.h>
main()
{
int m,i,k;
scanf("%d",&m);
k=sqrt(m); /*此公式用于求m开根号*/
for(i=;i<=k;i++)
if(m%i==) break;
if(i>=k+)
printf("%d is a primenumber\n",m);
else
printf("%d is not a primenumber\n",m);
}例如 输入任意的自然数,判断此数是不是素数,有程序段如下:
- 5.6.1 break语句
- 概念
3015C语言_流程设计的更多相关文章
- Go语言_流程控制语句:for、if、else、switch 和 defer
流程控制语句:for.if.else.switch 和 defer 学习如何使用条件.循环.分支和推迟语句来控制代码的流程. Go 作者组编写,Go-zh 小组翻译. https://go-zh.or ...
- ShoneSharp语言(S#)的设计和使用介绍系列(4)— 入门概述
ShoneSharp语言(S#)的设计和使用介绍 系列(4)- 入门概述 作者:Shone 声明:原创文章欢迎转载,但请注明出处,https://www.cnblogs.com/ShoneSharp. ...
- ShoneSharp语言(S#)的设计和使用介绍系列(3)— 修炼工具
ShoneSharp语言(S#)的设计和使用介绍 系列(3)- 修炼工具 作者:Shone 声明:原创文章欢迎转载,但请注明出处,https://www.cnblogs.com/ShoneSharp. ...
- ShoneSharp语言(S#)的设计和使用介绍系列(2)— 掀开盖头
ShoneSharp语言(S#)的设计和使用介绍 系列(2)- 掀开盖头 作者:Shone 声明:原创文章欢迎转载,但请注明出处,https://www.cnblogs.com/ShoneSharp. ...
- ShoneSharp语言(S#)的设计和使用介绍系列(8)— 最炫“公式”风
ShoneSharp语言(S#)的设计和使用介绍 系列(8)— 最炫“公式”风 作者:Shone 声明:原创文章欢迎转载,但请注明出处,https://www.cnblogs.com/ShoneSha ...
- Atitit 修改密码的功能流程设计 attilax总结
Atitit 修改密码的功能流程设计 attilax总结 1.1. 注意点1 1.2. 设计修改用户密码功能时把用户ID保存在哪里?1 1.3. Ui设计1 1.4. 功能设计源码1 1.5. Agt ...
- 怎样让Oracle支持中文? 语言_地域.字符集
暂时不涉及数据库业务,但是今天入库的时候中文入库报错,考虑可能是字体不支持,留待备用. 来源:Linux社区 作者:robertkun 语言_地域.字符集SIMPLIFIED CHINESE_CHI ...
- 审核流(2)流程设计-SNF.WorkFlow功能使用说明--SNF快速开发平台3.1
流程设计 图形化的流程设计,更方便.直观 1.打开“流程设计“程序,如上.点击”新建“如下: 2.红色部分为必填项,审批对象是选择要审批的程序菜单,单据名称是在审核流流转时用于提示的单据名称,还要选择 ...
- asp.net 微信企业号办公系统-表单及流程设计配置实例
在环境搭建好之后,我们就来学习一下怎样快速创建一个流程,并执行和流转该流程(我们这里讲的只是入门,不涉及到具体流程参数设置). 创建一个流程步骤为:在数据库在创建表-->设计表单-->设置 ...
随机推荐
- CAP和最终一致性
查阅资料整理了最终一致性.CAP 相关的内容.由于图省事儿,没有做文字的整理记载,只有 slides 和一些查阅过的链接,大家将就着看.欢迎指正. slides: slides 链接:请戳这里 背景 ...
- Method for finding shortest path to destination in traffic network using Dijkstra algorithm or Floyd-warshall algorithm
A method is presented for finding a shortest path from a starting place to a destination place in a ...
- 利用Adorner制作用于图像裁切的选择框
原文:利用Adorner制作用于图像裁切的选择框 前天,我写了一篇"使用Adorner显示WPF控件的边界点"的文章.这次,使用从Adorner继承来写一个用于图像裁切的选择框. ...
- WPF的消息机制(一)- 让应用程序动起来
原文:WPF的消息机制(一)- 让应用程序动起来 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/powertoolsteam/article/det ...
- Git撤销对远程仓库的push&commit提交
撤销push 1. 执行 git log查看日志,获取需要回退的版本号 2. 执行 git reset –soft <版本号> ,如 git reset -soft 4f5e9a90ed ...
- 《C++ Primer Plus》学习笔记11
<C++ Primer Plus>学习笔记11 第17章 输入.输出和文件 <<<<<<<<<<<<<< ...
- Installation and Configuration Guide
Harbor can be installed by one of three approaches: Online installer: The installer downloads Harbor ...
- JAVASCRIPT高程笔记-------第十章 DOM对象
10.1.1 node类型 --除IE外 所有浏览器都可以访问到这个类型 :JS中所有的节点类型都继承自Node类型 nodeName 与nodeValue 如果是一个元素 那么nodeName中保 ...
- 【C#】WPF的xaml中定义的Trigger为什么有时候会不管用,如Border的MouseOver之类的
原文:[C#]WPF的xaml中定义的Trigger为什么有时候会不管用,如Border的MouseOver之类的 初学WPF,知道一些控件可以通过定义Style的Trigger改变要显示的样式,但是 ...
- TinyMCE插件CodeSample前后端应用
后端使用插件CodeSample方法: <html> <textarea id="editor_id" name="content" plac ...