南京邮电大学C语言课件第3章.pps

上传人:本田雅阁 文档编号:2285356 上传时间:2019-03-17 格式:PPS 页数:25 大小:527.51KB
返回 下载 相关 举报
南京邮电大学C语言课件第3章.pps_第1页
第1页 / 共25页
南京邮电大学C语言课件第3章.pps_第2页
第2页 / 共25页
南京邮电大学C语言课件第3章.pps_第3页
第3页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《南京邮电大学C语言课件第3章.pps》由会员分享,可在线阅读,更多相关《南京邮电大学C语言课件第3章.pps(25页珍藏版)》请在三一文库上搜索。

1、,第 3 章,顺序结构程序设计,3.1 顺序结构程序的基本操作 3.2 格式输出函数 3.3 格式输入函数 3.4 字符输出函数 3.5 字符输入函数 3.6 习题,3.1 顺序结构程序设计的基本操作,如何在程序中给变量赋值 如何进行数据的输入输出?,数据的输入与输出应包括以下几项: 用于输入或输出的设备。 输入或输出数据的格式。 输入或输出的具体内容。,在C语言中,提供了用于输入与输出的函数,在这些函数中,键盘 是标准输入设备,显示器是标准输出设备。,教学进程,3.2,格式输出函数, printf (“格式控制”,输出表) ;,教学进程,C,格式控制部分要用一对双撇号括起来,它用于说明输出项

2、目所采 用的格式。输出表中的各项目指出了所要输出的内容。在格式控制中, 用于说明输出数据格式的格式说明符总是以开头,后面紧跟的是具 体的格式。 用于输出的常用格式说明符有以下几种。,十进制形式,教学进程,d 或 md 用于基本整型 ld 或 mld 用于长整型 u 或 mu 用于无符号基本整型 lu 或 mlu 用于无符号长整型,m表示输出的整型数据所占总宽度(即列数),当实际数据的位数不 到m位时,数据前面将用空格补满。如果在格式说明符中没有用m来说明 数据所占的宽度,则以输出数据的实际位数为准。如果在格式说明符中说 明了宽度m,但实际输出的数据位数大于m,则也以输出数据的实际位数 为准进行

3、输出。,整型格式说明符,3.2.1,3.2.2,实型格式说明符,十进制数形式,教学进程,指数形式,e 或 m.ne,f 或 m.nf,在输出实型数据时,格式说明符中的m表示整个数据所占的 宽度,n表示小数点后面所占的位数。 如果在小数点后取n位后,所规定的数据宽度m不够输出数据 前面的整数部分(包括小数点),则按实际的位数进行输出。 需要指出的是,在C语言中,用于输出单精度实型数据与双精 度实型数据格式说明符是一样的。,3.2.3, 输出表中可以有多个输出项目,但各输出项目之间要用“,” 分隔。各输出项目可以是常量、变量以及表达式。, 格式说明符为c 或 mc 其中m表示输出的宽度,即在这种情

4、况下, 在输出字符的前面将要补m-1个空格。,字符型格式说明符, 格式输出函数中的“格式控制”是一个字符串,其中每一个 后面的字符是格式说明符,用于说明相应输出数据的输出格式, 而每一个格式说明符的结束符分别为d(整型)、f(实型)、 c(字符型)、s(字符串,将在9.3.3节中介绍)。而格式控制中 除格式说明符外的其他字符将按原样输出。,教学进程,下面对各种基本类型数据的格式输出作几点说明:,【例3-1】 P54,【例3-1】 设有以下程序: #include “stdio.h“ main() int a,b; float x,y,s; a=34; b= -56; x=2.5; y=4.5;

5、 s=x*x+y*y; printf(“a=d,b=dn“,a,b); printf(“x=6.2f,y=6.2f,s=6.2fn“,x,y,s); 这个程序经编译连接后,运行输出的结果为( 表示空格) a=34,b=-56 x= 2.50,y= 4.50,s= 26.50,教学进程,字符型格式说明符,字符型格式说明符, 格式输出函数的执行过程如下:,教学进程,首先,在计算机内存中开辟一个输出缓冲区,用于存放输出项 目表中各项目数据。 然后,依次计算项目表中各项目(常量或变量或表达式)的值,并 按各项目数据类型应占的字节数依次将它们存入输出缓冲区中。 最后,根据“格式控制”字符串中的各格式说明

