资源描述
第三讲 输入输出函数
Printf()函数
Scanf()函数
Getchar()函数
Putchar()函数
一.格式输出函数printf()
前面的任务中我们已数次使用过这个函数。printf函数也称为格式输出函数,其核心字最后一个字母f即为“格式”(format)的意思。
1.printf函数一般形式
格式: printf(“格式控制字符串”,输出项1,输出项2,……输出项n);
功效:按指定的格式把输出列表中的数据显示到显示器屏幕上。
其中,格式控制字符串用于指定输出格式。格式控制字符串可由格式字符串和一般字符串两种组成。格式字符串是以%号开头的字符串,在%号背面跟有各种格式字符,用来阐明输出数据的类型、形式、长度、小数位数等。
例如:“%d”表示按十进制整型输出;
“%ld”表示按十进制长整型输出;
“%c”表示按字符型输出等。
一般字符串在输出时按原样输出,在显示中起提示作用。输出列表中给出了各个输出项,要求格式字符串和各输出项在个数和类型上应一一对应。
例2.3有一矩形,长度为a,宽度为b,求矩形的面积s。
#include<stdio.h>
main(){
float a,b,s;
a=3.26;
b=5.68;
s=a*b;
printf(“a=%4.2f,b=%4.2f,s=%7.2f\n”,a,b,s); }
则程序的运行成果是:
a=3.26,b=5.68,s= 18.52
2.格式字符串
表2-3 printf函数格式字符串完整格式及含义
%
-
0
m.n
l或h
格式字符
格式字符串的起始标志,是必选项。
指定左对齐输出
指定空位填0
m指定输出的域宽,即总长度。
n 指定输出数据的精度。
输出长度的修正
指定输出类型,是必选项
阐明:(1)两头的项为必选项,中间为可选项,m,n为正整数。
(2)格式字符和含义阐明如表所示:
表2-4 格式字符意义
格式字符
意 义
d
以十进制形式输出带符号整数(正数不输出符号)
o
以八进制形式输出无符号整数(不输出前缀0),#o输出前缀0
x,X
以十六进制形式输出无符号整数(不输出前缀Ox),#ox输出0x
u
以十进制形式输出无符号整数
f
以小数形式输出单、双精度实数
e,E
以指数形式输出单、双精度实数
g,G
以%f或%e中较短的输出宽度输出单、双精度实数
c
输出单个字符
s
输出字符串
(3)输出域宽m:用十进制整数来表示输出的最少位数。若实际位数多于定义的宽度,则按实际位数输出,若实际位数少于定义的宽度则补以空格或0。
(4)精度n:精度格式符以“.”开头,后跟十进制整数。本项的意义是:假如输出数字,则表示小数的位数;假如输出的是字符,则表示输出字符的个数;若实际位数不小于所定义的精度数,则截去超出的部分。
(5)长度:长度格式符为h和l两种,h表示按短整型量输出,l表示按长整型量输出。
例2.4 格式字符应用举例。
#include<stdio.h>
main(){
int a=15;
float b=123.1234567;
double c=12345678.1234567;
char d='p';
printf("a=%d,%5d,%o,%x\n",a,a,a,a);
printf("b=%f,%lf,%5.4lf,%e\n",b,b,b,b);
printf("c=%lf,%f,%8.4lf\n",c,c,c);
printf("d=%c,%8c\n",d,d);
}
其输出成果为:
注意提示:
1. %和格式符之间能够加其他修饰符。加*时作为指定域宽。27页例
2. 格式控制符的前后能够加其他字符,不过它们原样输出,一般是为了好辨别意义。只有格式控制符和转义字符不是原样输出。
3. 格式控制符与输出列表个数要相等。类型要一致。
4. 两个%的情况,多个%的情况。%%%d,%.%%%d,a.%.%%f
5. 输出项列表尽也许明确简单。最佳不要用++,--体现式。27页例
二. 格式输入函数scanf()
1.scanf函数一般形式
格式: scanf(“格式控制字符串”,地址列表);
功效:按指定的格式参数的要求,从终端上把数据传送到地址参数指定的内存空间中。
其中,格式控制字符串的作用与printf函数相同,但不能显示非格式字符串,也就是不能显示提示字符串。地址表列中的地址是通过对变量名“求地址”运算得到的,即地址运算符“&”后跟变量名。
例如:&a, &b,分别表示变量a和变量b 的地址。
例2.5 键盘输入三个整型数据并输出。
#include<stdio.h>
main(){
int a,b,c;
printf("输入三个整型数据a,b,c:"); //提示信息
scanf("%d%d%d",&a,&b,&c); //输入三个整型数据
printf("a=%d,b=%d,c=%d",a,b,c); //输出三个整型数据
}
在本例中,因为scanf函数自身不能显示提示串,故先用printf语句在屏幕上输出提示,请用户输入a、b、c的值。在输入数据时需要输入有效间隔符,即一个或多个空格或回车键作为相邻输入数值之间的间隔。
例如:7 8 9
或 7
8
9
运行成果为:a=7,b=8,c=9
2.格式修饰字符串
表2-5 scanf函数格式字符串的完整格式及含义
%
*
m
l或h
格式字符
格式字符串的起始标志,是必选项。
赋值抑制字符宽,不能阐明精度
m指定域宽,即总长度。
输出长度的修正如:ld,lf,le
指定输出类型,是必选项
阐明:(1)常见格式字符和意义如表所示:
表2-6格式字符意义
格式字符
字符意义
d
输入十进制整数
o
输入八进制整数
x
输入十六进制整数
u
输入无符号十进制整数
f或e
输入实型数(用小数形式或指数形式)
c
输入单个字符
s
输入字符串
提示注意:
1. 输入数据时的分隔标志: 若格式控制串中没有非格式字符(如%d%d%d是紧相连的)作输入数据之间的间隔则可用空格,TAB或回车作间隔。有的话原样输入,作为分隔符。
2. %和格式符之间能够加其他修饰符。加抑制符*时跳过前面的输出项。参考29页例子
3. 格式控制符的前后能够加其他字符,不过要求一一对应的原样输入。参考30页例子。
4. 格式控制符与输出列表个数要相等。否则得不到正确数据,但不一定报错。
5. 实数只能指定数据总宽度,不能指定小数宽度。假如没有输入间隔符但尽也许不要指定宽度,29页例子
6.输入字符数据时,若格式控制串中无非格式字符,则以为所有输入的字符均为有效字符。
例如:scanf("%c%c%c",&a,&b,&c);
输入为:x y z回车
则把‘x'赋予a, ‘ ' 赋予b,‘y'赋予c。
只有当输入为:xyz回车时,才能把‘x'赋于a,‘y'赋予b,’z'赋予c。假如在格式控制中加入空格作为间隔,则输入各字符之间可用空格或回车或TAB作为分隔符。
例2.6 简单的输入输出数据练习。
#include<stdio.h>
main(){
long a;
printf("input a long integer\n");
scanf("%ld",&a);
printf("%ld",a);
}
运行成果为:input a long integer
回车
例2.7 输入三个小写字母,输出其ASCII码和对应的大写字母。
#include<stdio.h>
main(){
char a,b,c;
printf("input character a,b,c\n");
scanf("%c%c%c",&a,&b,&c);
printf("%d,%d,%d\n%c,%c,%c\n",a,b,c,a-32,b-32,c-32);
}
运行成果为:input character a,b,c
abc
97,98,99,A,B,C
三.putchar 函数(字符输出函数)
putchar 函数是字符输出函数, 其功效是在显示器上输出单个字符。
其一般形式为:
putchar(字符变量)
例如:
putchar('A'); (输出大写字母A)
putchar(x); (输出字符变量x的值)
putchar(‘\101’); (也是输出字符A)
putchar('\n'); (换行)
对控制字符则执行控制功效,不在屏幕上显示。
使用本函数前必须要用文献包括命令:
#include<stdio.h>
或
#include “stdio.h”
四.getchar函数(键盘输入字符函数)
getchar函数的功效是从键盘上输入一个字符。
其一般形式为:
getchar();
一般把输入的字符赋予一个字符变量,组成赋值语句,如:
char c;
c=getchar();
【例4.2】输入单个字符。
#include<stdio.h>
void main(){
char c;
printf("input a character\n");
c=getchar();
putchar(c);
}
使用getchar函数还应注意几个问题:
1) getchar函数只能接收单个字符,输入数字也按字符处理。输入多于一个字符时,只接收第一个字符。
2) 使用本函数前必须包括文献“stdio.h”。
3) 在TC屏幕下运行含本函数程序时,将退出TC 屏幕进入用户屏幕等候用户输入。输入完成再返回TC屏幕。
4) 程序最后两行可用下面两行的任意一行替代:
putchar(getchar());
printf(“%c”,getchar());
展开阅读全文