您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 第3章C程序的流程控制
第3章C程序的流程控制3.1C语句3.2赋值语句3.3输入输出3.4顺序结构程序设计3.5选择结构程序设计3.6循环结构程序设计•C语句分为5类:①控制语句:完成一定的控制功能。选择语句:if…else、switch循环语句:for、while、do…while结束本次循环语句:continue中止执行switch或循环语句:break转向语句:goto从函数返回语句:return3.1C语句②函数调用语句:由一个函数调用加一个分号构成。例如:printf(ThisisaCstatement.);③表达式语句:由一个表达式加一个分号构成。例如:a=3;④空语句:只有一个分号(;)的语句。⑤复合语句:用{}括起来的一些语句。例如:{z=x+y;t=z/100;printf(%f,t);}3.2赋值语句1.赋值运算符:=、+=、-=、*=、/=、%=等作用:将一个数据赋给一个变量。2.赋值表达式形式:①变量=表达式将表达式的值赋给变量例如:a=5b=a*4②变量(+、-、*、/、%)=表达式将变量与表达式的值作相应运算后再赋给变量。例如:x-=8等价于x=x-8y%=a+3等价于y=y%(a+3)3.赋值表达式的值:等于左边变量的值。4.赋值表达式后加分号构成赋值语句。写出下面表达式运算后a的值(a=3*5)=4*3a=3*5a的值为15a=4*3a的值为12a*=aa的值为12×12=144a-=144a的值为144-144=0a+=0a的值为0写出下面表达式运算后a的值,设原来a=12,a已定义为整型变量。a+=a-=a*=a•字符输出函数:putchar•字符输入函数:getchar格式输出函数:printf格式输入函数:scanfC语言无I/O语句,I/O操作由函数实现#includestdio.h头文件3.3输入输出格式:printf(格式控制,输出表列)功能:按指定格式向显示器输出数据printf函数(格式输出函数)•输出表列:要输出的数据(可以没有,多个时以“,”分隔)•格式控制:–格式说明:%[修饰符]格式字符,用于指定输出格式–转义字符:\n,\t–普通字符:原样输出3.3.1格式输出printf格式字符格式字符使用形式功能说明d%d%md%ld%mld带符号的十进制整数o%o%mo%lo无符号的八进制整数x,X%x%mx%lx无符号的十六进制整数u%u%lu无符号的十进制整数f%f%m.nf%-m.nf小数形式的单、双精度数e,E%e%m.ne%-m.ne指数形式的单、双精度数g,G%gf、e格式中较短者忽略0c%c%mc输出一个字符s%s%ms%-ms%m.ns%-m.ns输出字符串%%%输出“%”其中:l—用于长整型数n—小数位数或截取的字符个数m—输出域的宽度-—域内左对齐1.%d──以十进制整数形式输出。例:#includestdio.hvoidmain(){inta=123;longb=123456;printf(%d,%5d,%-5d,%2d\n,a,a,a,a);printf(b=%ld,b);}运行结果:123,□□123,123□□,123b=1234562.%f──以小数形式输出单精度和双精度实数。整数部分全部输出,并输出6位小数。例3.10:按指定的小数位数输出实数#includestdio.hvoidmain(){floatd=12.345;printf(d=%f,d=%.2f,d=%10.2f,d,d,d);}运行结果:d=12.345000,d=12.35,d=□□□□□12.353.%c──输出一个字符。例:#includestdio.hvoidmain(){charc='a';printf(%c,c);}运行结果:a4.%s──输出一个字符串。例:#includestdio.hvoidmain(){printf(%s\n,CHINA);printf(%3s,%7.2s,%-5.3s,CHINA,CHINA,CHINA);}运行结果:CHINACHINA,□□□□□CH,CHI□□3.3.2scanf函数(格式输入函数)格式:scanf(格式控制,地址表列)功能:按指定格式从键盘输入数据,存入地址表列指定的存储单元中,并按回车键结束•地址表列:变量的地址,用取地址运算符&例:scanf(%d,&a);输入:10则10ascanf格式字符格式字符使用形式功能说明d%d%md%ld%hd带符号的十进制整数o%o%mo%lo%ho无符号的八进制整数x,X%x%mx%lx%hx无符号的十六进制整数u%u%lu无符号的十进制整数f%f%mf%lf小数形式的单、双精度数e,E%e%le同上g,G%g同上c%c输入单字符s%s输入字符串*%*不赋给相应变量其中:m—数据输入域的宽度h—用于短整型数据l—用于长整型或double型数据•输入分隔符的指定:一般以空格、TAB或回车键作为分隔符例3.11:从键盘输入两个整数,求两数之和。#includestdio.hvoidmain(){inta,b;scanf(%d,%d,&a,&b);printf(%d,a+b);}输入3,5输出8例3:scanf(a=%d,b=%d,c=%d,&a,&b,&c);输入a=12,b=24,c=36则12a,24b,36c例1:scanf(%d,%d,&a,&b);输入3,4则3a,4b例2:scanf(%d:%d:%d,&a,&b,&c);输入12:30:45则12a,30b,45c•“格式控制”中出现的普通字符,原样输入。•说明:–用%c格式符时,空格和转义字符作为有效字符输入例:scanf(%c%c%c,&c1,&c2,&c3);若输入a□b□c则ac1,'□'c2,bc3–输入数据时,遇以下情况认为该数据结束:遇空格、TAB、或回车遇指定的宽度结束遇非法输入例:scanf(%d%c%f,&a,&b,&c);若输入1234a123o.26则1234a,‘a’b,123c格式:putchar(c)参数:c为字符常量、变量或表达式。功能:将字符输出到显示器上。3.3.3字符数据的输入输出一、putchar函数(字符输出函数)#includestdio.hvoidmain(){chara,b,c;a='B';b='O';c='Y';putchar(a);putchar(b);putchar(c);putchar('\n');}运行结果:BOY例:putchar(a);putchar('\n');putchar(b);putchar('\n');putchar(c);运行结果:BOY格式:getchar()功能:从键盘输入一个字符。3.3.4getchar函数(字符输入函数)例3.14:使用getchar()函数输入字符#includestdio.hvoidmain(){charc;c=getchar();putchar(c);}运行情况:aa3.4顺序结构程序设计#includestdio.h#definePI3.14159voidmain(){floatr,area,v;printf(“Inputr:”);/*人机交互,输出提示信息*/scanf(%f,&r);area=PI*r*r;/*求圆的面积并将结果赋给area*/v=4.0/3*PI*r*r*r;/*求圆球的体积并赋给v*/printf(area=%6.2f\n,area);printf(v=%6.2f\n,v);}例3.17:输入半径,求圆的面积和球的体积Inputr:3↙area=28.27v=113.10文件包含预处理命令变量定义运行情况:3.5.1关系表达式1.关系运算符:、=、、=、==、!=作用:进行比较运算。2.关系表达式形式:表达式关系运算符表达式如:ab、x=0、x==03.优先级==(高)==!=(低)算术运算符关系运算符赋值运算符高低3.5选择结构程序设计5.举例:inta=3,b=2,c=1,d,f;则:ab表达式值等于______(ab)==c表达式值等于______b+ca表达式值等于______d=abd值等于_______f=abcf值等于_______11010算术运算符关系运算符赋值运算符高低4.关系表达式的值:如果表达式成立,值为1,表示“真”;否则,值为0,表示“假”。#includestdio.hvoidmain(){inta,b,c;a=3;b=2;c=1;printf(%d,ab);printf(%d,(ab)==c);printf(%d,b+ca);printf(%d\n,abc);}例3.21关系表达式的应用运行结果:11013.5.2逻辑表达式1.逻辑运算符!逻辑非&&逻辑与||逻辑或2.逻辑表达式如:x=0&&x=9(数学不等式0≤x≤9)数学不等式0≤x≤9用0=x=9表示3.表达式的值:1或0。逻辑运算的真值表:ab!a!ba&&ba||b非0非00011非0001010非01001001100C语言中,运算量:0代表“假”,非0代表“真”,运算结果:0代表“假”,1代表“真”。4.逻辑运算符的优先级优先级运算符高!算术运算符关系运算符&&||低赋值运算符逻辑表达式举例:53&&84-!0=1&&84-!0=1&&84-1=1&&83=1&&0=0优先级运算符高!算术运算符关系运算符&&||低赋值运算符5.短路特性:逻辑表达式求解时,并非所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符。例:a&&b&&c//只在a为真时,才判别b的值;只在a、b都为真时,才判别c的值例:a||b||c//只在a为假时,才判别b的值;只在a、b都为假时,才判别c的值//结果m=0,n=1优先级运算符高!算术运算符关系运算符&&||低赋值运算符例:a=1;b=2;c=3;d=4;m=1;n=1;(m=ab)&&(n=cd)1.简单分支结构–格式:if(表达式)语句–执行过程:先计算表达式的值,若其值≠0,则执行后面的语句;否则,不执行。表达式语句真(非0)假(0)例:if(xy)printf(%d,x);3.5.3if语句说明:语句可以是复合语句if(x)if(x!=0)例3.22:输入两个实数,按由小到大的顺序输出。#includestdio.hvoidmain(){floata,b,t;printf(请输入两个实数:);scanf(%f,%f,&a,&b);if(ab){t=a;a=b;b=t;}printf(%5.2f,%5.2f\n,a,b);}运行情况:请输入两个实数:7.1,5.15.10,7.10运行情况:请输入两个实数:5.1,7.15.10,7.10例3.23:输入三个整数,按由小到大排序并输出。#includestdio.hvoidmain(){inta,b,c,t;scanf(%d,%d,%d,&a,&b,&c);if(ab){t=a;a=b;b=t;}if(ac){t=a;a=c;c=t;}if(bc){t=b;b=c;c=t;}printf(%d,%d,%d\n,a,b,c);}运行情况:11,22,1811,18,22表达式语句1语句2真假2.双分支结构格式:if(表达式)语句1else语句2例:if(xy)max=x;elsemax=y;执行过程:先计算表达式的值,若≠0,则执行语句1,否则,执行语句2。例3.25输入三角形三条边长,求三角形面积。当输入的三条边长不能构成三角形时,输出“不能构成一个三角形”。#includestdio.h#includemath.hvoidmain(){floatx,y,z,s,area;printf(请输入三角形的三条边长:);scanf(%f,%f,%f,&x,&y,
本文标题:第3章C程序的流程控制
链接地址:https://www.777doc.com/doc-654927 .html