您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 第3章C语言流程控制
第3章C语言流程控制本章重点•格式化输入输出函数•C语言中的顺序、分支和循环程序的设计方法3.1格式化输入输出函数•printf()函数•scanf()函数3.11printf()函数C标准库函数中提供了一些输入输出函数,如前面遇到的printf()函数和scanf()函数,它们非C关键词,而是函数名而已,可以自己编写输入输出函数。printf()函数和scanf()函数在系统文件“stdio.h”中声明,所以在程序的开始部分要使用编译预处理命令“#includestdio.h”。在日常生活中,我们要经常将华氏温度转换成摄氏温度,其转换公式如下:式中:c表示摄氏温度,f表示华氏温度。运行结果:9325fc如:printf()函数的作用就是输出。对比:函数语句:printf(fahr=%f,celsius=%f\n,fahr,celsius);输出结果:fahr=100.000000,celsius=37.777778得出:双引号里,第一个%f换成了fahr的值,第二个%f换成了celsius的值,并且以单精度数据形式显示。printf()函数一般的调用格式为:printf(格式控制字符串,输出参数1,输出参数2,…,输出参数n);“格式控制字符串”是用双引号括起来的字符串,也称作“转换控制字符串”,包括两种意思。•普通字符普通字符即需要原样输出字符。如:printf(fahr=%f,celsius=%f\n,fahr,celsius);fahr=100.000000,celsius=37.777778双引号内,两个%f变化除外,其余均无改变•格式说明格式说明由“%”和格式字符组成,如%d、%f等,它的作用是将输出的数据转换成指定的格式输出。格式说明输出%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)以小数点形式输出浮点数、十进制记数法字符说明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则在右侧补空格,如果nm,则m自动取n值,即保证n个字符正常输出。4.对于%m.nf,指定输出的数据共占m列,其中n位小数。如果数值长度小于m,则左端补空格。%-m.nf与%m.nf一样,只是使输出的数值向左端靠,右端补空格。3.1.2scanf()函数依旧探讨华氏温度转换成摄氏温度,上一节中,华氏温度为一定值,如果根据用户来输入相应的数据,求摄氏温度,那该如何进行相应的输入呢?运行结果:Pleaseinputfahr:140fahr=140.000000,celsius=60.000000scanf()函数作用,输入数值例:scanf函数的作用是输入数据,其基本格式为:scanf(格式控制,地址列表)“格式控制”的含义和printf函数的格式控制。格式说明也是以%开始,以一个格式字符结束,中间可以插入一些普通字符,普通字符同样按原样输出。格式说明符意义%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域宽指定输入数据所占的列宽,应为一个正整数*表示本输入项在读入后不赋给相应的变量如: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(因为遇见空白字符)1.scanf格式控制中的普通字符必须按原样输入,地址列表中必须为地址,在变量前加上“取地址运算符”2.读取数据的时候是以指定域宽或者第一个空白字符处为终止(最先达到者)3.若第一个或前几个连续为空白字符、制表符和换行符,都将跳过这些字符4.注意%s格式说明符的用法要点深度解析:结合要点1,了解地址的含义结合要点2、3,分析多数据输入情况结合要点4,掌握%s的用法3.2程序流程图流程图是用一些图框来表示各种操作。用流程图来表示算法,直观形象,易于理解。美国国家标准化协会ANSI规定了一些常用的流程图符号。菱形框,是对一个给定的条件进行判断,根据给定的条件是否成立来决定如何执行其后的操作。它有一个入口,两个出口连接点,是用于将画在不同地方的流程线连接起来。在流程图中,编号相同的连接点表示这些点是互相连接在一起的注释框,不是流程图中的必要部分,不反应流程和操作,只是为了对流程图中某些框的操作作必要的补充说明,以便于人们更好的理解流程图例:求一数值的绝对值。数学分析:若此数值本身就不小于0,就是其本身,反之,为其相反数。?0x输出X输出-xX满足条件不满足条件流程图表示:三种基本结构: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.3顺序结构程序设计•算术运算符•算术表达式•赋值表达式例:求一元二次方程的两根。运行结果:从主函数入口开始执行,定义变量,输入数值,求解方程的解,这都是按照代码的一步一步往下实现的。3.3.1算术运算符5种基本运算符:1).+(加法或者正直运算符)2).̶(减法或者负值运算符)3).*(乘法运算符)4)./(除法运算符)5).%(求余运算符)注意:①加法和减法运算符同于数学上②乘法在c语言中用“*”,而不用“×”③除法在c语言中是“/”,而不用“÷”④使用“/”时,若除数和被除数都为整数,则商也是整数,若参与运算的有负数,3.3.2算术表达式算术表达式即用算术运算符和括号将运算对象连接起来,符合C语法规则的式子算术运算时是按照优先级进行的,若优先级相同,则按照结合方向进行计算,并且每一个表达式都会有一个确定的值。3.3.3赋值表达式由赋值运算符将一个变量和一个表达式连接起来的式子称为赋值表达式。其一般形式为:<变量><赋值运算符><表达式>计算过程是:先计算赋值运算符右侧的“表达式”的值,然后将这个值赋值给左边的变量。多个赋值表达式共存则按结合性“自右而左”进行一步一步分别赋值。常用的复合赋值运算符a+=y等价于a=a+yb-=y等价于b=b-yc*=y等价于c=c*yd/=y等价于d=d/ye%=y等价于e=e%yy可以是常量、变量以及复杂的表达式赋值运算符“=”之前加上其他运算符,就构成复合赋值运算符。编写程序:从键盘上输入三角形的三边,根据下面的公式求出三角形的面积area。假设输入a、b和c三边的边长能够组成一个三角形。))()((csbsassarea程序为:3.4选择结构程序设计•关系运算符和关系表达式•逻辑运算符和逻辑表达式•if语句与switch例:一元二次方程根的情况。运行结果:此程序就体现了,根据不同的情况,有不同的结果,就达到了一种选择的目的。3.4.1关系运算符和关系表达式关系运算符运算符含义小于=小于和等于大于=大于或等于==等于!=不等于算术运算符关系运算符赋值运算符算术运算符:+-*/%关系运算符:==赋值运算符:==!=关系表达式:用关系运算符将两数连接起来,进行关系运算。表达式结果为逻辑值,即“真”或“假”若表达式成立:值为“1”表达式不成立:值为“0”。例:a=2011,b=2010;a==b;因为a,b值不想等,所以表达式值为0。3.4.2逻辑运算符和逻辑表达式逻辑运算符运算符举例运算规则&&(逻辑与)a&&b若a、b同时为真,a&&b为真,除此之外都为假||(逻辑或)a||b若a、b之一为真,则a||b为真!(逻辑非)!a若a为真。则!a为假,反之,若a为假,则!a为真优先级:!算术运算负关系运算符逻辑运算符&&与||为双目运算符,需要两个运算量!为单目运算符,只需要一个逻辑表达式:由逻辑运算符连接两个数,进行逻辑运算的式子。表达式结果:“真”“假”逻辑量:参与逻辑运算的量逻辑值:逻辑量、逻辑表达式的运算结果任何非“0”的逻辑量的逻辑值都为真写出下面各逻辑表达式的值。设a=3,b=4,c=5;1.a+bc&&b==c2.a||b+c&&b-c3.!(ab)&&!c||14.!(x=a)&&(y=b)&&05.!(a+b)+c-1&&b+c/21.02.13.14.05.13.4.3if语句与switch语句if,英语中其义有“如果”的意思。那么就来研究C语言中的“如果”。1.if语句格式:if(表达式){语句组;}流程图:如果表达式的值为真,就语句组中的语句;如果不为真,就执行语句组后的语句表达式语句组真假2.在if语句中添加else子句格式:if(表达式){语句组1;}else{语句组2;}如果表达式的值为真,就执行语句组1;如果不为真,就执行语句组2。流程图:表达式语句组1语句组2真假3.多重选择elseif格式:if(表达式1)语句组1;elseif(表达式2)语句组2;elseif(表达式3)语句组3;···else语句组n;表达式1语句组1真假表达式2表达式3语句组n语句组3语句组2假假真真流程图:当表达式1为真的时候则执行语句组1,否则的话,将判断表达式2的真假,表达式2为真,则执行语句组2···依次这样判断。4.if语句的嵌套在if语句的语句组中又包含一个或多个if语句称
本文标题:第3章C语言流程控制
链接地址:https://www.777doc.com/doc-654929 .html