6、符依次从输出缓冲区 中取出若干字节的数据(如果是非格式说明符,则将按原字符输出), 转换成对应的十进制数据进行输出。其中从输出缓冲区中取多少个字节 的数据是按照对应格式说明符说明的数据类型。, 在“格式控制”的格式说明符中,如果带有宽度说明,则在左边没 有数字的位置上用空格填满(即输出的数字是右对齐)。但如果在宽度 说明前加一 个负号(-),则输出为左对齐,即在右边补空格。,【例3-2】 设有如下C程序: #include “stdio.h“ main() long int xx,yy,zz; xx=1;yy=-255;zz=1; printf(“xx=ld,yy=ld,zz=ldn“,xx,

7、yy,zz); printf(“xx=d,yy=d,zz=dn“,(int)xx,(int)yy,(int)zz); printf(“xx=d,yy=d,zz=dn“,xx,(int)yy,(int)zz); 该程序运行的结果如下: xx= 1,yy=-255,zz= 1 xx= 1,yy=-255,zz= 1 xx= 1,yy= 0,zz=-255,教学进程,【例3-3】 设有如下C程序: #include “stdio.h“ main() double x=34.567; printf(“x=fn“,x); printf(“x=dn“,x); printf(“x=dn“,(int)x);

8、这个程序的实际运行结果为 x=34.567000 x=27263 x=34,显然,这个程序中的 第二个格式输出语句输出 的结果是错误的,这是因 为在第二个格式输出语句 中,格式说明符d是基本 整型格式说明符,而输出 项目是双精度型的数据, 它们是不匹配的。,教学进程,格式输入函数,3.3,教学进程, scanf(“格式控制“,内存地址表);,其中scanf()是C编译系统提供的格式输入函数。格式控制部分要用 一对双撇号括起来,它用于说明输入数据时应使用的格式。内存地址 表中的各项目指出各输入数据所存放的内存地址。 与格式输出一样,在格式控制中,用于说明输入数据格式的格式 说明符总是以开头,后面

9、紧跟的是具体的格式。用于数据输入的常 用格式说明符有以下几种。,C,整型格式说明符,教学进程,十进制形式,d 或 md 用于一般整型 ld 或 mld 用于长整型 u 或 mu 用于无符号基本整型 lu 或 mlu 用于无符号长整型,由此可以看出,用于输入与输出整型数据的格式说明符是完全一样的。 m表示输入数据时的宽度(即列数)。 与输出情形一样,对于八进制形式与十六进制形式的输入格式,主要 用于输入无符号整型的数据。,3.3.1,实型格式说明符,3.3.2,教学进程,单精度实型,双精度实型,lf,f 或 e,由此可以看出,与输出不同,在用于输入时, 无论是单精度实型还是双精度实型, 都不能用

10、m.n来指定输出的宽度和小数点后的位数。, 用于输入的字符型格式说明符为c 或 mc,字符型格式说明符,3.3.3,教学进程,下面对格式输入作几点说明: 在格式输入中,内存地址表中的各项目必须是变量地址,而不能 是变量名,且彼此间用“,”分隔。为此,C语言专门提供了一个取 地址运算符&。例如,&a表示变量a在内存中的首地址。,字符型格式说明符,教学进程, 当用于输入整型数据的格式说明符中没有宽度说明时,则在具体输入 数据时分为以下两种情况: 如果各格式说明符之间没有其他字符,则在输入数据时,两个数据 之间用“空格“、或“Tab“、或“回车“来分隔。 如果各格式说明符之间包含其他字符,则在输入数

11、据时,应输入与 这些字符相同的字符作为间隔。,例如,设有如下说明 int a, b ; float c, d ; 现要利用格式输入函数输入a=12,b=78,c=12.5,d=7.6。 采用不同的格式说明,其输入数据的形式也是不同的。,字符型格式说明符,教学进程,字符型格式说明符,教学进程, 当整型或字符型格式说明符中有宽度说明时,按宽度说明截取数据。,一个字符型变量只能存放一个字符,教学进程, 在用于输入的实型格式说明符中不能用m.n来指定输出的宽度和小数 点后的位数(这是与输出的不同之处)。 例如,下列用法是错误的: scanf(“7.2f“,&a);, 为了便于程序执行过程中从键盘输入数

