《C语言程序设计》课件第3章_第1页
《C语言程序设计》课件第3章_第2页
《C语言程序设计》课件第3章_第3页
《C语言程序设计》课件第3章_第4页
《C语言程序设计》课件第3章_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

★数据的输入输出是一个计算机程序应具备的基本功能。没有输出的程序是没有意义的。没有输入的程序是缺乏灵性和通用性的。由于C语言本身不像其他某些高级语言一样有输入和输出语句,其输入和输出是由标准的输入和输出函数完成的,使用标准输入输出函数时,由于这些函数的原型均在特定的stdio.h这个头文件中定义,因此需要通过预处理命令在程序开头嵌入头文件stdio.h,写出如下命令:

#include<stdio.h>

由于printf函数和scanf函数在程序中用的比较频繁,在程序的可以不加#include<stdio.h>命令本章将介绍标准函数库中部分常用的输入和输出函数。★

3.1字符输入输出函数

3.2格式输入输出函数

3.3应用举例本章目录3.1字符输入输出函数

1.字符输入函数getchargetchar函数的功能是从标准输入设备(通常是键盘)上输入一个字符。当程序执行到getchar函数时,将等待用户从键盘上输入一个字符,并将这个字符作为函数结果值返回。getchar函数没有参数。若需要使用putchar()函数,则要把头文件stdio.h包含进来。对字符输入函数的使用,调用形式如下getchar();

若需要使用getchar()函数,则要把头文件stdio.h包含进来。例3.1#include<stdio.h>main(){charc;printf("pleaseinputacharacter:");/*输出提示内容*/c=getchar();/*从键盘读入字符*/printf("Thecharacterinputedis%c\n",c);/*在屏幕上输出所输入的字符*/}运行结果:

运行该程序时,提示操作后输入一个或几个字符,但由于getchar函数只能接收一个字符,字符c被接收,其他字符不起作用。然后在终端上以字符格式输出所输入的字符。3.1字符输入输出函数

2.字符输出函数putchar()

该函数向标准输出设备(通常是显示终端)输出一字符。它的调用形式如下:

putchar(字符变量);

例3.2#include<stdio.h>main(){inta;/*定义整数变量名*/a=100;/*给变量赋值*/printf("outputthecharacter\n");putchar(a);/*输出字符*/}

运行结果 执行该程序,将把字符d(其ASCII码为100)输出在显示屏上。3.1字符输入输出函数

字符输入输出只能一次输入或输出一个字符,不能输入输出其他类型的数据。格式输入输出函数是具有格式控制的函数,它们可以用来输入输出C语言的标准类型的数据,而且可以同时输入或输出多个同类型或不同类型的数据。3.2格式输入输出函数

3.2.1格式输出函数

printf函数是将输出项按指定的格式输出到标准输出设备上。调用printf函数的一般形式如下:

printf(格式控制字符串,输出项列表);3.2格式输入输出函数照原样输出

printf(“I=%d,F=%f\n”,i,f);格式字符换行符输出项列表图3.1printf函数的参数说明

1.格式控制字符串

格式控制字符串通常是一对双引号括起来的字符串常量。它包括两方面的内容:1)格式字符它由字符“%”和格式字符组成,如%d、%f、%c等,它们规定了输出项的输出格式。常用的格式说明中的格式字符及含义如表3.1表3.1格式字符3.2格式输入输出函数格式字符

说明d

八进制整数o十进制整数x十六进制整数u

无符号十进制整型数

c

单个字符

s

字符串

f

小数形式的浮点数

e

指数形式的浮点数

g

e和f中较短的一种

2)

普通字符格式控制字符串中的普通字符是需要照原样输出的字符,可起提示作用。

2.输出项列表 输出项是需要输出的数据项(常量、变量或表达式),数据项应当与格式控制字符串中的格式字符一一对应。 如果输出项有多个,数据项之间用逗号隔开。例如:

printf(“A=%d,B=%f\n”,a,b)

如果上面的语句中a的值为10,f的值为1.5,则输出为:

A=10,B=1.5000003.2格式输入输出函数3.2格式输入输出函数

3.常用格式字符的用法

