《数据输入与输出》PPT课件.ppt_第1页
《数据输入与输出》PPT课件.ppt_第2页
《数据输入与输出》PPT课件.ppt_第3页
《数据输入与输出》PPT课件.ppt_第4页
《数据输入与输出》PPT课件.ppt_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C语言程序设计,第四章 顺序结构,数据的输入和输出 顺序程序设计,回顾上章:,C语言的常用基本符号 C 语言的数据类型 运算符和表达式 数据类型转换 自增,自减运算,本章目标:,数据的输出 格式输出函数printf() 字符输出函数putchar() 数据的输入 格式输入函数scanf() 字符输入函数getchar(),数据输入输出的概念,(一).所谓输入输出是以计算机主机为主体而言的 输出:从计算机向外部输出设备(显示器,打印机)输出数据 输入:从输入设备(键盘,鼠标,扫描仪)向计算机输入数据.,(二).C语言本身不提供输入输出语句,输入和输出操作是由C函数库中的函数来实现的 例如: 字符输入函数: getchar 字符输出函数:putchar 格式输入函数: scanf 格式输出函数: printf 字符串输入函数:gets 字数串输出函数:puts,(三).在使用系统库函数时,要用预编译命令“#include”将有关的“头文件”包括到用户源文件中. 例如:在调用标准输入输出库函数时,文件开头应该有: #include “stdio.h”(系统到当前目录寻找要包含的文件,找不到,再按标准方式查找) 或: #include (标准方式:系统到存放C库函数头文件的目录中寻找要包含的文件),格式: putchar( c ) 参数: c为字符常量、变量或表达式 功能:把字符c输出到显示器上 返值:正常,为显示的代码值;出错,为EOF(-1),C语言无I/O语句,I/O操作由函数实现 4.1 数据输出 字符输出函数,#include main() int c; char a; c=65; a=B; putchar(c); putchar(n); putchar(a); ,运行结果:A B,例4-1 ,例4-2 阅读程序 #include main() char c1=A, c2=66 ; int c3=103,c4 ; c4=c3+1; putchar(c1); putchar(c2); putchar(n); putchar(c3); putchar(c4); ,运行结果; AB CD,格式:printf(“格式控制串”,输出表列) 功能:按指定格式向显示器输出数据 返值:正常,返回若干个任意类型的数据;出错,返回EOF(-1),格式输出函数,输出表列:需要输出的一系列数据(可以没有,多个时以“,”分隔) 格式控制串:包含两种信息 格式说明: %修饰符格式字符 ,用于指定输出格式 普通字符或转义序列:原样输出,1. 函数的基本功能,2.函数的使用说明,(1)格式说明符:由“%”和格式字符组成,如%d,%f等。它的作用是将输出表列的数据转换为指定的格式输出。格式说明符总是由“%”字符开始。 (2)普通字符: 格式控制字符串中除格式说明符外的其它字 符,其中也包括转义字符,这是一类需要原样输出的字符。 (3)“输出表列”是需要输出的一系列数据,可以是表达式。 格式控制字符串中格式字符的个数和输出表列的项数相等,顺序从左到右依次对应。 (4) 格式说明符的类型必须与其对应的输出表列中数据的类型一致。,例4-3 阅读程序 #include main( ) int a=3,b; printf(“a=%d,b=%dn“,a,b=4); 其中: “a=%d,b=%d“ 格式控制字符串 a,b=4 输出表列 %d 格式说明符 “a=” “, ” “b=” 普通字符,运行结果: a=3,b=4,3. 格式说明符,一般形式:%-m.nl格式符 其中方括号中内容是可选项。 说明: 负号表示当实际数据的宽度小于显示宽度时,数据左对齐,数据右方用空格填充。 m:表示占用数据的宽度,如果实际数据的宽度大于m, 按实际宽度输出。如果实际数据的宽度小于m, 数据右对齐,数据左方用空格填充。 n: 表示指定输出的数据共占m列,其中有n位小数.舍去的部分系统自动四舍五入。如果输出的是字符串,表示取字符串中左端n个字符输出。 l:用于长整型或双精度型的数据。,(1)整型数据,一般形式: %-mL格式符 或 %-ml格式符 如果不指定数据宽度和对齐方式,例如%d,系统自动按整型全部输出。 说明: 1 d格式符(或i格式符),用来输出十进制整数.有以下几种: 几种用法: %d:按十进制整型数据的实际长度输出。 %md:m为指定的输出字段的宽度。如果数据的位数小于m, 则左端补以空格,若大于m,则按实际位数输出。 例: #include main() int a=123,b=12345; printf(“%4d,%4d“,a,b); %ld:输出长整型数据。 例: #include main() long a=135790; /* 定义a为长整型变量*/ printf(“%ld“,a); ,2 o格式符,以8进制数形式输出整数。 o格式符是将内存单元中的各位的值(0或1)按八进制形式输出,因此输出的数值不带符号,即将符号也一起作为八进制数的一部分输出.,例:int a=-1; printf(“%d,%o“,a,a); 在内存单元中的存放形式(以补码形式存放)如下: 11111111111111111111111111111111 输出为: ,37777777777 不会输出带负号的八进制整数。对长整数(型)可以 用“”格式输出。还可以指定字段宽度, 例:printf(“,); 输出为: 177777。 (数字前有2个空格),(3)格式符。以十六进制数形式输出整数。同样不会出 现负的十六进制数。 例: #include void main() int a=-1; printf(“%d,%o,%xn“,a,a); 输出结果为: 可以用“”输出长整型数,也可以指定输出字段的宽度 例: “”,(4)格式符,用来输出unsigned型数据. 一个有符号整数(int 型)也可以用格式输出; 一个unsigned 型数据也可以用格式输出。 unsigned 型数据也可用或格式输出。,例4-5 无符号数据的输出。 #include void main() unsigned int a=65535;int b=-2; printf(“a=%d,%o,%x,%un“,a,a,a,a); printf(“b=%d,%o,%x,%un“,b,b,b,b); ,(2)实型数据,一般形式:%-m.n类型符 实型数据的输出有三种格式: (1)f格式,以小数形式输出实数。(包括单双精度) 一般形式: %-m.nf 如果不指定数据宽度和对齐方式,例如%f,系统自动指定,使整数部分全部如数输出,并输出6位小数。 有以下几种用法: 。不指定字段宽度,由系统自动指定字段宽度,使整数部分全部输出,并输出位小数。应当注意,在输出的数字中并非全部数字都是有效数字。单精度实数的有效位数一般为位。 .。指定输出的数据共占列,其中有位小数。如果数值长度小于,则左端补空格。 .与.基本相同,只是使输出的数值向左端靠,右端补空格。,例4-6 输出实数时的有效位数。 #include void main() float ,; ; ; printf(,); ,运行结果: .,例4-7输出双精度数时的有效位数。 #include void main() double x,y; x=1111111111111.111111111; y=2222222222222.222222222; printf(“%fn“,x+y); ,例4-8 输出实数时指定小数位数。 #include void main() float f=123.456; printf(“%fn%10fn%10.2fn%.2fn%-10.2fn“,f,f,f,f,f); ,(2)格式符,以指数形式输出实数。 可用以下形式: 。不指定输出数据所占的宽度和数字部分的小数位数. 例:4-9 #include void main() printf(“%en“,123.456); 所输出的实数共占列宽度。(注:不同系统的规定略有不同), m.ne和-m.ne。 、和“”字符的含义与前相同。 此处指拟输出的数据的小数部分(又称尾数)的小数位数。 例4-10 #include void main() float f=123.456; printf(“%en%10en%10.2en%.2en%-10.2en“,f,f,f,f,f); 输出如下: 1.234560e+002 1.234560e+002 1.23e+002 1.23e+002 13列 13列 10列 9列 1.23e+002 10列(右还有一空格),输出如下: 1.234560e+002 1.234560e+002 1.23e+002 1.23e+002 13列 13列 10列 9列 1.23e+002 10列(右还有一空格) 说明: 未指定,自动使. 超过给定的列,乃突破列的限制,按实际长度输出。 第3个数据共占列,小数部分占列。 只指定,未指定,自动使等于数据应占的长度。 第5个数据应占列,数值只有列,由于是“”, 数值向左靠,右补一个空格。 (注:有的C系统的输出格式与此略有不同),(3)格式符,用来输出实数. 它根据数值的大小,自动选格式或格式(选择输出时占宽度 较小的一种),且不输出无意义的零。 例:若,则 printf( ,); 输出如下: 123.468000 1.234680e+002 123.468 10列 13列 10列,说明: 用格式输出占列,用格式输出占列,用 格式时,自动从上面两种格式中选择短者(今以格式为短) 故占列,并按格式用小数形式输出,最后3个小数位为 无意义的,不输出,因此输出123.468,然后右补3个空格。 格式用得较少。,例4-12 阅读程序。 #include main( ) float x=2.345; double y=2.345; printf(“x1=%f,x2=%6.2f,x3=%-6.2f,x4=%.2fn“,x,x,x,x); printf(“y1=%f,y2=%6.2f,y3=%-6.2f,y4=%.2fn“,y,y,y,y); ,运行结果: x1=2.345000,x2=2.35,x3=2.35,x4=2.35 y1=2.345000,y2=2.35,y3=2.35,y4=2.35,(3)字符型数据,字符型数据的输出有二种格式符: (1) c格式符 一般形式:%c 功能:用来输出一个字符。 一个整数,只要它的值在33126范围内,也可以用字符形式输出,在输出前,将该整数转换成相应的ASCII字符;反之,一个字符数据只要它的ASCII码值在33126范围内也可以用整数形式输出。,例4-13 阅读程序 #include main() char ch=a; int i=97; printf(“%c,%dn“,ch,ch); printf(“%c,%dn“,i,i); ,运行结果: a,97 a,97,(2) s 格式符,一般形式:%-m.ns 功能:用来输出一个字符串。 如果不指定字符宽度和对齐方式,例如%s,系统自动指定,使整个字符串全部输出。,例4-14 阅读程序 main() printf(“s1=%5.2s,s2=%-5.2s,s3=%.2s,s4=%3s,s5=%s“, “abcd“,“abcd“,“abcd“,“abcd“,“abcd“); ,运行结果: s1=ab,s2=ab,s3=ab,s4=abcd,s5=abcd,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=%dn“,u); 输出结果:u=65535,例 int a=3,b=4; printf(“%d %dn”,a,b); printf(“a=%d , b=%dn”,a,b);,例 #include main() int a=3,b=4; printf(“%d %dn“,a,b); printf(“a=%d, b=%dn“,a,b); 输出结果: 3 4 a=3, b=4,附加格式说明符(修饰符),例 #include main() int a=1234; float f=123.456; char ch=a; printf(“%8d,%2dn“,a,a); printf(“%f,%8.1f,%.2f,%.2en“,f,f,f,f); printf(“%3cn“,ch); ,运行 1234,1234 结果: 123.456001,123.456001, 123.5,123.46,1.23e+002 a,例 #include main() static char a=“Hello,world!“; printf(“%sn%15sn%10.5sn%2.5sn%.3sn“,a,a,a,a,a); ,运行结果:Hello,world! Hello,world! Hello Hello Hel,例 m.n,例 #include main() int a=1234; float f=123.456; static char c=“Hello,world!“; printf(“%8d,%-8dn“,a,a); printf(“%10.2f,%-10.1fn“,f,f); printf(“%10.5s,%-10.3sn“,c,c); ,运行结果:1234,1234 123.46,123.5 Hello,Hel,例 -,例 #include main() int a=1234; float f=123.456; printf(“%08dn“,a); printf(“%010.2fn“,f); printf(“%0+8dn“,a); printf(“%0+10.2fn“,f); ,例 0 、+,例 #include main() int a=123; printf(“%o,%#o,%X,%#Xn“,a,a,a,a); ,例 #,例 #include main() long a=65536; printf(“%d,%8ldn“,a, a); ,例 l,说明: 除了X,E,G外,其他各式字符必须用小写。 可以在printf函数中的“格式控制”字符串中包含转义字符。 一个格式说明必须以“%”开头,以9个格式字符之一为结束,中间可以插入附加格式字符。 想输出%,则应该在格式控制字符串中用连续两个%表示,格式:getchar( ) 功能:从键盘读一字符 返值:正常,返回读取的代码值;出错,返回EOF(-1),4.2 数据输入 字符输入函数,例,#include main() int c; printf(“Enter a character:“); c=getchar(); printf(“%c-hex%xn“,c,c); ,运行结果: Enter a character:A A-hex41,格式输入函数,格式: scanf(“格式控制串”,地址表列) 功能:按指定格式从键盘读入数据,存入地址表指定的 存储单元中,并按回车键结束 返值:正常,返回输入数据个数,地址表列:变量的地址,常用取地址运算符& 格式字符:d,i,o,x,u,c,s,f,e,例 scanf(“%d”, 输入:10 则 a=10,例 scanf(“%x”, 输入:11 则 a=17,附加格式说明符(修饰符),例 scanf(“%4d%2d%2d”, 输入 19991015 则1999yy, 10 mm, 15 dd,例 scanf(“%3d%*4d%f”, 输入 12345678765.43 则123k, 8765.43f,例 scanf(“%2d%*3d%2d”, 输入 1234567 则12a, 67b,例 #include main() char c1,c2; scanf(“%3c%2c“, 输入 abcde 则ac1, d c2,输入分隔符的指定 一般以空格、TAB或回车键作为分隔符 其它字符做分隔符:格式串中两个格式符间字符,例 scanf(“%d%o%x”, 输入 123 123 123 输出 a=123,b=83,c=291,例 scanf(“%d:%d:%d”, 输入 12:30:45 则12 h, 30 m, 45 s,例 scanf(“%d,%d”,&a,&b) 输入 3,4 则3a, 4 b,例 scanf(“a=%d,b=%d,c=%d”, 输入 a=12,b=24,c=36 ,说明: 用“%c”格式符时,空格和转义字符作为有效字符输入,如 scanf(“%c%c%c”, 若输入abc 则ac1, c2, b c3,输入数据时,遇以下情况认为该数据结束: 遇空格、TAB、或回车 遇宽度结束 遇非法输入,如 scanf(“%d%c%f”, 若输入1234a123o.26 则 1234 a, a b, 123 c,输入函数留下的“垃圾”:,例 #include main() int x; char ch; scanf(“%d“, 执行:123 输出:x=123,ch=10,例 #include main() int x; char ch; scanf(“%d“, 执行:123 输出:x=123,ch=10,解决方法: (1)用getchar()清除 (2)用函数fflush(stdin)清除全部剩余内容 (3) 用格式串中空格或“%*c”来“吃掉”,例 int x; char ch; scanf(“%d”,4.3顺序结构程序设计举例应用举例,#include #include main() float a,b,c,s

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论