12、据,在一个C程序开始执行时, 系统就在计算机内存中开辟了一个输入缓冲区,用于暂存从键盘输入 的数据。开始时该输入缓冲区是空的。当执行到一个输入函数时,就 检查输入缓冲区中是否有数据:,字符型格式说明符,如果输入缓冲区中没有数据(即输入缓冲区位空),则等待用 户从键盘输入数据并依次存放到输入缓冲区中。当输入一个 或符后,将依次按照“格式控制”中还未用过的格式说明符从 输入缓冲区中取出数据转换成计算机中的表示形式(二进制),最 后存放到内存地址表中指出的对应地址中。,字符型格式说明符,教学进程,在上述两种中的任一种情况下,从输入缓冲区中取数据,如果遇到 或字符,则将输入缓冲区清空。此时如果“格式控

13、制”中的 格式说明符还未用完,则继续等待用户从键盘输入数据并依次存放到输 入缓冲区中,直到输入一个或符后,再依次按照“格式控 制“中还未用过的格式说明符从输入缓冲区中取出数据转换成计算机中 的表示形式(二进制),最后存放到内存地址表中指出的对应地址中。 这个过程直到“格式控制”中的格式说明符用完为止。此时如果输入缓冲 区中的数据还未取完,则将留给下一个输入函数使用。,字符型格式说明符,教学进程, 与格式输出一样,格式输入的格式控制中的各格式说明符与内存地 址表中的变量地址在个数、次序、类型方面必须一一对应。,从以上输入函数的执行过程可以看出,从键盘输入数据是以 或作为结束的。当输入的数据一行不

14、够时,可以在下一行继续输 入;当一行上的数据用不完时,可以留给下一个输入函数使用。 需要注意的是,由于或是作为键盘输入数据的结束符, 因此,在输入函数的“格式控制“中,最后不能加换行符n。,【例3-5】 P61,【例3-5】 设有C程序如下: #include “stdio.h“ main() double x; printf(“input x:“); scanf(“f“,&x); printf(“x=fn“,x); 这个程序的运行结果为 (其中有下划线的部分为键盘输入) input x:123.456 x=0.000000,显然,输出语句输出的x值是 错误的。这是因为,x定义为双精 度型的实

15、型变量(占8B),但它使 用的是单精度实型的输入格式说明 符。当输入一个实型数123.456后, 将按照单精度输入格式说明符将它 转换成计算机中的表示形式(只占 4B),最后存放到为双精度实型变 量x所分配的存储空间的低4B中, 而为双精度实型变量x所分配的存 储空间的高4B中的各位均是0,这 就造成双精度实型变量x的(阶码N-2) 的11位偏移码均位0,这是C语言中 无法表示的一个绝对值很小的数 (称为下溢),默认为实型数0.0。,教学进程,教学进程,字符输出函数,3.4,这个函数的功能是,在显示屏幕的当前光标位置处输出项目c所表 示的一个字符。其中c可以是字符型常量、字符型变量、整型变量或

16、整 型表达式。 字符输出函数的执行过程与格式输出函数的执行过程完全相同。, 字符输出函数的形式为 putchar(c),【例3-6】 设有如下C程序: #include “stdio.h“ main() int x=68; char y=B; putchar(A); putchar(y); putchar(67); putchar(x); putchar(34+25); 该程序的输出结果为 ABCD;,【例3-7】 设有C程序如下: #include “stdio.h“ main() int x=68; char y=B; putchar(A); putchar(n); putchar(y);

17、 putchar(n); putchar(67); putchar(n); putchar(x); putchar(n); putchar(34+25); putchar(n); 在这个程序中,在输出每一个字符后, 紧接着输出一个换行,最后输出结果为,A B C D,教学进程,字符输入函数,3.5,在C语言中,字符输入函数的形式为 getchar(),教学进程,这个函数的功能是接收从键盘输入的一个字符。 例如,下面的程序执行过程中,将等待从键盘输入一个字符赋给字符 型变量x: #include “stdio.h“ main() char x; x=getchar(); 需要说明的是,在执行字符输入函数时,由键盘输入的字符(依次存 放在输入缓冲区中)同时也在屏幕上显示,并且以结束,但一个字 符输入函数只顺序接收一个字符,输入缓冲区中剩下的字符数据将留给下 面的字符输入函数或格式输入函数使用。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1