《c程序的流程控制管理概述》由会员分享,可在线阅读,更多相关《c程序的流程控制管理概述(101页珍藏版)》请在金锄头文库上搜索。
1、第3章 C程序的流程控制,3.1 C语句 3.2 赋值语句 3.3 输入输出 3.4 顺序结构程序设计 3.5 选择结构程序设计 3.6 循环结构程序设计,C语句分为5类:,控制语句:完成一定的控制功能。 选择语句:ifelse、switch 循环语句:for、while、dowhile 结束本次循环语句:continue 中止执行switch或循环语句:break 转向语句:goto 从函数返回语句:return,3.1 C语句,函数调用语句:由一个函数调用加一个分号构成。 例如:printf(“This is a C statement. “);,表达式语句:由一个表达式加一个分号构成。
2、例如: a=3; 空语句:只有一个分号(;)的语句。,复合语句:用 括起来的一些语句。 例如: z=x+y; t=z/100; printf(“%f“,t); ,3.2 赋值语句,1.赋值运算符:=、+=、-=、*=、/=、%= 等 作用:将一个数据赋给一个变量。 2.赋值表达式 形式: 变量=表达式 将表达式的值赋给变量 例如:a=5 b=a*4, 变量(+、-、*、/、%)=表达式 将变量与表达式的值作相应运算后再赋给变量。 例如:x-=8 等价于 x=x-8 y%=a+3 等价于 y=y%(a+3) 3.赋值表达式的值:等于左边变量的值。 4.赋值表达式后加分号构成赋值语句。,写出下面表
3、达式运算后a的值 (a=3*5)=4*3,a=3*5 a的值为,15,a=4 *3 a的值为,12,a*=a a的值为1212144 a-=144 a的值为1441440 a+=0 a的值为 0,写出下面表达式运算后a的值,设原来a=12,a已定义为整型变量。 a+=a-=a*=a,字符输出函数: putchar 字符输入函数: getchar 格式输出函数: printf 格式输入函数: scanf,C语言无I/O语句,I/O操作由函数实现 #include ,头文件,3.3 输入输出,格式:printf(“格式控制“,输出表列) 功能:按指定格式向显示器输出数据,printf函数(格式输出
4、函数),输出表列:要输出的数据(可以没有,多个时以“,”分隔) 格式控制: 格式说明:%修饰符格式字符,用于指定输出格式 转义字符: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 %g f、e格式中较短者忽略0 c %c
5、 %mc 输出一个字符 s %s %ms %-ms %m.ns %-m.ns 输出字符串 % % 输出“%” 其中:l 用于长整型数 n 小数位数或截取的字符个数 m 输出域的宽度 - 域内左对齐,1%d以十进制整数形式输出。 例: #include void main( ) int a=123; long b=123456; printf(“%d,%5d,%-5d,%2dn“,a,a,a,a); printf(“b=%ld“,b); ,运行结果: 123,123,123,123 b=123456,2%f以小数形式输出单精度和双精度实数。 整数部分全部输出,并输出6位小数。 例3.10:按指定
6、的小数位数输出实数 #include void main( ) float d=12.345; printf(“d=%f,d=%.2f,d=%10.2f“,d,d,d); ,运行结果: d=12.345000,d=12.35,d=12.35,3%c输出一个字符。 例: #include void main( ) char c=a; printf(“%c“,c); ,运行结果: a,4%s输出一个字符串。 例: #include void main( ) printf(“%sn“,“CHINA“); printf(“%3s,%7.2s,%-5.3s“,“CHINA“, “CHINA“, “CHI
7、NA“); ,运行结果: CHINA CHINA, CH, CHI,3.3.2 scanf函数(格式输入函数),格式:scanf(“格式控制“,地址表列) 功能:按指定格式从键盘输入数据,存入地址 表列指定的存储单元中,并按回车键结束,地址表列:变量的地址,用取地址运算符&,例:scanf(“%d“, 输入:10 则 10 a,scanf 格式字符,格式字符 使用形式 功能说明 d %d %md %ld %hd 带符号的十进制整数 o %o %mo %lo %ho 无符号的八进制整数 x,X %x %mx %lx %hx 无符号的十六进制整数 u %u %lu 无符号的十进制整数 f %f %
8、mf %lf 小数形式的单、双精度数 e,E %e %le 同上 g,G %g 同上 c %c 输入单字符 s %s 输入字符串 * %* 不赋给相应变量 其中:m数据输入域的宽度 h用于短整型数据 l 用于长整型或double型数据,输入分隔符的指定:一般以空格、TAB或回车键作为分隔符,例3.11:从键盘输入两个整数,求两数之和。 #include void main( ) int a,b; scanf(“%d,%d“, ,输入 3,5 输出 8,例3: scanf(“a=%d,b=%d,c=%d“, 输入 a=12,b=24,c=36 则 12a, 24 b, 36c,例1: scanf
9、(“%d,%d“, 输入 3,4 则 3a, 4 b,例2: scanf(“%d:%d:%d“, 输入 12:30:45 则 12 a, 30 b, 45 c,“格式控制”中出现的普通字符,原样输入。,说明: 用“%c“格式符时,空格和转义字符作为有效字符输入,例:scanf(“%c%c%c“, 若输入 abc 则 ac1, c2, b c3,输入数据时,遇以下情况认为该数据结束: 遇空格、TAB、或回车 遇指定的宽度结束 遇非法输入,例: scanf(“%d%c%f“, 若输入 1234a123o.26 则 1234 a, a b, 123 c,格式:putchar(c) 参数:c为字符常量
10、、变量或表达式。 功能:将字符输出到显示器上。,3.3.3 字符数据的输入输出 一、 putchar函数(字符输出函数),#include void main( ) char a,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);,运行结果: B O Y,格式:getchar( ) 功能:从键盘输入一个字符。,3.3.4 getchar函数(字符输入函数 ),例3.14
11、:使用getchar( )函数输入字符,#include void main( ) char c; c=getchar( ); putchar(c); ,运行情况: a a,3.4 顺序结构程序设计,#include #define PI 3.14159 void main( ) float r,area,v; printf(“Input r: ”); /*人机交互,输出提示信息*/ scanf(“%f“, ,例3.17: 输入半径,求圆的面积和球的体积,Input r:3 area= 28.27 v=113.10,运行情况:,3.5.1 关系表达式,1.关系运算符:、=、= =、!= 作用:
12、进行比较运算。 2.关系表达式 形式:关系运算符 如:a=0、x= =0 3.优先级 = (高) = = != (低) 算术运算符 关系运算符 赋值运算符 高,低,3.5 选择结构程序设计,5.举例: int a=3,b=2,c=1,d,f; 则: ab 表达式值等于_ (ab)= =c 表达式值等于_ b+cb d值等于_ f=abc f值等于_,1,1,0,1,0,4.关系表达式的值:如果表达式成立,值为 1,表示“真”;否则,值为 0,表示“假” 。,#include void main( ) int a,b,c; a=3;b=2;c=1; printf(“%d “, ab); prin
13、tf(“%d “, (ab)=c); printf(“%d “, b+ca); printf(“%dn“, abc); ,例3.21 关系表达式的应用,运行结果: 1 1 0 1,3.5.2 逻辑表达式,1.逻辑运算符 ! 逻辑非 & 逻辑与 | 逻辑或 2.逻辑表达式 如:x=0&x=9 (数学不等式0x9) 数学不等式0x9用0=x=9表示,3.表达式的值:1 或 0 。,逻辑运算的真值表:,a b !a !b a&b a|b 非0 非0 0 0 1 1 非0 0 0 1 0 1 0 非0 1 0 0 1 0 0 1 1 0 0,C语言中,运算量: 0代表“假”,非0代表“真”, 运算结果
14、: 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
15、的值,/结果m=0,n=1,例: a=1;b=2;c=3;d=4;m=1;n=1; (m=ab)&(n=cd),1.简单分支结构 格式:if (表达式) 语句 执行过程:先计算表达式的值,若其值0,则执行后面的语句;否则,不执行。,例:if (xy) printf(“%d“,x);,3.5.3 if 语句,说明:,语句可以是复合语句 if (x) if (x!=0),例3.22:输入两个实数,按由小到大的顺序输出。,#include void main( ) float a,b,t; printf(“请输入两个实数:“); scanf(“%f,%f“, ,运行情况: 请输入两个实数:7.1,5.1 5.10, 7.10,运行情况: 请输入两个实数:5.1,7.1 5.10, 7.10,