计算机二级C语言-第3章输入输出函数_第1页
计算机二级C语言-第3章输入输出函数_第2页
计算机二级C语言-第3章输入输出函数_第3页
计算机二级C语言-第3章输入输出函数_第4页
计算机二级C语言-第3章输入输出函数_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

第三章输入输出函数一、字符输入输出操作例如:#include<stdio.h>字符标准输入字符标准输出

C语言本身不提供输入输出语句,输入输出操作是由函数实现的。

C语言的输入输出函数的处理程序不在C语言本身,因而在运行时要连接函数库,但必须在程序中将相应的文件头部加载。在计算机终端键盘上输入数据。在终端显示器上输出数据。二、有格式输入输出操作的实现格式输出函数printf格式输入函数scanf1、格式输出函数printf功能:

该函数按指定的格式输出多个、不同类型的数据。格式:printf(格式控制,输出表列)格式控制:也称为转换控制字符串。它包含格式转换说明和需原样输出的普通字符。输出表列:要输出其值的表达式表列,该表列中的参数可为多个,也可没有。输出列表中变量的位置、个数和类型必须与格式控制字符串中的格式转换说明符对应。普通字符的输出普通字符即需要原样输出的字符。printf("a=%db=%d",a,b);普通字符设a,b分别为3和4,则有:a=3

