C语言输入和输出
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(5)不同类型的整型数据之间的赋值都是采用“按存储单元 中的存储形式直接传送”的方式来进行的。例如:
unsigned a; int b=-1; a=b; printf(“a=%d,a=%u\n”,a,a); printf(“b=%d,b=%u\n”,b,b); 在整数为16位的计算机上,其显示结果为: a=-1, a=65535 b=-1,b=65535 这里: b 11 a
③ %ms:m为输出时字符串所占的列数。如果字符串的 长度(字符个数)大于m,则按字符串的本身长度输出, 否则,输出时,字符串向右对齐,左端补以“空格” 符。
④ %-ms:m的意义同上。如果字符串的长度小于m, 则输出时字符串向左对齐,右端补以“空格”符。
⑤ %m.nf:m为浮点型数据所占的总列数(包括小数 点),n为小数点后面的位数。如果数据的长度小于m, 则输出时向右对齐,左端补以“空格”符。
程序执行时按下列 格式输入数据: 10 2.5<CR> 那么,程序的输出 结果将如下所示: i=10,f=2.5
(1) printf函数中的“格式控制”字符串 中的每一个格式说明符,都必须与“输出表”中的 某一个变量相对应,例如,上述程序中的“%d”与 i对应,“%f”与f对应,而且格式说明符应当与其 所对应的变量的类型一致。
g,G: 选用%f或%e格式中输出宽度较短的一种格式,不输出无用的0。
s: 输出以'\0'结尾的字符串。 o和x格式输出的数值不带符号,符号位也作为八/十六进制数一起显示 出来(补码形式)。如:a=-1;printf("%o",a);在整数占16位的计算 机上,将显示:177777。这是由于-1补码是:1111111111111111
当用户输入ABCDEFG时,系统将把A赋给变量c,将C赋 给变量c1,将F赋给变量c2 。 char s[100], s1[200]; scanf("%2s%3s",s,s1) 当用户输入ABCDEFG时,系统将自动地把 AB赋给变量s,将CDE赋给变量s1。
(4)在输入数据时,不能规定精度。例如: scanf("%7.2f",&a); //是错误的 (5)对unsigned型变量所需的数据,可以用 %u、%d、%o、%x格式输入 (6) 应该特别注意的是,scanf函数中的“地 址表”部分应当是变量的地址,而不是变量名,如果 只写出变量名,一般在编译阶段是检查不出错误的, 但当程序执行时,就会出现混乱。
(2) 若要利用printf函数来显示“%”字符, 则应在“格式控制”字符串中连写两个“%”。
例如:
printf("X=%d%%",100/4);
将显示: X=25%
① %md:m为指定的输出字段的宽度。如果数据的位数 大于m,则按实际的位数输出,否则,输出时向右对齐, 左端补以“空格”符。 %-md: 同上,向左对齐,右端补以“空格”符。 ② %mc:m为指定的输出字段的宽度。若m大于一 个字符的宽度,则输出时向右对齐,左端补以“空格” 符。 %-mc:同上,向左对齐,右端补以“空格”符。
(4) 除了格式说明符及其输出字段的宽度外,在“格 式控制”字符串中的其它字符,将按原样输出。
一般来讲,除非特殊需要,否则,在显示 数据时,可以不指定输出字段的宽度,而 直接利用系统隐含的输出宽度。
(5)在格式符o和x前如果有一个‘#’附加说明符,则在显示的八进 制或十六进制数的前面将分别加上0或0x(没有#时不加)。例如: int x=10;printf(“%#o,%#x”,x,x); 显示结果: 012,0xa(若格式符的X为大写的,则显示0XA)
“格式控制”部分是由双引号括起来的字符 串,它主要是由格式说明符组成的,而格式说明符 是由“%”和格式字符组成的。如,%c,%d等,它的 作用是将输入的数据转换为指定的格式后存入到由 地址表所指向的相应的变量中。
d,i:用来输入十进制整数。输入长整型数据时,使用 ld; 输入短整型数据时,使用hd。 o: 用来输入八进制整数。输入长整型数据时,使用 lo; 输入短整型数据时,使用ho。 x,X:用来输入十六进制整数。输入长整型数据时,使用lx; 输入短整型数据时,使用hx。 c: 用来输入单个字符。 f: 用来输入浮点数。可以用小数形式或指数形式输入 e,E,g,G:用来输入浮点数,对于输入来讲,其作用与f相同。 s: 用来输入以'\0'为结束标志的字符串。以非空白字符开始, 以第一个空白字符结束。(如输入:AB CD,则只读入AB) u: 用来输入无符号十进制数。无符号长整型用lu
数据的输出一般是以终端显示器(屏幕) 为处理对象的。
putchar函数的作用是向屏幕(显示器)输出一个字符。其 一般调用形式如下所示:
char c='A'; … putchar(c);
其作用是将变量c中的字 符输出到屏幕上当前光 标的位置上,其中c既可 以是字符型变量,也可 以是整型变量。
【例3.3】从键盘输入一字符,并显示到屏幕上。 #include "stdio.h" void main( ) { char c; c=getchar( ); putchar(c); }
由于C语言编译系统中的“stdio.h” 头文件中包含了与标准输入和输出有关的变量 定义及相应的宏定义,所以,在利用标准库函 数进行输入和输出时,一般需要用编译预处理 命令#include将文件“stdio.h”包含到用户源 文件中 用法如下所示:
#include "stdio.h"
本章将介绍几个最基本的输入和输出函数, 它们都是以终端键盘和终端屏幕(或系统隐含指 定的输入和输出设备)为处理对象的。
float b=12345.6789;
printf("U=%11.2f",b);
float b=12345.6789; printf("U=%3.3f",b);
结果:U=12345.679
结果:U=uuu12345.68
注:整数部分显示位数不受格式限制
⑥ %-m.nf:m、n的意义同上。如果数据的长度小于 m,则输出时向左对齐,右端补以“空格”符。
printf函数中的“输出表”是由变量名 组成的(与scanf函数不同),这些变量应当与" 格式控制"字符串中的格式说明符的类型一一对应, 如果“输出表”中有多个变量,则每个变量之间 应由逗号隔开。
【例3.4】从键盘输入一整型数和一浮点数,并显示到 屏幕上。 #include "stdio.h" void main( ) { int i; float f; scanf("%d%f",&i,&f); printf("i=%d,f=%f",i,f); }
【例3.1】从键盘输入一个字符,并把其存入字符型变 量x中。 #include "stdio.h“ void main( ) { char x; x=getchar( ); }
getchar函数只能输入一个字符,要想输入其 它类型的数据就需要使用scanf函数了。 scanf函数是具有格式控制的输入函数,它可以 用来输入C语言中的任何类型的数据,而且可以同时 输入多个同类型的或不同类型的数据。其一般调用形 式如下所示: scanf(格式控制,地址表);
(1) 在scanf函数“格式控制”部分中的每个 格式说明符,都必须在“地址表”中有一个变量与之 对应。 例如: 上述程序中“%d”与&i对应,“%f”与&f对应, “%c”与&c对应。而且,格式说明符必须要与相应 变量的类型一致。
(2) 当格式说明符之间没有任何字符时,在输 入数据时,两个数据之间使用“空格”、tab或“回车” 键作间隔;如果格式说明符之间包含其它字符,则输 入数据时,应输入与这些字符相同的字符作间隔。 例如:
以八进制无符号形式输出整数,输出长整型数据时,使用lo。
以十进制无符号形式输出整数,输出长整型数据时,使用lu。 以字符形式输出一个字符。 以十进制形式输出单、双精度浮点数。
x,X:以十六进制无符号形式输出整数,输出长整型数据时,使用lx。
e,E: 以指数(科学记数法)形式输出单、双精度浮点数。用“e”时指数以e 表示(如1.8e+4),用“E”时指数以E表示。
(7)如果在%后有一个’*’附加说明符,表示跳过它指定的 列数,即不赋给相应的变量。例如: scanf(“2d %*3d %2d”,&a,&b); 如果输入以下信息: 12u345u67(回车),其中u表示空格符 系统会将12赋给整型变量a,而%*3d表示读入3位整 数但不赋给任何变量。然后,再读入2位整数67赋给正型 变量b。
数据的输入一般是以终端键盘为处理对象的。
getchar函数的作用是接收从键盘输入的 一个字符。当程序执行到getchar函数时,将等 待用户从键盘输入一个字符,然后程序再继续执 行。其一般调用形式如下所示: char c; … c=getchar( );
c是字符型或整型变量, 它将接收从键盘输入 的一个字符。需要注意 的是,在利用getchar函 数来输入字符时,在从 键盘上打入一个字符 后,还需要按一次“回 车”键,才能够继续执 行。
scanf("%d,%f",&i,&f);
在输入数据时,应采用如下形式: 10,2.5<CR> 其中<CR>表示“回车”键。
如果采用如下语句: scanf("a=%d,b=%d,c=%d",&a,&b,&c); 则输入应为以下形式: a=1,b=2,c=3<CR> 在输入字符型数据时,由于“空格”也作为有效 字符输入,因此,不需要用“空格”作间隔,只要输 入一个字符即可。例如: scanf(“%c%c%c”,&c1,&c2,&c3); 若输入: a b c<CR> 则: ‘a’=>c1,空格字符=>c2,’b’=>c3 若输入:abc 则: ‘a’=>c1,’b’=>c2,’c’=>c3
scanf函数中的“地址表”是由变量的地址 组成的,如果“地址表”中有多个变量,则每个变 量之间应由逗号隔开。在C语言中,变量的地址可 由取地址运算符“&”得到,例如,变量a的地址可 写为&a。
【例3.2】利用scanf函数,从键盘输入一个整型数 (十进制)、一个浮点型数和一个字符,并分别存入 变量i、f和c中。 #include "stdio.h" 程序执行到scanf函 数时,需要用户从 void main( ) 键盘输入一个整型 { int i; 数据、一个浮点型 数据和一个字符后, float f; 才能够继续执行。 输入格式如下: char c; 12 23.5f<CR> scanf("%d%f%c",&i,&f,&c); (5和f之间没有空格) }
putchar函数也可 以输出一些特殊字 符(控制字符)。
putchar('\n')
它的作用是输出一 个“换行”字符。
又如:
putchar('\007');
它的作用是输出一 个“响铃”字符。
putchar函数只能输出一个字符,而不能输出 整型或浮点型数据。printf函数是具有格式控制的输 出函数,它可以用来输出C语言中任何类型的数据, 而且可以同时输出多个同类型的或不同类型的数据。 其一般调用形式如下所示: printf(格式控制,输出表);
“格式控制”部分与scanf函数相似,也是由 双引号括起来的字符串,其中主要包括格式说明符和 需要原样输出的字符。格式说明符是由“%”和格式字 符组成的,如,%c和%f等,它的作用是将要输出的数 据转换为指定的格式后输出。
d,i:以十进制形式输出带符号的整数,输出长整型数据时,使用ld。 Nhomakorabeao:
u: c: f:
1 1 1 1 1 1 1 1 1 1 1 1 1 1
(-1的补码)
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
(3) 可以在格式说明符的前面指定输入数据所占 的列数,系统将自动按此列数来截取所需的数据。
例如: scanf("%2d%3d",&x,&y);
scanf("%2c%3c%c",&c,&c1,&c2);
当用户输入98765时,系统将 自动地把98赋给变量x,将765 赋给变量y。这种方式也可用 于字符型数据的输入。