第03章 输入和输出

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2012-9-23
14
输出不同类型的数据,要使用不同的类型转换字符。 1.类型转换字符d──以带符号的十进制整数形式输出。 [案例2] 类型转换字符d的使用。可以有长度修饰。 void main( ) {int num1=123; long num2=123456; printf("num1=%d,num1=%5d,num1=%-5d,num1=%2d\n", num1,num1,num1,num1);
注:在C语言中,整数可以用字符形式输出,字符数据也 可以用整数形式输出。将整数用字符形式输出时,系统首 先求该数与256的余数,然后将余数作为ASCII码,转换成 相应的字符输出。 18
2012-9-23
4.类型转换字符s──输出一个字符串。 [案例5] 类型转换字符s的使用。 main( ) {printf("%s,%5s,%-10s","Internet","Internet","Internet");
2.类型转换字符f──以小数形式、按系统默认的宽度,输 出单精度和双精度实数。小数位数都默认为6位。 %f是float型输出,有效位共7位。 %lf是double型输出,有效位共15位。 %Lf是 long double 型输出。有效位共19位。 [案例3] 类型转换字符f的使用。 本案例程序的输出结果中,数 void main( ) 据123.456001和 {float f=123.456; 3333333333333.333000中的01 double d1,d2; 和000是无意义的,因为它们 d1=1111111111111.111111111; 超出了有效数字的范围。 d2=2222222222222.222222222; printf("%f,%12f,%12.2f,%-12.2f,%.2f\n",f,f,f,f,f); printf("d1+d2=%lf\n",d1+d2); } 程序运行结果如下:
2012-9-23 7
变量首地址的表示方法: &变量名 其中“&”是地址运算符。 例:scanf(“%d%f%d”,&num1,&num2,&num3); 从键盘输入:12 34.5 678
格式指示符: % * <宽度> <转换说明符> 说明: 1、%是格式指示符的前导符 2、赋值抑制字符* 表示本输入项对应的数据读入后,不赋给相应的变量(该变量 由下一个格式指示符输入)。 例如:scanf("%2d%*2d%3d",&num1,&num2); printf("num1=%d,num2=%d\n",num1,num2); 假设输入“123456789”,则系统将读取“12”并赋值给num1; 读取“34”,但舍弃掉(“*”的作用);读取“567”并赋值给 num2。 所以,printf( )函数的输出结果为:num1=12,num2=567。
printf("%10.5s,%-10.5s,%4.5s\n","Internet","Internet","Internet");
此类函数的原型包含在stdio.h中。 1、字符输入函数getchar 原型为:int getchar(void); 功能:从标准输入设备读入一个字符,字符以整数形式返 回,且将该字符回显在显示器屏幕上。 例: #include <stdio.h> /*文件包含*/ main( ) {char ch; printf("Please input two character: "); ch=getchar( ); /*输入1个字符并赋给ch */ putchar(ch);putchar('\n'); putchar(getchar( )); /*输入一个字符并输出*/ putchar('\n'); 程序运行情况如下: } Please input two characters: ab↙ a 4 2012-9-23 b
下面的printf( )函数都是合法的: (1)printf("I am a student.\n"); (2)printf("%d",3+2); (3)printf("a=%d b=%5f\n", a, a+3.0); 必须强调:“格式字符串”中的格式指示符,必须 与“输出项表”中、输出项的数据类型一致,否 则会引起输出错误。
printf("num2=%ld,num2=%8ld,num2=%5ld\n",num2,num2,num2);
printf("num1=%ld\n",num1); } 程序运行结果如下: num1=123,num1=□□123,num1=123□□,num1=123 num2=123456,num2=□□123456,num2=123456 num1=16908411 对于无符号形式是指,不论正数还是负数,系统一律当 作无符号整数来输出。 如:printf("%d,%o,%x\n",-1,-1,-1); /*-1,177777,ffff*/ 15 2012-9-23
第3章 输入和输出
讲授内容

标准输入输出函数 格式化输入输出函数 通过流进行输入输出
2012-9-23
2
3.1 C++的输入和输出

两种I/O方式
保留自C的——通过标准的I/O函数实现 面向对象的——类型安全的,编译器对输入输 出操作做严格的类型检查

2012-9-23
3
3.2 标准输入与输出函数
ຫໍສະໝຸດ Baidu
2、字符输出函数putchar 原型为:int putchar(int c); 功能:向标准输出设备输出一个字符,c为要输出的字符变 量或常量,可以是转义符。 例:#include <stdio.h> /*编译预处理命令:文件包含*/ void main( ) {char ch1='N', ch2='E', ch3='W'; putchar(ch1); putchar(ch2); putchar(ch3); /*输出*/ putchar('\n'); putchar(ch1); putchar('\n'); /*输出ch1的值,并换行*/ putchar('E'); putchar('\n'); /*输出字符'E',并换行*/ putchar(ch3); putchar('\n'); } 程序运行结果如下:
0
2012-9-23
用0填充域宽
12
2、域宽:指明了数据打印的宽度。如果数据实际长度小于域宽, 则数据输出右对齐;如果数据实际长度大于域宽,系统自动突 破域宽限制,按数据的实际长度输出 。 注:负号要占据一个字符的位置。 3、精度: • 对于整数,表示至少要打印的数字个数,如果数据长度小 于精度,则左边补齐0;如果数据实际长度大于精度,则按 数据实际长度输出。 • 对于浮点数,如果转换说明符为e、E和f,精度表示小数点 后的有效位数,如果数据小数部分的长度小于精度,则在 右边补齐0;否则按精度对数据进行舍入输出。 • 如果浮点数的转换说明符为g和G,精度表示打印数据的最 大的长度。 • 对于字符串,精度表示字符串输出的最大长度,如果输出 字符串长度小于精度,则按照字符串的实际长度输出;否 则按精度截取输出字符串开头的n个字符(假设精度为n) 输出 13 2012-9-23 4、转换说明符:指明了输出数据的类型信息。
2012-9-23
程序运行结果 s abcs”A
6
3.3 格式化输入输出
一、格式化输入函数scanf
scanf(<格式控制串> , <参数列表> )
功能: 输入各种类型的数据,并存入相应的参数中 读取输入流中的指定的字符 跳过输入流中的指定的字符 说明: <格式控制串>描述输入数据遵循的格式,可以包含3种类 型的字符:格式指示符、空白字符(空格、Tab键和回车 键)和非空白字符(普通字符)。空白字符作为相邻2个 输入数据的缺省分隔符,非空白字符在输入有效数据时, 必须原样一起输入。 <参数列表>是存放数据的地址的列表,参数之间用“,”分 隔。参数列表是一个地址列表,即可以是变量的首地址, 也可以是字符数组名或指针变量。
格式指示符: % <标志> <域宽> <.精度> <转换说明符>
其中<标志>、 <域宽>和<精度>可选 1、标志共有五种:多个标志可以联合使用。

标志 + 空格 #
含义
输出在域宽内左对齐
在正数值之前显示一个加号,在负数值之前显示一个 减号 在正数值之前显示一个空格 与八进制转换说明符o一起使用时,在输出值之前加0; 与十六进制转换说明符x或X一起使用时,在输出值之 前加0x或0X
实型的小数形式 l或L 放在任何浮点转换说明符之前, 输入double或long double类型 数据
9
2012-9-23
二、格式化输出函数printf printf (<格式控制串>, <参数列表> ); 功能:
指定浮点值保留的小数位数 浮点值小数点对齐 输出数据的右对齐和左对齐 将直接字符插入到输出数据中 将浮点数按照指数形式输出 将整数按照八进制或十六进制形式输出 按指定的域宽和精度输出数据
也可使用格式符%g或%G,让系统根据数值的大小, 自动选择%f或%e格式、且不输出无意义的零。
2012-9-23 17
3.类型转换字符c──输出一个字符(只占一列宽度)。 [案例4] 类型转换字符c的使用。 void main( ) {char c='A'; int i=65; printf("c=%c,%5c,%d\n",c,c,c); printf("i=%d,%c",i,i); } 程序运行结果如下: c=A,□□□□A,65 i=65,A
2012-9-23 8
3、宽度是任选项,为一整数n,指明了该输入数据长度 为n,如果有多余的部分将被舍弃 例: scanf("%3c%3c",&ch1,&ch2); ch1和ch2均为字符型变量,输入为:abcdefg 4、转换说明符指明了读取数据的类型信息 d o e 十进制整型量 八进制整型量 G或g X或x 十六进制整型量 c u 无符号十进制整 s 型 i 整型 h或l f 实型的指数形式 系统自动选择f或e的较短形式 字符 字符串 放在任何整数转换说明符之前, 输入short或long类型数据
NEW N E W
2012-9-23
5
例子3-1:字符输入输出 P38
# include <stdio.h> int main( ) { char a='a', b='b', c; c = getchar( ); putchar(a); putchar(b); putchar('c'); putchar(c); putchar('\"'); putchar(0101); putchar('\n'); return 0; }
123.456001,□□123.456001,□□□□□□123.46,123.46□□□□□□,123.46 d1+d2=3333333333333.333000
2012-9-23 16
对于实数,也可使用格式符%e或%E,以标准指数 形式输出:小数点前必须有而且只有一位非0数字, 小数位数为6位;指数部分占5位(如e-003),其中e 占一位,指数符号占一位,指数占3位。如: float x=123.456; printf(“%e,%-7.2E,%10.4e\n”,x,x,x); 输出结果为: 1.234560e+002,1.23E+002,1.2346e+002

2012-9-23 10
说明:
<格式控制串>描述了输出数据的格式。 可以包含3种类型的 字符 格式指示符, 则被参数列表中相应的数据替换 转义字符,按其含义输出相应的特殊符号 普通字符,按照原样输出 <参数列表>存放输出数据的表达式列表。 格式指示符的数量、顺序与输出参数相对应。 printf函数执行时,从左到右依次处理格式控制串,遇 到格式控制字符,先计算相应的输出参数表达式,然 后将该参数的计算结果按照格式指示符指定的方式输 出 参数列表是可选的。如果要输出的数据不止1个,相邻2 个之间用逗号分开。 11 2012-9-23
相关文档
最新文档