第4章顺序结构程序设计 为了让计算机处理各种数据,首先就应该把 源数据输入到计算机中;计算机处理结束后,再 将目标数据信息以人能够识别的方式输出。C语 言中的输入输出操作,是由C语言编译系统提供 的库函数来实现
第4章 顺序结构程序设计 为了让计算机处理各种数据,首先就应该把 源数据输入到计算机中;计算机处理结束后,再 将目标数据信息以人能够识别的方式输出。C语 言中的输入输出操作,是由C语言编译系统提供 的库函数来实现
41c语言语句 4.1.1控制语句 定义:完成一定功能的语句称为控制语句。C语言 有9种控制语句,如表4-1所示。P29 412表达语句 有一个表达式构成一个语句。 表达式语句构成:表达式十; 表达式分类:赋值语句、函数调用语句、空语句三 种基本类型 1、赋值语句 构成:赋值表达式十;如:s=9;是一个赋值语句
4.1 c语言语句 • 4.1.1 控制语句 • 定义:完成一定功能的语句称为控制语句。C语言 有9种控制语句,如表4-1所示。P29 • 4.1.2 表达语句 • 有一个表达式构成一个语句。 • 表达式语句构成:表达式+; • 表达式分类:赋值语句、函数调用语句、空语句三 种基本类型。 • 1、赋值语句 • 构成:赋值表达式+;如:s=9; 是一个赋值语句
函教调用语句 函数调用语句构成:函数调用表达式+; 例如: printi“ hello world!”) 3、空语句 空语句构成:; ·空语句作用:它不产生任何操作运算,只为形式上的语句,通常用到循环控 制结构中。 41.3特殊语句 除此之外,c语言还提供了一些其他的语句,例如复合语句等等。复合语 句定义 把多个语句用花括号括起来组成的语句称为复合语句。例如: X-VTZ a=b+c printf(" %od %,, x, a) }是一条复合语句。我们可以把它看成是一条语句。 注意:复合语句内的各条语句都必须以分号“;”结尾,在括号“}”外不能 加分号
• 2、函数调用语句 • 函数调用语句构成:函数调用表达式+; • 例如:printf(“hello world!”); • 3、空语句 • 空语句构成:; • 空语句作用:它不产生任何操作运算,只为形式上的语句,通常用到循环控 制结构中。 • 4.1.3 特殊语句 • 除此之外,c语言还提供了一些其他的语句,例如复合语句等等。复合语 句定义: • 把多个语句用花括号括起来组成的语句称为复合语句。例如: • { x=y+z; • a=b+c; • printf(“%d %d”,x,a); • }是一条复合语句。我们可以把它看成是一条语句。 • 注意:复合语句内的各条语句都必须以分号“;”结尾,在括号“}”外不能 加分号
42格式化输出—prin0函数 printf函数的作用:向计算机系统默认的输出设备( 般指终端或显示器)输出一个或多个任意类型的数据 311 printon函数的一般格式 案例3.1已知圆半径 radius=15,求圆周长和圆面积。 main Float radius, length, area, pi=3. 1415926 radius=1.5 length=*pi*radius 公求圆周长 area=pi*radius*radius 求圆面积* printf(“ radius=%frn”;, radius) /输出圆半径 printf( length=%7,f;area=%7.2fmn”, length,area);/输出圆周长、 面积* 程序演示
4.2 格式化输出——printf()函数 printf()函数的作用:向计算机系统默认的输出设备(一 般指终端或显示器)输出一个或多个任意类型的数据。 3.1.1 printf()函数的一般格式 [案例3.1] 已知圆半径radius=1.5,求圆周长和圆面积。 main() {float radius,length,area,pi=3.1415926; radius=1.5; length=2*pi*radius; /*求圆周长*/ area=pi*radius*radius; /*求圆面积*/ printf(“radius=%f\n”,radius); /*输出圆半径*/ printf(“length=%7.2f,area=%7.2f\n”,length,area); /*输出圆周长、 面积*/ } [程序演示]
程序运行结果如下: radius=1.500000 length= 9. 42, area= 7.07 printi函数的一般格式如下 printf("'格式字符串"|,输出项表; 1.格式字符串。“格式字符串”也称“转换控制字 符串”,可以包含三种字符 (1)格式指示符。格式指示符的一般形式如下 %标志字符宽度指示符精度指示符INhL长度修正符格式字符 常用的标志字符如表42所示p32,常用的宽度指示符 如表4-4所示。看4-2等几个表内容
程序运行结果如下: radius=1.500000 length= 9.42,area= 7.07 printf()函数的一般格式如下: printf("格式字符串" [,输出项表]); 1.格式字符串。 “格式字符串”也称“转换控制字 符串” ,可以包含三种字符: (1)格式指示符。格式指示符的一般形式如下: %[标志字符][宽度指示符][.精度指示符][F|N|h|L长度修正符][格式字符] 常用的标志字符如表4-2所示p32,常用的宽度指示符 如表4-4所示。看4-2等几个表内容
(2)转义字符 例如,[案例3.1中prin函数中的m'就是转义字符,输出时产 生一个“换行”操作。 (3)普通字符—除格式指示符和转义字符之外的其它字符。格 式字符串中的普通字符,原样输出。 例如,[案例3.1中“ printf(" radius=%fn", radius);”语句中的 “ radius=”,“ printf(" length=%72,area=%7.2fn", length,area);”语 句中的“ length=”、“area=”等都是普通字符 2.输出项表 输出项表是可选的。如果要输出的数据不止1个,相邻2个之间用 逗号分开。下面的 printf0函数都是合法的 (1 printf(" am a student. In"); (2) print("%d",3+2 (3) printf("a=%f b=%5d\n", a, a+3) 必须强调:“格式字符串”中的格式指示符,必须与“输出项表” 中、输出项的数据类型一致,否则会引起输出错误
(2)转义字符 例如,[案例3.1]中printf()函数中的'\n'就是转义字符,输出时产 生一个“换行”操作。 (3)普通字符──除格式指示符和转义字符之外的其它字符。格 式字符串中的普通字符,原样输出。 例如,[案例3.1]中“printf("radius=%f\n", radius);”语句中的 “radius=”, “printf("length=%7.2f,area=%7.2f\n", length,area);”语 句中的“length=”、 “area=”等都是普通字符。 2.输出项表 输出项表是可选的。如果要输出的数据不止1个,相邻2个之间用 逗号分开。下面的printf()函数都是合法的: (1)printf("I am a student.\n"); (2)printf("%d",3+2); (3)printf("a=%f b=%5d\n", a, a+3); 必须强调:“格式字符串”中的格式指示符,必须与“输出项表” 中、输出项的数据类型一致,否则会引起输出错误
312格式指示符 输出不同类型的数据,要使用不同的类型转换字符。 1.类型转换字符d以带符号的十进制整数形式输出。 案例32类型转换字符d的使用。 main Rint num1=123; long num2=123456 /用3种不同格式,输出int型数据num1的值* printf("num1=%d, num1=%5d, num1=%-5d, num1=%2d\n numl, numl, numl, num1) /用3种不同格式,输出long型数据num2的值 printf("num2=%ld, num2=%08ld, num2=%51d\n", num2, num2, num2); printf("num1=%ldn", num1); 程序演示
3.1.2 格式指示符 输出不同类型的数据,要使用不同的类型转换字符。 1.类型转换字符d──以带符号的十进制整数形式输出。 [案例3.2] 类型转换字符d的使用。 main() {int num1=123; long num2=123456; /*用3种不同格式,输出int型数据num1的值*/ printf("num1=%d,num1=%5d,num1=%-5d,num1=%2d\n", num1,num1,num1,num1); /*用3种不同格式,输出long型数据num2的值*/ printf("num2=%ld,num2=%8ld,num2=%5ld\n",num2,num2,num2); printf("num1=%ld\n",num1); } [程序演示]
程序运行结果如下: num1=123numl=□口123.num1=123口num1=123 num2=123456num2=口口123456num2=123456 numl=16908411 对于整数,还可用八进制、无符号形式(%0(小写 字母o)和十六进制、对于 unsigned型数据,用%u格式 符 所谓无符号形式是指,不论正数还是负数,系统 律当作无符号整数来输出
程序运行结果如下: num1=123,num1=□□123,num1=123□□,num1=123 num2=123456,num2=□□123456,num2=123456 num1=16908411 对于整数,还可用八进制、无符号形式(%o(小写 字母o))和十六进制、对于unsigned型数据,用%u格式 符。 所谓无符号形式是指,不论正数还是负数,系统一 律当作无符号整数来输出
2.类型转换字符f以小数形式按系统默认的宽度,输出单精度 和双精度实数。 「案例3.3类型转换字符的使用。 main( { float f=123456; double dl.d2 dl=11111111l.11l1l d2=222222222222222222; printf("%f%12f,%12,2f,%-12.2f,%2fn",f,,f,fD; printf( d1+d2=%f\n", d1+d2); 程序演示 程序运行结果如下 123456001,口口123456001,口口囗口口123.46,12346口囗口口口口,12346 d1+d2=3333333333333.333010
2.类型转换字符f──以小数形式、按系统默认的宽度,输出单精度 和双精度实数。 [案例3.3] 类型转换字符f的使用。 main( ) {float f=123.456; double d1,d2; d1=1111111111111.111111111; d2=2222222222222.222222222; printf("%f,%12f,%12.2f,%-12.2f,%.2f\n",f,f,f,f,f); printf("d1+d2=%f\n",d1+d2); } [程序演示] 程序运行结果如下: 123.456001,□□123.456001,□□□□□□123.46,123.46□□□□□□,123.46 d1+d2=3333333333333.333010
本案例程序的输出结果中,数据123456001和 333333333310中的001和010都是无意义的,因为 它们超出了有效数字的范围 对于实数,也可使用格式符%e,以标准指数形式输 出:尾数中的整数部分大于等于1、小于10,小数点占 位,尾数中的小数部分占5位;指数部分占4位(如e03), 其中e占一位,指数符号占一位,指数占2位,共计1位。 也可使用格式符%g,让系统根据数值的大小,自动 选择%懺%e格式、且不输出无意义的零
本 案 例 程 序 的 输 出 结 果 中 , 数 据 123.456001 和 3333333333333.333010中的001和010都是无意义的,因为 它们超出了有效数字的范围。 对于实数,也可使用格式符%e,以标准指数形式输 出:尾数中的整数部分大于等于1、小于10,小数点占一 位,尾数中的小数部分占5位;指数部分占4位(如e-03), 其中e占一位,指数符号占一位,指数占2位,共计11位。 也可使用格式符%g,让系统根据数值的大小,自动 选择%f或%e格式、且不输出无意义的零