b=4输出列表举例“输出表列”是需要输出的一些数据,可以是表达式。可以有多项,也可以没有。printf("a=%da+b=%d",a,a+b);输出表列printf(“输出提示信息!");格式说明

格式说明:是从“%”开始到其后第一个格式说明符。格式说明符:⑴d格式符⑵o格式符⑶x格式符⑷u格式符⑸c格式符⑹s格式符⑺f格式符⑻e格式符⑼g格式符(1)d格式符功能以带符号的十进制整型格式输出整数。格式%d按整型数据的实际长度输出%ldl或(L)表示输出长整型数据%md按长度为m输出整型数据,不足补空格%0md按长度为m输出整型数据,不足补0.

a=123;b=12345;printf("%4d,%05d,%d",a,a,b);

_123,00123,12345

由于是将内存单元的各位的值(0或1)按八进制形式输出,因此输出的数值不带符号。(2)

o格式符功能以八进制、无符号形式输出整数。格式%o,%mo对于长整型数可以用“%lo”格式输出。以十六进制无符号形式输出整数。(3)

x格式符功能格式%x,%mx对于长整型数可以用“%lx”格式输出。a=-1;printf("%x,%6x,%d",a,a,a,a);ffff,△△ffff,-11111111111111111

一个有符号整数(int型)也可用%u输出;反之,一个unsigned型也可用%d、%o,%x输出。(4)

u格式符以十进制无符号形式输出unsigned数据。功能格式%u,%mu(5)

c格式符功能用来输出一个字符。格式%c%mcc='a';printf("%c,%3c,%d",c,c,c);a,△△a,97注:上行的%c和c的意义不同。其值在0—255内的整数,可用c或d输出。一个字符,可用c或d输出。(6)

s格式符输出字符串,直到遇到字符串结束标识\0为止。功能格式1、%s

按字符串的实际长度输出。printf("%s","china");china2、%ms

输出的字符串占m列。printf("%3s,%7s","china","china");china,△△china1.当字符串实际长度>m,则按实际长度输出。2.当字符串实际长度≤m。则左端补空格。3、%-ms

输出的字符串占m列。printf("%3s,%-7s","china","china");china,china△△1.当字符串实际长度>m,则按实际长度输出。2.当字符串实际长度≤m。则右端补空格。4、%m.ns

输出的字符串占m列。printf("%7.2s","china");△△△△△ch1.左端输出m-n个空格,右端输出字符串左n个字符。2.当字符串实际长度≤n。则n为字符串长度。

5、%-m.ns

输出的字符串占m列。printf("%-7.2s,%.4s","china","china");ch△△△△△,chin1.右端输出m-n个空格,左端输出字符串左n个字符。2.当字符串实际长度≤n。则n为字符串长度。3.当m没有时自动地m=n=4。(7)

f格式符用来输出实数(包括单精度、双精度)以小数形式输出。功能格式1、%f:实数的整数部分全部输出,小数部分保留六位。2、%mf:输出的实数共占m位,小数部分保留六位。

m>实际长度,左端补空格。3、%.nf:输出的实数,总宽度按实际宽度,小数部分占n位。floata=123.45;printf(“%f,%11f,%.2f”,a,a,a);

程序运行结果为:

123.450000,_123.450000,123.454、%m.nf,输出的实数包括小数点在内共占m位,其中小数部分占n位。

如果数据的实际宽度小于m,右靠齐,左边补空格。5、%-m.nf,输出的实数包括小数点在内共占m位,其中小数部分占n位。如果数据的实际宽度小于m,则左靠齐,右边补空格.floata=123.45;printf(“%10.2f,%-10.2f”,a,a);

程序运行结果为:___123.45,123.45___(8)

e格式符以指数形式输出实数功能格式1、%e

输出6位小数;指数部分占5位,(其中e占一位,指数符号占一位,指数占3位),%e输出实数占13列宽度。如:printf(“%e”,123.2456);输出:1.232456e+0028列5列2、%me

输出的实数共占m位,小数部分保留六位。

m>实际长度,左端补空格。3、%m.ne

数据共占m位,(当m<n+7,突破m的限制)。

n为数据的小数部分的小数位数,实际长度<m,右靠齐,左端补空格。4、%-m.nen为数据的小数部分的小数位数,

实际长度<m,左靠齐,右端补空格。printf(“%10.2e”,123.2456);输出:

1.23e+00210列(9)

g格式符根据数值的大小,自动选择f或e输出实数。功能格式%g选择占宽度较小的一种。printf函数使用说明1.有些系统要求格式字符要用小写字母。printf("%d,%f",a,f);√printf("%D,%F",a,f);×2.如输出字符%,则在“格式控制”字符串重用连续的两个%字符。printf("%f%%\n",1.0/3);输出:0.333333%3.可以在“格式控制”字符串内包含“转义字符”。例如:\n,\t,\b,\r,\f等。printf("%d,%f\n",a,f);转义字符转义字符功能\n换行(回车换行)\t横向跳格(跳向下一输出区)(8列)\v竖向跳格\b后退一格\r回车(回本行第一列)\f走纸换页\\输出反斜杠字符\ˊ输出单引号字符\ddd(d为数据)1到3位8进制数所代表的字符\xhh(x为数据)1到2位16进制数所代表的字符printf函数举例#include<stdio.h>main(){inta=29;longb=123456;doublex=123.456;charc=':';printf("1.a=%d,a=%4d,",a,a);printf("a=%-4d,a=%04d\n",a,a);printf("2.a=%o,a=%04o,",a,a);printf("a=%x,a=0x%x\n",a,a);printf("3.b=%ld,b=%8ld\n",b,b);printf("4.x=%f,x=%.2f",x,x);printf("x=%10.2f,x=%-10.2f\n",x,x);1.a=29,a=29,a=29,a=00292.a=35,a=0035,a=1d,a=0x1d3.b=123456,b=1234564.x=123.456000,x=123.46,x=123.46,x=123.46printf("5.x=%e,x=%.2e,x=%g\n",x,x,x);printf("6.%c%8s%c\n",c,"howareyou",c);printf("7.%c%15s%c\n",c,"howareyou",c);printf("8.%c%+10.3s%c\n",c,"howareyou",c);printf("9.%c%-10.3s%c\n",c,"howareyou",c);}5.x=1.234560e+02,x=1.23e+02,x=123.4560016.:howareyou:7.:howareyou:8.:how:9.:how:2、格式输入函数scanf功能:

该函数可按指定的格式输入多个不同类型的数据,并将输入数据存入地址参数所指定的地址单元。格式:scanf(格式控制,地址表列)格式控制:与printf的格式控制含义相同。输出表列:是由若干个地址组成的表列,可以是地址,或字符串首地址。&:取地址符格式:&变量名

一般格式scanf(“格式控制字符串”,变量1的地址,变量2的地址,…,变量n的地址);

格式控制符与后续参数中的变量地址的对应关系

已知:

inta,b;函数调用:

scanf("%d%d",&a,&b);假设输入:

10□20↙变量的值:a的值是10,b的值是20scanf附加的格式说明字符字符说明l用于输入长整形数据(可用%ld、%lo、%lx),以及double型数据(用%lf或%le)h用于输入短整形数据(可用%hd、%ho、%hx)域宽(为以正整数)

指定输入数据所占宽度(列数)*表示本输入项在读入后,不赋给相应的变量。

scanf函数的格式控制符

%[*][width][l|h]Type

一般形式:

说明:

[]:表示可选项,可缺省。|表示互斥关系。

width:指定输入数据的域宽,遇空格或不可转换字符则结束。

Type:各种格式转换符(参照printf)。*:抑制符,输入的数据不会赋值给相应的变量。

l:用于d、u、o、x前,指定输入为long型整数;用于e、f前,指定输入为double型实数。

h:用于d、u、o、x前,指定输入为short型整数。

使用scanf函数注意事项

(1)如果相邻两个格式控制符之间,不指定数据分隔符(如逗号、冒号等),则相应的两个输入数据之间,至少用一个空格分隔、Tab键分隔,或者输入一个数据后,按回车,然后再输入下一个数据。

(2)格式控制字符串中出现的常规字符(包括转义字符),务必原样输入。

(3)为改善人机交互性,同时简化输入操作,在设计输入操作时,一般先用printf()函数输出一个提示信息,再用scanf()函数进行数据输入。

(4)当格式控制字符串中指定了输入数据的域宽width时,将读取输入数据中相应的width位,但按需要的位数赋给相应的变量,多余部分被舍弃。例如:

scanf("%d%d",&num1,&num2);

假设给num1输入12,给num2输入36,则正确的输入操作为:

12□36↙

或者

12↙36↙

使用“↙”符号表示按回车键操作。例如:

scanf("%d:%d:%d",&h,&m,&s);

假设给h输入12,给m输入30,给s输入10,正确的输入操作为:

12:30:10↙

例如:

scanf("num1=%d,num2=%d\n",&num1,&num2);

假设给num1输入12,给num2输入36,正确的输入操作为:

num1=12,num2=36\n↙例如:将scanf("num1=%d,num2=%d\n",&num1,&num2);改为:

printf("num1=");scanf("%d",&num1);printf("num2=");scanf("%d",&num2);例如:

scanf("%3c%3c",&ch1,&ch2);

假设输入abcdefg↙,则系统将读取的“abc”中的'a'赋给变量ch1;将读取的"def"中的'd'赋给变量ch2。

使用scanf函数注意事项

(5)当格式控制字符串中含有抑制符‘*’时,表示本输入项对应的数据读入后,不赋给相应的变量(该变量由下一个格式指示符输入)。

(6)使用格式控制符%c输入单个字符时,空格和转义字符均作为有效字符被输入。

(7)输入数据时,遇到以下情况,系统认为该数据结束:

遇到空格,或者回车键,或者Tab键。

遇到输入域宽度结束。例如“%3d”,只取3列。

遇到非法输入。比方说,在输入数值数据时,遇到字母等非数值符号。

(8)当一次scanf调用需要输入多个数据项时,如果前面数据的输入遇到非法字符,并且输入的非法字符不是格式控制字符串中的常规字符,那么,这种非法输入将影响后面数据的输入,导致数据输入失败。例如:

scanf("%2d%*2d%3d",&num1,&num2);printf("num1=%d,num2=%d\n",num1,num2);

假设输入123456789↙

输出结果为:num1=12,num2=567。

例如:

scanf("%c%c%c",&ch1,&ch2,&ch3);

假设输入:A□B□C↙,则系统将字母'A'赋值给ch1,空格'□'赋值给ch2,字母'B'赋值给ch3。

例如:

scanf("%d",a);

如果输入为:12a3↙,a的值将是12。例如:

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

如果输入为:12a34↙,那么a的值将是12,b的值将无法预测。正确的输入是:12,34↙

通过scanf函数从键盘输入数据通过scanf函数从键盘输入数据时,需要注意以下几点:1.scanf函数中的输入项必须是“地址量”,它可以是一个变量的地址,也可以是数组的首地址,但不能是变量名。例如,如果定义了a,b为整型变量,则

scanf(“%d,%d”,a,b);

是不合法的,应将“a,b”改为“&a,&b”。请读者予以注意,这是初学者易出错的地方。2.输入数据时,各个数据之间可以用空格“

”或Tab键或回车键作为间隔符。3.如果在“格式控制”字符串中除了格式说明以外还有其他字符,则在输入数据时应输入与这些字符相同的字符。例如,对应语句:

scanf(“%d,%d”,&a,&b);输入方式应为:1,3<回车>

注意:1后面是逗号,它与scanf函数中的“格式控制”中的逗号对应,若输入时不用逗号,而用空格或回车键等字符就不对。4.特别需要注意的是,在使用格式说明符%c输入一个字符时,凡是从键盘输入的字符,包括空格、回车等均被作为有效字符接收。例如对语句:

scanf(“%c%c”,&c1,&c2);若输入:

ab<回车>原意图是把字符‘a’赋给c1,‘b’赋给c2,而结果却是把空格赋给了c2。因为%c只要求读入一个字符,后面不需要用空格作为两个字符间隔,因此空格作为下一个字符

温馨提示

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

评论

0/150

提交评论