《三C语言程序设计简单的输入和输出.ppt》由会员分享,可在线阅读,更多相关《三C语言程序设计简单的输入和输出.ppt(48页珍藏版)》请在三一文库上搜索。
1、第二章 简单的输入和输出,该节的学习内容,学点什么哪?,熟练掌握字符输入/输出函数 熟练的应用输入/输出函数的使用方法。,本章的学习难点,熟练掌握字符的输入/输出函数及有格式输入/输出函数的使用方法。 scanf和printf函数的格式控制问题。,本章目录,基本输入输出操作的实现 输入输出操作中的分析,基本输入输出操作的实现,字符输入输出操作的实现,有格式输入输出操作的实现,字符输入输出操作的实现,例如:#include ,字符标准输入,字符标准输出,C语言本身不提供输入输出语句,输入 输出操作是由函数实现的。,C语言的输入输出函数的处理程序不在 C语言本身,因而在运行时要连接函数库, 但必须
2、在程序中将相应的文件头部加载。,在计算机终端键盘上输入数据。,在终端显示器上输出数据。,字符输入函数getchar,1.作用:从终端(或系统隐含指定的输入设备)输入一个字符,由函数返回该字符。,2.举例: char c; a c=getchar(); a,字符输出函数putchar,1.作用:向系统隐含指定的输出设备即终端显示器输出一个字符。,2.格式: char c; putchar(c);,程序举例,#include main() char c; c=getchar(); putchar(c) ; ,有格式输入输出操作的实现,格式输出函数printf,格式输入函数scanf,格式输出函数p
3、rintf,该函数按指定的格式输出多个、不同类型的数据。,printf(格式控制,输出表列) 格式控制:也称为转换控制字符串。它包含格式转换说明和需原样输出的普通字符。 输出表列:要输出其值的表达式表列,该表列中的参数可为多个,也可没有。 输出列表中变量的位置、个数和类型必须与格式控制字符串中的 格式转换说明符对应。,功能:,格式:,格式说明,格式说明是从“%”开始到其后第一个 格式说明符。,格式说明符: d格式符 o格式符 x格式符u格式符 c格式符 s格式符 f格式符 e格式符 g格式符,d格式符,以带符号的十进制整形格式输出整数。,d 按整形数据的实际长度输出,%ld 输出长整形数据,a
4、=3; b=24; printf(“%d%d“,a,b); 324,%md %0md 按长度为m输出整形数据,a=123; b=12345; printf(“%4d, %05d, %d“, a, a, b); 123, 00123, 12345,功能:,格式:,由于是将内存单元的各位的值(0或1)按八进制 形式输出,因此输出的数值不带符号。,o格式符,以8进制、无符号形式输出整数。,o %mo,对于长整形数可以用“lo”格式输出。,功能:,格式:,以进制无符号形式输出整数。,x格式符,x %mx,对于长整形数可以用“lx”格式输出。,功能:,格式:,一个有符号整数(int型)也可用%u输出;反
5、之, 一个unsigned型也可用%d、%o,%x输出。,u格式符,以10进制无符号形式输出unsigned数据。,u %mu,眼见为实,数值+类型,int以补码存储,-1,177777,ffff,65535 -2,177776,fffe,65534,功能:,格式:,c格式符,用来输出一个字符。,c %mc,c=a; printf(“%c,%3c“,c,c); a, a 注:上行的%c和c的意义不同。,其值在0-255内的整数,可用c或d输出。,int c=65; printf(“%c,%d“,c,c); A, 65,一个字符,可用c或d输出。,char c=a; printf(“%c,%d“
6、,c,c); a, 97,功能:,格式:,s格式符,输出字符串,直到遇到字符串结束标识0为止。,s 按字符串的实际长度输出。,printf(“%s“,“china“); china,ms 输出的字符串占m列。,printf(“%3s,%7s“,“china“,“china“); china,china 1.当字符串实际长度m,则按实际长度输出。 2.当字符串实际长度m 。则左端补空格。,-ms 输出的字符串占m列。,printf(“%3s,%-7s“,“china“,“china“); china,china 1.当字符串实际长度m,则按实际长度输出。 2.当字符串实际长度m 。则右端补空格。
7、,m.ns 输出的字符串占m列。,printf(“%7.2s“,“china“); ch 1.共输出m位,右端输出n个字符,如果实际长度m ,则在左端用空格填补。 2.当字符串实际长度n 。则n为字符串长度。,-m.ns 输出的字符串占m列。,printf(“%-7.2s,%.4s“,“china“,“china“); ch ,chin 1.共输出m位,左端输出n个字符,如果实际长度m ,则在右端用空格填补。 2.当字符串实际长度n 。则n为字符串长度。 3.当m没有时自动地m=n=4。,功能:,格式:,f格式符,以小数形式输出实数。,f 以系统指定的形式输出实数。,float x, y; x
8、=111111.111; y=222222.222; printf(“%f“,x+y); 333333.328125 1.系统自动指定数据宽度,整数部分全部 输出,小数部分输出6位。 2.单精度数的有效位数为7位;双精度数用%lf输 出时,有效位数为16位,小数位为6位。,m.nf 按自定义格式输出实数。,float x; x=123.456; printf(“%f,%10f,%10.2f,%.2f“,x,x,x,x); 123.456001, 123.456001, 123.46, 123.46 1.输出数据宽度为m,输出n位小数,n+1位小数 四舍五入;实际小数位n,则左端填0占位。,-m
9、.nf 按自定义格式输出实数。,float x, y; x=123.456; printf(“%-9.2f, %f“,x, x); 123.46 , 123.456001 1.输出数据宽度为m,输出n位小数,n+1位小数 四舍五入;实际小数位n,则左端填0占位。,功能:,格式:,e格式符,以标准指数形式输出单、双精度实数。,e 用系统指定的标准格式输出。,m.ne 用自定义格式输出。,float f=123.456; printf(“%e,%10e,%10.2e,%.2e“, f,f,f,f); 1.234560e+002, 1.234560e+002, 1.23e+002, 1.23e+00
10、2 1.输出总宽度为m位,数值部分小数为n位。 2.当mn+7,则在数字部分前加m-n-7个空 格,否则按实际长度输出。,-m.ne 用自定义格式输出。,float f=123.456; printf(“%-10.2e,%e“, f,f); 1.23e+002, 1.234560e+002 1.输出总宽度为m位,数值部分小数为n位。 2.当mn+7,则在指数部分后加m-n-7个空 格。,功能:,格式:,g格式符,根据数值的大小,自动选择f或e输出实数。,g 选择占宽度较小的一种。,功能:,格式:,普通字符的输出,普通字符即需要原样输出的字符。,printf(“a=%d b=%d“, a, b)
11、;,普通字符,设a, b分别为3和4,则有: a=3 b=4,输出列表举例,“输出表列”是需要输出的一些数据,可 以是表达式。可以有多项,也可以没有。,printf(“a=%d a+b=%d“, a, a+b);,输出表列,printf(“输出提示信息!“);,printf函数使用说明,1.有些系统要求格式字符要用小写字母。 printf(“%d, %f“, a, f); printf(“%D, %F“, a, f); ,2.不同的系统实现输出时,输出结果会有小的差别。例如:e格式输出时,指数部分有5位(e+002)和4位(e+02)之分; 数值部分有效位数有5位小数和6位小数之分。,3.如输
12、出字符%,则在“格式控制”字符串重用连续的两个%字符。 printf(“%f%n“, 1.0/3); 输出:0.333333%,4.可以在“格式控制”字符串内包含“转义字符”。例如:n,t,b,r,f等。 printf(“%d, %fn“, a, f);,转义字符,printf函数举例,#include main() int a=29; long b=123456; double x=123.456; char c=:; printf(“1. a=%d, a=%4d,“, a, a); printf(“a=%-4d, a=%04dn“, a, a); printf(“2. a=%o, a=%0
13、4o,“, a, a); printf(“a=%x, a=0x%xn“, a, a); printf(“3. b=%ld, b=%8ldn“, b, b); printf(“4. x=%f, x=%.2f“, x, x); printf(“x=%10.2f, x=%-10.2fn“, x, x);,1.a=29, a= 29, a=29 ,a=0029 2.a=35, a=0035, a=1d, a=0x1d 3.b=123456, b= 123456 4.x=123.456001, x=123.46, x= 123.46, x=123.46,printf(“5.x=%e, x=%.2e, x
14、=%gn“, x, x, x); printf(“6.%c%8s%cn“, c, “how are you“, c); printf(“7.%c%15s%cn“, c, “how are you“, c); printf(“8.%c%+10.3s%cn“, c, “how are you“, c); printf(“9.%c%-10.3s%cn“, c, “how are you“, c); ,5.x=1.234560e+02, x=1.23e+02, x=123.456001 6.:how are you: 7.: how are you: 8.: how: 9.:how :,格式输入函数s
15、canf,该函数可按指定的格式输入多个不同类型的数据,并将输入数据存入地址参数所指定的地址单元。,scanf(格式控制,地址表列) 格式控制:与printf的格式控制含义相同。 输出表列:是由若干个地址组成的表列,可以是地址,或字符串首地址。 &:取地址符,单目运算符 格式: &变量名 双目运算符,位与运算,功能:,格式:,scanf的格式控制,格式说明符: d格式符 o格式符 x格式符c格式符 s格式符 f格式符 e格式符,scanf附加的格式说明字符: l h 域宽 *,scanf附加的格式说明字符,d格式符,用来输入十进制整数。,d %md %*md,全用%d格式符: int a1, a
16、2, a3; scanf(“%d%d%d“, 输入格式: 12 123 1234 结果:a1=12 a2=123 a3=1234 注:数据必须用至少一个空格分开。,全用%md、%*md格式符: int a1, a2, a3; scanf(“%2d%*3d%3d“, 输入格式: 1234567890 结果: a1=12 a2=678 a3=无 注:当指定域宽时,数据不用逗号或空格分开。 后面参数是地址列表,不是变量列表。,功能:,格式:,o格式符,用来输入八进制整数。,o %mo %*mo,全用%o格式符: int a1, a2, a3; scanf(“%o%o%o“, 输入格式: 012 01
17、23 01234 结果:a1=012 a2=0123 a3=01234 注:数据必须用至少一个空格分开。,全用%mo、%*mo格式符: int a1, a2, a3; scanf(“%4o%*3o%3o“, 输入格式: 0123045067025 结果: a1=0123 a2=067 a3=无 注:数据不用逗号分开或用空格分开。,功能:,格式:,x格式符,用来输入十六进制整数。,x %mx %*mx,全用%d格式符: int a1, a2, a3; scanf(“%x%x%x“, 输入格式: 0x12 0x123 0x1234 结果:a1=0x12 a2=0x123 a3=0x1234 注:数
18、据必须用至少一个空格分开。,全用%mx、%*mx格式符: int a1, a2, a3; scanf(“%4x%*3x%3x“, 输入格式: 0x120x30x4567890 结果: a1=0x12 a2=0x4 a3=无 注:当指定域宽时, 数据不用逗号或空格分开。,功能:,格式:,c格式符,用来输入单个字符。注意输入格式!,c %mc %*mc,全用%c格式符: char a1, a2, a3; scanf(“%c%c%c“, 输入格式: abc 结果:a1=a a2=b a3=c 注:数据不必用逗号或空格分开。,全用%mc、%*mc格式符: char a1, a2, a3; scanf(
19、“%3c%*3c%3c“, abcdefghijklmnopq 结果: a1=a a2=g a3=无 注:数据必须不用空格分开。,功能:,格式:,s格式符,用来输入字符串。,以后讲字符型数组再讲s格式符。,功能:,f格式符,用来以小数形式输入十进制实数。,f %mf %*mf,全用%f格式符: float a1, a2, a3; scanf(“%f%f%f“, 12.345 123.456 1234.567 结果:a1=12.345 a2=123.456 a3=1234.567 注:数据必须只能用至少一个空格分开。,全用%mf、%*mf格式符: int a1, a2, a3; scanf(“%
20、5f%*4f%5f“, 12.345.678.9012345 结果: a1=12.34 a2=8.901 a3=无 注:数据不用分开,或用空格分开。,功能:,格式:,e格式符,用来以指数形式输入十进制实数。,e %me %*me,与f格式符基本相同,只是输入的 数据为指数形式。,功能:,格式:,输入输出操作中常见的错误分析,格式化输入输出的数据类型与所用格式说明 符不一致。 float f=123.456; scanf(“%d“,用scanf函数输入数据时,变量前忘记使用地 址符 ,用scanf函数输入数据时,数据的输入形式与 格式要求不符。 int a1, a2; scanf(“%d, %d
21、“, input: 3 4 3, 4 ,若想在屏幕上输出一行提示信息,然后输入 数据, 下列语句错误。 int a1, a2; scanf(“input a1, a2:%d, %d“, 注:在scanf 函数的格式化控制字符串中一般不要 包括普通字符,也不要包括“n”等转义控制符, 所有输出信息必须用printf函数输出!,在输入数据时,遇以下情况时该数据认为本 输入结束。 遇空格,或按“回车”或“跳格”(TAB键) 遇宽度结束,如%3d, 只取3列。 遇非法输入。 (6)在需要输入多个数据时,应使用一条scanf语 句将多个输入合并在一起输入,尽量避免scanf 语句的多次连续使用而出现越界
22、错误。,举例,常见错误 scanf(“%d,%fn”,程序举例,圆面积和周长计算 基本输入输出实例,#include main( ) float R, S, L; scanf(“%f“, ,程序举例,求半径为R的圆的面积和周长。,#include main() int a, b; scanf(“%d %d“, ,问题1:当要求程序输出结果为 a = 12, b = 34 时,用户应该如何输入数据?,12 34,输入数据的格式控制,#include main() int a, b; scanf(“%d %d“, ,问题2:当限定用户输入数据以逗号为分隔符,即输入数据格式为: 12, 34 时,应
23、修改程序中的哪条语句?怎样修改?,scanf(“%d,%d“, ,输入数据的格式控制,#include main() int a, b; scanf(“%d %d“, ,问题3:语句scanf(“%d %d“, 时,用户应该如何输入数据?,a = 12, b = 34,输入数据的格式控制,#include main() int a, b; scanf(“%d %d“, ,问题4:限定用户输入数据为以下格式为 1234 同时要求程序输出结果为a = 12, b = 34,scanf(“%2d%2d“, ,输入数据的格式控制,#include main() int a, b; scanf(“%d %d“, ,问题5:限定用户输入数据为以下格式为 12 34 同时要求程序输出结果为a = “12“, b = “34“,scanf(“%d%d“, ,输入数据的格式控制,输入格式也可以为: 12 34,#include main() int a, b; scanf(“%d %d“, ,问题6:设计程序使得用户可以以任意字符(回车、空格、制表符、逗号、其它)作为分隔符进行数据的输入,scanf(“%d%*c%d“, ,输入数据的格式控制,结束,
链接地址:https://www.31doc.com/p-2618860.html