1)d、o、x、u格式字符属于整形数据的格式符,分别输出十进制、八进制、十六进制和无符号十进制整数。形式说明%d%o%x%u按整型数据的实际长度输出%md%mo%mx%mum为整数,按m指定的字段宽度输出,若数据的实际长度小于m,输出时,向右对齐,左端补以空格;若数据的实际长度大于m,则按实际长度输出。%ld%lo%lx%lu输出长整型数据

例3.3#include<stdio.h>main(){inta=12,b=123,c=12345;longd=123456;printf("%d,%4d,%4d,%ld,%8ld\n",a,b,c,d,d);printf("%o,%4o,%4o,%lo%8lo\n",a,b,c,d,d);printf("%x,%4x,%4x,%lx,%8lx\n",a,b,c,d,d);printf("%u,%4u,%4u,%lu,%8lu\n",a,b,c,d,d);}运行结果:3.2格式输入输出函数

对于一个数可以以不同的形式输出,好比一个人在社会中有很多角色一样,请读者自己体会。3.2格式输入输出函数2)c格式字符用来输出单个字符。形式说明%c按单个字符输出%mcm为整数,按m指定的字段宽度输出,若m>1,输出时,向右对齐,左端补以空格。例3.4#include<stdio.h>main(){charc='a';intn=98;printf("%c,%d\n",c,n);printf("%4c,%4d\n",c,n);printf("%d,%c\n",c,n);printf("%4d,%4c\n",c,n);}3.2格式输入输出函数运行结果:

如果整数的值在0~255范围内,也可以用字符形式输出;反之,字符数据也能用整型数格式输出。3.2格式输入输出函数3)s格式字符

用来输出字符串。形式说明%s按字符串的原样输出。%msm为整数,按m指定的字段宽度输出,若实际字符串长度大于m,则按实际长度输出;若实际字符串长度小于m,输出时,向右对齐,左端补以空格。%-msm为整数,按m指定的字段宽度输出,若实际字符串长度大于m,则按实际长度输出;若实际字符串长度小于m,输出时,向左对齐,右端补以空格。%m.ns输出指定宽度为m,从字符串左端取出n个字符输出。若n<m,则左边补足空格;若n>m,按n个字符输出。%-m.ns输出指定宽度为m,从字符串左端取出n个字符输出。若n<m,则右边补足空格;若n>m,按n个字符输出。3.2格式输入输出函数例3.5#include<stdio.h>main(){printf("%s\n","English");printf("%4s\n","English");printf("%8s\n","English");printf("%-8s\n","English");printf("%8.2s\n","English");printf("%-8.2s\n","English");}运行结果:

3.2格式输入输出函数4)f格式字符

用来输出实型数,以小数形式输出。形式说明%f按格式输出,整数部分全部输出,小数不分取6位。并非全部数字都是有效数字,单精度实型数有效位为7位,双精度实型数有效位为16位。%m.nf输出指定宽度为m(包含小数点),保留n位小数。若实际长度大于m,则按实际长度输出;若实际长度小于m,则左端补足空格。%-m.nf输出指定宽度为m(包含小数点),保留n位小数。若实际长度大于m,则按实际长度输出;若实际长度小于m,则右端补足空格。3.2格式输入输出函数例3.6#include<stdio.h>main(){floatf=1234.1234;doubled=12345.123456789;printf("%f,%lf\n",f,d);printf("%10.2f,%10.2lf\n",f,d);printf("%-10.2f,%-10.2lf\n",f,d);}运行结果:

可以看出,单精度实型数f只有前7位是有效数字,而最后三位是无意义的。

3.2格式输入输出函数5)e格式字符

以指数形式输出实数。指数形式为:

d.ddddde±xx

小数点前有1位非0数字,小数点占1位,小数点后的数字个数为n-1,n表示输出精度(有效数字位数),格式转换时四舍五入处理。指数部分包括字母e(或E)、正负号和至少两位数字,如e+03。形式说明%e按系统规定输出指数形式的实型数,系统规定:有效数字位数n=6,小数点后保留5位,转换时按四舍五入处理。%m.ne输出指定宽度为m(包含小数点),若实际长度小于m,则左端补足空格(对%-m.ne,则右端补空格)。若实际长度大于m,则按实际长度输出,保留n-1位小数,转换时按四舍五入。3.2格式输入输出函数例3.7#include<stdio.h>main(){floatf=123.456;printf("%e,%10.2e\n",f,f);}运行结果:

