




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第3章C语言流程控制2023/10/2第3章C语言流程控制第3章C语言流程控制2023/8/1第3章C语言流程控制1本章重点格式化输入输出函数C语言中的顺序、分支和循环程序的设计方法第3章C语言流程控制本章重点格式化输入输出函数第3章C语言流程控制23.1格式化输入输出函数printf()函数scanf()函数第3章C语言流程控制3.1格式化输入输出函数printf()函数第3章C语言流程33.11printf()函数 C标准库函数中提供了一些输入输出函数,如前面遇到的printf()函数和scanf()函数,它们非C关键词,而是函数名而已,可以自己编写输入输出函数。printf()函数和scanf()函数在系统文件“stdio.h”中声明,所以在程序的开始部分要使用编译预处理命令“#include<stdio.h>”。第3章C语言流程控制3.11printf()函数 C标准库函数中提4 在日常生活中,我们要经常将华氏温度转换成摄氏温度,其转换公式如下:式中:c表示摄氏温度,f表示华氏温度。运行结果:如:第3章C语言流程控制 在日常生活中,我们要经常将华氏温度转换成摄氏温度,其转换公5 printf()函数的作用就是输出。
对比:
函数语句:
printf("fahr=%f,celsius=%f\n",fahr,celsius);
输出结果:
fahr=100.000000,celsius=37.777778 得出:双引号里,第一个%f换成了fahr的值,第二个%f换成了celsius的值,并且以单精度数据形式显示。第3章C语言流程控制 printf()函数的作用就是输出。第3章C语言流程控制6 printf()函数一般的调用格式为:
printf("格式控制字符串",输出参数1,输出参数2,…,输出参数n);
“格式控制字符串”是用双引号括起来的字符串,也称作“转换控制字符串”,包括两种意思。
第3章C语言流程控制 printf()函数一般的调用格式为:第3章C语言流程控7普通字符 普通字符即需要原样输出字符。如: printf("fahr=%f,celsius=%f\n",fahr,celsius); fahr=100.000000,celsius=37.777778 双引号内,两个%f变化除外,其余均无改变格式说明格式说明由“%”和格式字符组成,如%d、%f等,它的作用是将输出的数据转换成指定的格式输出。第3章C语言流程控制普通字符格式说明第3章C语言流程控制8格式说明输出%c%d%e%E%x%u%s%o%G%g%f%%%X一个字符根据数值的不同自动选择%f或%e。用于指数小于-4或者大于精度根据数值的不同自动选择%F或%E。用于指数小于-4或者大于精度无符号八进制整数字符串无符号十进制整数使用十六进制数字of的无符号十六进制整数使用十六进制数字oF的无符号十六进制整数输出一个%有符号十进制整数浮点数、以指数的形式输出(1.2e+02)浮点数、以指数的形式输出(1.2E+02)以小数点形式输出浮点数、十进制记数法第3章C语言流程控制格式说明输出%c%d%e%E%x%u%s%o%G%g%f%%9字符说明l用于长整型整数,可加在格式符d、o、x、u前面m(正整数)数据最小宽度n(正整数)对于实数,表示输出n位小数;对于字符串,表示截取的字符个数—输出的数字或者字符在域内向左靠1.对于%md和%ms,m为指定输出数据的宽度,如果数据的位数小于m,则左端补空格,若大于m,则按实际位数输出。例如: printf("%4d,%4d",a,b)若a=12,b=12345,则输出结果为:˽˽12,12345注意:2.对于%-ms,如果字符串的长度小于m,则输出m列,不足的位数在右侧补空格。例如: printf(“%-4d,%-4d”,a,b); 若a=12,b=12345;结果为:a=12˽˽,b=12345。3.对于%m.s,输出占m列,但只是取字符串中左端n个字符,这n个字符输出在m列的右侧,左端补空格。%-m.s则在右侧补空格,如果n>m,则m自动取n值,即保证n个字符正常输出。4.对于%m.nf,指定输出的数据共占m列,其中n位小数。如果数值长度小于m,则左端补空格。%-m.nf与%m.nf一样,只是使输出的数值向左端靠,右端补空格。第3章C语言流程控制字符说明l用于长整型整数,可加在格式符d、o、x、u前面m(103.1.2scanf()函数
依旧探讨华氏温度转换成摄氏温度,上一节中,华氏温度为一定值,如果根据用户来输入相应的数据,求摄氏温度,那该如何进行相应的输入呢?第3章C语言流程控制3.1.2scanf()函数 第3章C语言流程控制11运行结果:Pleaseinputfahr:140fahr=140.000000,celsius=60.000000scanf()函数作用,输入数值例:第3章C语言流程控制运行结果:Pleaseinputfahr:140f12
scanf函数的作用是输入数据,其基本格式为:scanf("格式控制",地址列表)
“格式控制”的含义和printf函数的格式控制。格式说明也是以%开始,以一个格式字符结束,中间可以插入一些普通字符,普通字符同样按原样输出。第3章C语言流程控制 第3章C语言流程控制13格式说明符意义%c输入单个字符%d输入有符号的十进制整数%f输入浮点数,可以用小数或者整数形式输入%o输入无符号的八进制数%s输入字符串,将字符串存放到一个字符数组中,输入时以非空白字符开始,以第一个空白字符结束,字符串以串结束标志'\0'作为其最后一个字符。%u输入无符号的十进制整数%x,%X输入无符号的十六进制整数%e,%E,%g,%G与%f的作用相同,e,f,g可以互相替换而且大小写的作用相同。scanf函数的格式说明符字符意义l用于输入长整型数据,可用于%ld、%lo、%lx、%lu以及double型数据%lf或%leh用于输入短整型数据,可用于%hd、%ho、%hx域宽指定输入数据所占的列宽,应为一个正整数*表示本输入项在读入后不赋给相应的变量第3章C语言流程控制格式说明符意义%c输入单个字符%d输入有符号的十进制整数%f14如:scanf(”%d”,&i);输入˽1234,结果i的值为1234输入 1234,结果i的值为123输入 1234,结果i的值为1234 为了更清楚地了解scanf()函数的用法,须知以下几点:如:scanf(”%d,%d”,&a,&b)加上“&”,表示变量a和b的地址这个,输入时,必须加上逗号,才能保证正确如:scanf(”%4d”,&i);输入12345,结果i的值为1234 (因为指定域宽为4)输入123˽45,结果i的值为123 (因为遇见空白字符)scanf格式控制中的普通字符必须按原样输入,地址列表中必须为地址,在变量前加上“取地址运算符”读取数据的时候是以指定域宽或者第一个空白字符处为终止(最先达到者)若第一个或前几个连续为空白字符、制表符和换行符,都将跳过这些字符注意%s格式说明符的用法第3章C语言流程控制如:scanf(”%d”,&i); 为了更清楚地了解scan15要点深度解析: 结合要点1,了解地址的含义结合要点2、3,分析多数据输入情况结合要点4,掌握%s的用法第3章C语言流程控制要点深度解析:第3章C语言流程控制163.2程序流程图
流程图是用一些图框来表示各种操作。用流程图来表示算法,直观形象,易于理解。美国国家标准化协会ANSI规定了一些常用的流程图符号。第3章C语言流程控制3.2程序流程图 第3章C语言流程控制17菱形框,是对一个给定的条件进行判断,根据给定的条件是否成立来决定如何执行其后的操作。它有一个入口,两个出口连接点,是用于将画在不同地方的流程线连接起来。在流程图中,编号相同的连接点表示这些点是互相连接在一起的注释框,不是流程图中的必要部分,不反应流程和操作,只是为了对流程图中某些框的操作作必要的补充说明,以便于人们更好的理解流程图第3章C语言流程控制菱形框,是对一个给定的条件进行判断,根据给定的条件是否成立来18
例:求一数值的绝对值。 数学分析:若此数值本身就不小于0,就是其本身,反之,为其相反数。
输出X输出-xX满足条件不满足条件流程图表示:第3章C语言流程控制 输出X输出-xX满足条件不满足条件流程图表示:第3章19三种基本结构:1.顺序结构,流程图表示如下:执行完A框指定的操作后接着执行B框所指定的操作。顺序结构是最简单的一种基本结构。2.选择结构,流程图表示如下:此结构中必须包含一个判断框,根据给定的条件p是否成立来选择执行A框还是B框中所指定的操作。无论p条件是否成立,只能执行A框或者B框之一,两者不可能同时执行。A框或者B框有一个可以是空的,不执行任何操作3.循环结构,流程图表示如下:当(while)型循环结构。其功能是:当给定的条件p1成立时,执行A框操作,执行完A后,再判断条件p1是否成立,如果仍然成立,再执行A框,如此反复执行A框,直到某一次条件p1不成立为止,此时不执行A框,从b点脱离循环结构直到(until)型循环结构。其功能是:先执行A框,然后判断给定的条件p2是否成立,如果p2条件不成立,则再执行A,然后再对p2条件作判断,如果p2条件仍然不成立,又执行A……如此反复执行A,直到给定的条件p2成立为止,此时不再执行A,从b点脱离循环结构第3章C语言流程控制三种基本结构:1.顺序结构,流程图表示如下:执203.3顺序结构程序设计算术运算符算术表达式赋值表达式第3章C语言流程控制3.3顺序结构程序设计算术运算符第3章C语言流程控制21例:求一元二次方程的两根。运行结果:从主函数入口开始执行,定义变量,输入数值,求解方程的解,这都是按照代码的一步一步往下实现的。第3章C语言流程控制例:求一元二次方程的两根。运行结果:从主函数入223.3.1算术运算符 5种基本运算符:1).+(加法或者正直运算符)2).̶(减法或者负值运算符)3).*(乘法运算符)4)./(除法运算符)5).%(求余运算符)第3章C语言流程控制3.3.1算术运算符 5种基本运算符:1).+(加法或者23注意:加法和减法运算符同于数学上乘法在c语言中用“*”,而不用“×”除法在c语言中是“/”,而不用“÷”使用“/”时,若除数和被除数都为整数,则商也是整数,若参与运算的有负数,第3章C语言流程控制注意:第3章C语言流程控制243.3.2算术表达式 算术表达式即用算术运算符和括号将运算对象连接起来,符合C语法规则的式子 算术运算时是按照优先级进行的,若优先级相同,则按照结合方向进行计算,并且每一个表达式都会有一个确定的值。第3章C语言流程控制3.3.2算术表达式第3章C语言流程控制253.3.3赋值表达式 由赋值运算符将一个变量和一个表达式连接起来的式子称为赋值表达式。 其一般形式为:
<变量><赋值运算符><表达式> 计算过程是:先计算赋值运算符右侧的“表达式”的值,然后将这个值赋值给左边的变量。多个赋值表达式共存则按结合性“自右而左”进行一步一步分别赋值。第3章C语言流程控制3.3.3赋值表达式 由赋值运算符将一个变量和一个表达式连26常用的复合赋值运算符a+=y等价于a=a+yb-=y等价于b=b-yc*=y等价于c=c*yd/=y等价于d=d/ye%=y等价于e=e%yy可以是常量、变量以及复杂的表达式 赋值运算符“=”之前加上其他运算符,就构成复合赋值运算符。第3章C语言流程控制常用的复合赋值运算符a+=y等价于a=a+yb-=y等价于b27编写程序:从键盘上输入三角形的三边,根据下面的公式求出三角形的面积area。假设输入a、b和c三边的边长能够组成一个三角形。程序为:第3章C语言流程控制编写程序:从键盘上输入三角形的三边,根据下面283.4选择结构程序设计关系运算符和关系表达式逻辑运算符和逻辑表达式if语句与switch第3章C语言流程控制3.4选择结构程序设计关系运算符和关系表达式第3章C语言流29例:一元二次方程根的情况。运行结果:此程序就体现了,根据不同的情况,有不同的结果,就达到了一种选择的目的。第3章C语言流程控制例:一元二次方程根的情况。运行结果:此程序就体303.4.1关系运算符和关系表达式关系运算符运算符含义<小于<=小于和等于>大于>=大于或等于==等于!=不等于算术运算符>关系运算符>赋值运算符算术运算符:+-*/%关系运算符:><>=<=赋值运算符:==!=第3章C语言流程控制3.4.1关系运算符和关系表达式关系运算符运算符含义<小于<31
关系表达式:用关系运算符将两数连接起来,进行关系运算。 表达式结果为逻辑值,即“真”或“假” 若表达式成立:值为“1” 表达式不成立:值为“0”。 例:a=2011,b=2010; a==b; 因为a,b值不想等,所以表达式值为0。第3章C语言流程控制 关系表达式:用关系运算符将两数连接起来,进行关系运算。第323.4.2逻辑运算符和逻辑表达式逻辑运算符运算符举例运算规则&&(逻辑与)a&&b若a、b同时为真,a&&b为真,除此之外都为假||(逻辑或)a||b若a、b之一为真,则a||b为真!(逻辑非)!a若a为真。则!a为假,反之,若a为假,则!a为真优先级: !>算术运算负>关系运算符>逻辑运算符 &&与||为双目运算符,需要两个运算量!为单目运算符,只需要一个第3章C语言流程控制3.4.2逻辑运算符和逻辑表达式逻辑运算符运算符举例运算规则33
逻辑表达式:由逻辑运算符连接两个数,进行逻辑运算的式子。 表达式结果:“真”“假” 逻辑量:参与逻辑运算的量 逻辑值:逻辑量、逻辑表达式的运算结果 任何非“0”的逻辑量的逻辑值都为真第3章C语言流程控制 逻辑表达式:由逻辑运算符连接两个数,进行逻辑运算的34 写出下面各逻辑表达式的值。设a=3,b=4,c=5;1.a+b>c&&b==c2.a||b+c&&b-c3.!(a>b)&&!c||14.!(x=a)&&(y=b)&&05.!(a+b)+c-1&&b+c/21. 02. 13. 14. 05. 1第3章C语言流程控制 写出下面各逻辑表达式的值。1. 0第3章C语言流程控制353.4.3if语句与switch语句 if,英语中其义有“如果”的意思。那么就来研究C语言中的“如果”。1.if语句 格式:if(表达式) { 语句组;
}
流程图:如果表达式的值为真,就语句组中的语句;如果不为真,就执行语句组后的语句表达式语句组真假第3章C语言流程控制3.4.3if语句与switch语句 if,英语中其362.在if语句中添加else子句 格式:if(表达式) { 语句组1;
}
else
{ 语句组2;
}
如果表达式的值为真,就执行语句组1;如果不为真,就执行语句组2。流程图:表达式语句组1语句组2真假第3章C语言流程控制2.在if语句中添加else子句流程图:表达式语句组1语句373.多重选择elseif格式:if(表达式1)
语句组1;
elseif(表达式2)
语句组2;
elseif(表达式3)
语句组3; ···
else
语句组n;表达式1语句组1真假表达式2表达式3语句组n语句组3语句组2假假真真流程图:当表达式1为真的时候则执行语句组1,否则的话,将判断表达式2的真假,表达式2为真,则执行语句组2···依次这样判断。第3章C语言流程控制3.多重选择elseif表达式1语句组1真假表达式2表达式384.if语句的嵌套
在if语句的语句组中又包含一个或多个if语句称为if语句的嵌套 如:if(表达式1) { if(表达式2) {语句组;} } if的多重嵌套时,得注意if和else的搭配,写法要得当!
第3章C语言流程控制4.if语句的嵌套第3章C语言流程控制39if语句实现多分支时,需要嵌套的if语句层数较多,程序冗长,可读性低。因此可用switch语句来处理多分支情况。
switch(表达式) {
case常量表达式1:语句组1;
case常量表达式2:语句组2;
…
case
常量表达式n:语句组n;
default:语句组n+1; }第3章C语言流程控制if语句实现多分支时,需要嵌套的if语句层数40switch说明:switch括号内的表达式任意,值和哪个case后的常量表达式匹配,就执行后面的语句,没有匹配的,就执行default后面的,default可省略。每个case后常量表达式的值必须不一样,case和default的顺序不影响结果。执行完一个case后,程序流程转移到下一个case,直到运行完全或遇见break语句,并非直接跳出。多个case可以共用一个执行语句。第3章C语言流程控制switch说明:switch括号内的表达式任意,值和哪个c41例:输入两个实数,按照代数值由小到大的顺序输出这两个数。满足if条件就交换a,b的值第3章C语言流程控制例:输入两个实数,按照代数值由小到大的顺序输出这两个数。满足42例:输入三个实数,编程找出其中最大的一个并输出探究唯一的三目运算符第3章C语言流程控制例:输入三个实数,编程找出其中最大的一个并输出探究唯一的三目43三目运算符 一般形式:
表达式1?表达式2:表达式3 其执行顺序为:先求解表达式1,若为真(非0),则求解表达式2,并把表达式2的值作为整个条件表达式的值。若表达式1为假(0),则求解表达式3,并把表达式3的值作为整个条件表达式的值。注意点:条件运算符的优先级别高于赋值运算符,但是比关系运算符和算术运算符要低。条件运算符的结合方向为“自右向左”条件表达式中的表达式2和表达式3可以是任意的表达式。表达式1与表达式2和表达式3的类型也可以不同。第3章C语言流程控制三目运算符 一般形式:注意点:条件运算符的优先级别高于赋值44编写程序:编写一程序,从键盘上输入x的值,根据上面的函数,求出y的值。语句组中只有一句,花括号可以省略。第3章C语言流程控制编写程序:编写一程序,从键盘上输入x的值语句组453.5循环结构程序设计while循环与自增自减运算符do···while语句for语句逗号运算符和逗号表达式第3章C语言流程控制3.5循环结构程序设计while循环与自增自减运算符第3章C463.5.1while循环与自增自减 while语句用来实现“当型”循环结构。 其一般形式:
while(表达式) {
语句组; }
在语句组中必须包含能改变表达式的值来使表达式的值最终变为假,否则循环永远不会中止第3章C语言流程控制3.5.1while循环与自增自减 while语句用来实47 例:使用while循环来求“1+2+3+…+100”的值运行结果:循环条件i为循环变量循环变量增值循环体第3章C语言流程控制 例:使用while循环来求“1+2+3+…+100”的值运48i=1i≤100sum+=ii++真假流程图如下:循环变量初始化i=1判断表达式i≤100是否成立成立就执行循环体不成立就执行循环体后面的语句(循环体未执行)执行循环体后,就再从第一步往下进行判断,直至为假就退出循环循环体i++使i每次增1sum+=i进行累加第3章C语言流程控制i=1i≤100sum+=i真假流程图如下:循环变量初始化i49
自增运算符“++”,其作用使变量的值增1.与其相对的还有自减运算符“--”,其作用使变量的值减1。 自增自减运算符为单目运算符,所以仅需1个变量。注意,自增自减只能用于变量,不能用于常量或表达式第3章C语言流程控制 第3章C语言流程控制50自增、自减运算符的使用有两种方式: 前缀模式:++变量,--变量。(在使用变量之前,先使变量的值加(减)1) 后缀模式:变量++,变量--。(在使用变量之后,使变量的值加(减)1) 在用自增、自减运算符时,易使表达式产生不正确的地方,尽量不用第3章C语言流程控制自增、自减运算符的使用有两种方式:第3章C语言流程控制513.5.2do···while语句
do···while循环先执行循环体语句,然后再判断while后面的条件是否成立。当表达式为真,则返回重新执行循环体语句,如此反复,直到while后面的表达式为假才结束循环 一般形式为:
do {
循环体语句组; }while(表达式);此处分号一定不能少第3章C语言流程控制3.5.2do···while语句 一般形式为:此处52用while和do···while分别求1到100的累加和while循环do···while循环对比:while循环先判断条件,成立则执行循环体
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度绿色生态农业用地出售协议书
- 2025年度男方悔改夫妻关系重建合同
- 二零二五年度员工薪酬保密与公司员工激励计划合同
- 个人车库出租合同书(含智能停车管理系统)
- 二零二五年度施工安全责任追究协议
- 二零二五年度成都社保局劳动合同劳动者子女教育支持合同
- 二零二五年度房屋租赁合同模板(含租赁房屋使用规范)
- 二零二五年度高速公路护栏安装与智能防冻除雪系统合同
- 二零二五年度培训机构学员退学退费协议书模板
- 2025年度草莓苗种植基地与科研机构合作研发合同
- 《AutoCAD 中文版实例教程(AutoCAD 2020) (微课版)(第 2 版)》课件 马连志 第1、2章 AutoCAD 2020 中文版入门、绘图设置
- 小学一年级硬笔书法入门班教学课件
- 社会工作-心理学视角下的校园欺凌认知与对策研究论文
- 面神经炎临床路径
- 月光奏鸣曲全面版
- 2022年湖北省中小学教师高级职称专业水平能力测试模拟题
- 数控车床操作培训课件
- 工程经济学-邵颖红-第五版-课后作业
- 第三方检查应对措施方案
- 2020年财产保险公司部门职责和岗位说明书
- TBA19利乐灌装机操作手册
评论
0/150
提交评论