5输入与输出
输入:从输入设备(如键盘、磁盘等)向计算机输入数据
输出:从计算机向输出设备(如显示器、打印机等)输出数据
通过流对象cin、cout分别进行流读取和流插入
字符输入输出函数包括:
字符输出函数 putchar
字符输入函数 getchar
注意:每执行一次只输入(输出)一个字符。
输出函数 putchar( )
格式:putchar (ch)
作用:向显示器(或系统隐含指定的输出设备)输出一个字符。
说明:
ch是具有字符ASCII码值的表达式。
通常加分号构成函数调用语句(putchar(ch);),该语句的执行将向显示器输出一个以ch的值为ASCII码的字符。
例子:
#include <stdio.h>
void main( )
{
char a,b,c;
putchar('b'); putchar('o'); putchar('y');
a='A';b='O';c='Y';
putchar(a+1); putchar(b); putchar(c);
}
输入函数 getchar( )
格式:getchar ( )
作用:从键盘(或系统隐含指定的输入设备)输入一个字符,并显示该字符(称为回显)。
说明:
该函数的返回值是输入的字符的ASCII码。
通常构成如下的说明和赋值语句:
char a;
a = getchar( );
注意:输入字符后要“回车”
字符输入函数getch( )和getche( )
getch( )
输入字符后不需要“回车” ,不回显,常用于密码输入。
getche( )
输入字符后不需要“回车” ,回显
注:该两函数在头文件conio.h中定义 #include <conio.h>
例子:
#include <stdio.h>
#include <conio.h>
void main ()
{
char ch;
ch=getche();
putchar(ch-32);
}
格式输入与输出
格式输入输出函数包括:
printf():格式输出函数
scanf():格式输入函数
格式输出函数printf( )
按用户指定的格式,依次输出各输出项。函数调用的形式:
printf(格式控制字符串,输出项表)
用双撇号括起来的字符串,包括:
1.格式说明:由%和格式说明符组成,作用是把输出项表中各输出项依次按指定的格式输出;
2.普通字符:需要原样输出的字符。
如:int x=3;
printf("x=%d\n", x);
注意:
格式控制字符串中的格式说明与输出项表中的输出项的个数必须相同,先后顺序也要一一对应。
printf (" a=%d, b=%x, c=%f ", a, b, c);
注意与下面的语句区别: printf ("x=%d",(a,b,c));
常用的格式说明
具体格式解析
%d 格式
1.%d-按整型数据的实际长度输出。
int a=356, b=4;
printf (" a=%d b=%d " ,a,b);
结果:a=356b=4
2.%ld-输出长整型数据。
long a=123456;
printf (" a=%ld " ,a);
结果:a=123456
3. %md-其中m为指定的输出字段的宽度。如果数据的实际位数小于m,则左端补以空格,若大于m,则按实际位数输出。
int a=123, b=12345;
printf (" a=%4d b=%4d " ,a,b) ;
结果:a=123b=12345
%o格式
%o-以八进制无符号整数形式输出。
int a=18;
printf ("a=%o",a) ;
结果:a=22
注意:如果整数为负数,则连同符号位也一起作为八进制的一部分输出。
%x格式
%x-以十六进制无符号整数形式输出。
int a=18;
printf ("a=%x",a) ;
结果:a=12
%f格式
%f-以实数的十进制形式输出。整数部分全部输出,小数部分只取前6位。
float a=12.3456;
printf ("a=%f ",a ) ;
结果:a=12.345600
%m.nf-指定输出的数据(包括小数点)共占m位,其中小数n位。
如果n大于小数部分的实际位数,输出时小数部分用0补足;如果n小于小数部分的实际位数,则将小数部分多余的位四舍五入
float a=12.3456;
printf ("%8.2f,%8.4f" ,a,a) ;
结果:12.35,12.3456
%e格式
%e-以规范化指数形式输出实数。小数部分占6位,指数部分占5位。
float a=12.3456;
printf ("a=%e",a) ;
结果:1.234560e+001
%c 格式
%c-输出一个字符。
char a1= 'c' ,a2= 'h' ;
printf ("%c,%c",a1, a2 );
结果:c, h
%s 格式
%s-输出一个字符串。
printf ("%s","CHINA")
结果:CHINA
%m.ns-n表示从字符串中截取的字符数
printf ("%4.2s","CHINA")
结果:CH
例子:
若有定义和语句:
int i=010, j=10;
printf ("%d,%4d,%-4d \n", i, j, j) ;
其输出结果是8, 10, 10。
若有语句:
int i=10, j=10 ;
printf ("%d,%+d \n", i--, --j) ;
其输出结果是 10,+9。
若有语句:
int n=10;
printf ("% \n", n) ;
其输出结果是 。(空白)
若有定义和语句:
int x=0177 ;
printf ("%4d,%4o,%#4o\n", x, x, x) ;
其输出结果是 127, 177, 0177。
若有定义和语句:
float f=3.1415927;
printf ("%f,%5.4f,%6.3f \n", f, f, f) ;
其输出结果是 3.141593, 3.1416, 3.142。
若有语句:
float f=31.4159;
printf ("%e \n", f) ;
其输出结果是 3.141590e+001。
格式输入函数scanf
函数调用的形式:
scanf (格式控制字符串,输入项地址表 )
其中:
格式控制字符串:含义同 printf 函数。
输入项地址表 :需要接受输入数据的所有变量的地址,或字符串的首地址。
作用:按指定的格式,从标准输入设备(键盘)上输入数据,并存入到地址表指定的地址中。
例子:
int a,b,c;
scanf("%d %d %d" ,&a,&b,&c);
说明:
&a,&b,&c中的&是地址运算符,&a表示a在内存中的地址。
"%d %d %d"表示按十进制整数输入a,b,c的值。输入数据时,在两个数据之间以一个或多个空格隔开。
注意:格式输入函数的格式控制字符串中不允许使用转义字符
如:
int x,y;
scanf("%d %d\b", &x, &y);
输入过程中分隔符的使用:
1.若格式说明之间有一个或多个字符,则以这些字符为分隔符;
2.除字符型格式(%c)外,若格式说明之间没有任何其他字符,则以空格符或回车键或Tab键为分隔符。
例子:
为使c1='A' ,x=12,y=34,若有如下语句,如何输入?
char c1;
int x,y;
scanf("%d%c%d ",&x,&c1,&y);
答案:12A34 或 12A34
例子:
为使k1=10,k2=20,k3=30,k4=40,针对下列语句,如何输入?
scanf("%d%d",&k1,&k2);
scanf("%d,%d",&k3,&k4);
答案:102030, 40
若有如下语句,输入100后,输出是?
int n;
scanf ( "%o", &n );
printf ( "n=%d \n", n );
答案:n=64