3.2格式输入输出函数6)g格式字符

用来输出实数,它根据数值的大小,自动选f格式或e格式(选择输出时占宽度较小的一种),且不输出无意义的零。例3.8#include<stdio.h>main(){floatf=123.456;printf("%f,%e,%g\n",f,f,f);}运行结果:

3.2格式输入输出函数3.2.2格式输入函数scanf

函数scanf的作用是从标准输入设备(通常是键盘)按照指定的格式把它们送到相应的数据存储地址中。调用scanf函数的一般格式如下:

scanf(格式控制字符串,地址表); 格式控制字符的含义同printf()函数。地址表是由若干个变量的地址组成的,它们之间用逗号隔开。变量的地址可由取地址运算符“&”得到(如变量a的地址为&a)。3.2格式输入输出函数例3.9用户从键盘输入一个整数、一个实数和一个字符。#include<stdio.h>main(){inti;floatf;charc;scanf("%d%f%c",&i,&f,&c);printf("%d,%f,%c\n",i,f,c);}运行结果:由于%f说明中没有指明精度,小数点后面保留6位小数。3.2格式输入输出函数

使用scanf函数应注意以下几个方面:

1.格式控制字符中的每个格式说明都必须与地址表中一个变量地址对应,类型应一致(例如3.9中,%d与&i对应,%c与&c对应,%f与&f对应)。

2.当格式控制字符之间没有任何字符时,输入数据之间用一个或多个空格、(Tab)键或回车键分开。下面输入均为合法:例如:

scanf("%d%d%d",&a,&b,&c);

可用以下方式输入a、b、c的值:

1)123(按回车健)

2)1(按回车键)

23(按回车键)

3)1<Tab>2(按回车键)

3

只要是不可显的字符都可以作为上面数据间的间隔符。3.2格式输入输出函数

3.若格式控制字符之间其他字符,则输入数据时,应输入这些字符间隔。例如:

scanf("%d,%d,%d",&a,&b,&c);

用以下方式输入a,b,c的值。

44,55,66(按回车键)

*4.在输入字符型数据时,由于空格也作为有效字符输入,因此不需要空格作为间隔时,只要直接输入字符就可以。例如scanf(“%c%c“,&a,&b)

输入数据时输入ch时,由于字符变量只能每次接收一个字符,所以中间不加上空隔,加上空格的话,如下面例中。3.2格式输入输出函数例3.10#include<stdio.h>main(){chara,b;scanf("%c%c",&a,&b);printf("%c%c\n",a,b);}运行结果:当输入c

h时,变量b接收的字符是空格,所以空格也作为有效字符。3.2格式输入输出函数■

5.可以在格式控制字符的前面指定输入数据的长度,系统将自动按此长度截取所需要的数据。

例3.11#include<stdio.h>main(){inta,b;scanf("%3d%2d",&a,&b);printf("%d,%2d",a,b);}

运行结果:如果用户输入12345时,系统自动地把123赋给a,将45赋给b。3.2格式输入输出函数

6.若%后面如有“*”,表示本输入项在读入后不赋给任何变量。例如:scanf(“%d%*d%d”,&a,&b,&c);如果用户输入112233,则系统自动将11赋给a,把33赋给b,第二数22虽被读入,但不赋给任何变量。例3.12#include<stdio.h>main(){inta,b,c;scanf("%d%*d%d",&a,&b,&c);printf("%d,%d",a,b);}运行结果:22没有赋给变量b,反而33给了变量b。3.2格式输入输出函数

7.输入数据时不能规定精度。例如

scanf(“7.2f”,&a);

上面的语句是不合法的。

8.在scanf函数中尽量不要加“\n“,否则程序有问题。请读者自己上机测试。3.3应用举例例3.13从键盘上输入任意三个数,然后输出这三个数并计算三个数的平均值。#include<stdio.h>main(){

floataverage,a,b,c;scanf("

温馨提示

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

评论

0/150

提交评论