第三章顺序程序设计 ★结构化程序设计 心基本思想:任何程序都可以用三种基本结构表示,限 制使用无条件转移语旬(goto) 今结构化程序:由三种基本结构反复嵌套构成的程序叫 优点:结构清晰,易读,提高程序设计质量和效率 ★三种基本结构 今顺序结构 A AB 流程图 B N-S图
第三章 顺序程序设计 结构化程序设计 ❖基本思想:任何程序都可以用三种基本结构表示,限 制使用无条件转移语句(goto) ❖结构化程序:由三种基本结构反复嵌套构成的程序叫 ~ ❖优点:结构清晰,易读,提高程序设计质量和效率 三种基本结构 ❖顺序结构 A B A B 流程图 N-S图
◇选择结构 真 假 P 真 假 二分支选择结构 A B A B k kkn kk1 kk2 kki 多分支选择结构A1 A2 An
P A B 真 假 P A B 真 假 ❖选择结构 k A1 A2 Ai An k=k2 k=k1 k=kn k=ki ... ... ⚫二分支选择结构 ⚫多分支选择结构
循环结构 假 当P为真 当型循环结构 A ●直到型循环结构 A A 假 直到P为真 P 真 注:ABA1...An可以是一个简单语句,也可以是一个基本结构
❖循环结构 ⚫当型循环结构 ⚫直到型循环结构 P A 假 真 当P为真 A A P 真 假 A 直到P为真 注:A,B,A1….An可以是一个简单语句,也可以是一个基本结构
▲C语言无1O语旬,∥O操作由函数实现 ▲# include §数据输出 ★字符输出函数 格式: putchar(c 参数:c为字符常量、变量或表达式 功能:把字符c输出到显示器上 返值:正常,为显示的代码值;出错,为EOF(-1)
格式: putchar( c ) 参数: c为字符常量、变量或表达式 功能:把字符c输出到显示器上 返值:正常,为显示的代码值;出错,为EOF(-1) C语言无I/O语句,I/O操作由函数实现 #include §3.1 数据输出 字符输出函数
例 Ch3 Lc /ch31.c*/ #include maint int c char a; 65:a=B putchar(c); putchar('In); putchar(a) 运行结果:A B
/*ch3_1.c*/ #include main() { int c; char a; c=65; a='B'; putchar(c); putchar('\n'); putchar(a); } 运行结果:A B 例
★格式输出函数 格式: printf(“格式控制串”,输出表) 功能:按指定格式向显示器输出数据 返值:正常,返回输出字节数;出错,返回EOF(-1) ☆输出表:要输出的数据(可以没有,多个时以“,”分 隔 ◆格式控制串:包含两种信息 ●格式说明 修饰符] ,用于指定输出格式 ●普通字符或转义序列:原样输出 ◆格式字符
格式:printf(“格式控制串”,输出表) 功能:按指定格式向显示器输出数据 返值:正常,返回输出字节数;出错,返回EOF(-1) 格式输出函数 ❖输出表:要输出的数据(可以没有,多个时以“,”分 隔) ❖格式控制串:包含两种信息 ⚫格式说明: %[修饰符]格式字符 ,用于指定输出格式 ⚫普通字符或转义序列:原样输出 ❖格式字符
格式字符: di十进制整数 int a=567: printf(/od,a) xX十六进制无符号整数inta=25 S printf(%x2) 八进制无符号整数inta=65 printf((9o0a) 不带符号 例main∩) 单一字符 例inta=3.b=4 字符串 printf(%od %dn, a, b) eE指数形式 printf(a=%d, b=%dn,a, b);,b) f小数形式浮 ge和件较短 6%百分号本身 printi(90%0); ●说明 111111111111111165535 ◆格式字符要用小写 ◆格式字符与输出项个数应相同,按先后顺序一一对应 格式字苻与输出项类型不一致,自动按指定格式 输出
d,i x,X o u c s e,E f g %% 格式字符: 十六进制无符号整数 不带符号十进制整数 十进制整数 指数形式浮点小数 单一字符 字符串 八进制无符号整数 小数形式浮点小数 e和f中较短一种 百分号本身 int a=567;printf ( “%d”,a); int a=255;printf(“%x”,a); int a=65;printf(“%o”,a); int a=567;printf(“%u”,a); char a=65;printf(“%c”,a); printf(“%s”,“ABC”); float a=567.789;printf(“%e”,a); float a=567.789;printf(“%f”,a); float a=567.789;printf(“%g”,a); printf(“%%”); 567 ff 101 567 A ABC 5.677890e+02 567.789000 567.789 % ⚫说明 ◆格式字符要用小写 ◆格式字符与输出项个数应相同,按先后顺序一一对应 ◆输出转换:格式字符与输出项类型不一致,自动按指定格式 输出 例 main() { unsigned int u=65535; printf(”u=%d\n",u); } 输出结果:u=-1 例 int a=3,b=4; printf(“%d %d\n”,a,b); printf(“a=%d , b=%d\n”,a,b); 例 int a=3,b=4; printf(“%d %d\n”,a,b); printf(“a=%d , b=%d\n”,a,b); 输出结果: 3 4 a=3, b=4 11 11 11 11 11 11 11 11 65535
心附加格式说明符(修饰符) 修饰 能 m输出数据域宽数据长度<m左补空格;否则按实际输出 对实数指定小数点后位数(四舍五入) n 对字符串指定实际输出位数 输出数据在域内左对齐(缺省右对齐) 指定在有符号数的正数前显示正号(+) 0输出数值时指定左面不使用的空位置自动填0 在八进制和十六进制数前显示前导0.0x 在d,O,X,u前,指定输出精度为long型 在e,f,g前,指定输出精度为 double型
❖附加格式说明符(修饰符) .n 对实数,指定小数点后位数(四舍五入) 对字符串,指定实际输出位数 修饰符 功 能 m 输出数据域宽,数据长度<m,左补空格;否则按实际输出 - 输出数据在域内左对齐(缺省右对齐) 指定在有符号数的正数前显示正号(+) + 0 输出数值时指定左面不使用的空位置自动填0 # 在八进制和十六进制数前显示前导0,0x 在d,o,x,u前,指定输出精度为long型 在e,f,g前,指定输出精度为double型 l
例mn 例inta=1234 float f123. 456 char ch= a printf(%8d, %02d\n, a, a) printf(" %of, %8f, %8.1f, %.2f,%.2ein',f, f, f, f,f) printf("%03cin',ch) 1234.1234 结果:123456000,123456000.123.5,12346,1.23e+02 a 例 static char al]=“ Hello world! printf(" %osn%15sIn%10. 5sn%2.5sIn%.3sln', a, a, a, a, a) 运行结果: Hello,word! Hello world Hello Hello Hel
例 int a=1234; float f=123.456; char ch=‘a’; printf(“%8d,%2d\n”,a,a); printf(“%f,%8f,%8.1f,%.2f,%.2e\n”,f,f,f,f,f); printf(“%3c\n”,ch); 运行 1234,1234 结果: 123.456000,123.456000, 123.5,123.46,1.23e+02 a 例 static char a[]=“Hello,world!” printf(“%s\n%15s\n%10.5s\n%2.5s\n%.3s\n”,a,a,a,a,a); 运行结果:Hello,world! Hello,world! Hello Hello Hel 例 m.n
例 例inta=1234 float f123.456 static char c[=Hello, world printf(" %8d, %, a, a) printf(010.2f,%-10.1fn3,f,f); printf(%105s, %0-10.3sn',c, c) 运行结果:1234,1234 123.46.123.5 Hello. hel
例 int a=1234; float f=123.456; static char c[]=“Hello,world!”; printf(“%8d,%-8d\n”,a,a); printf(“%10.2f,%-10.1f\n”,f,f); printf(“%10.5s,%-10.3s\n”,c,c); 运行结果: 1234,1234 123.46,123.5 Hello,Hel 例 -