信息从计算机的外部设备流入计算机称为输入。printf格式换行
从计算机主机流向外部设备称为输出。
C语言中没有输入输出语句,而是由输入输出函来实现的输入/输出的。
C标准函数库中包含的常用输入输出函数有:
格式输出函数printf()
格式输入函数scanf()
单个字符输出函数putchar()
单个字符输入函数getchar()
使用标准输入输出库函数时,要用编译命令“#include”将有关头文件“stdio.h”包括到用户的源文件当中。即:
#include<stdio.h>或
#include“tdio.h”
stdio是standard input & output(标准输入与输出)的缩写。
一般格式:
printf(格式控制”,输出列表);
例如:printf(“a=%d,b=%c\n”,a,b)
功能:向默认输出设备(一般是显示器)输出“输出列表”中各数据项。
1.格式控制
格式控制也称“控制字符串”,是由双引号括起来指定输出格式的字符串。他由格式说明、控制字符和普通字符三部分组成:
(1)格式说明
构成:由“%”字符开始后面跟有各种格式字符。
作用:以说明输出数据的类型、形式、长度、小数位等格式。
C语言提供的常用printf()函数格式说明如表3.1所示:
表3.1 printf()函数格式说明及应用举例
(2)控制字符
控制字符用于控制设备的动作,如下表中制表符“\t”、换行符“\n”等。
常见控制字符
例如:
printf(“x=%d\n”,x);
(3)普通字符
除格式说明和控制字符之外,其他字符均属普通字符,打印时按原样输出。例如:
printf(“x=%d,%c”,12,6*8);
其中“x=”和“,”都是普通字符。
输出结果是:x=12,48
2.输出列表
输出列表:就是需要输出的各数据项表达式,表达式之间用逗号分隔。
3.附加说明符
在%与格式字符间插入附加说明符,组成:
“% <附加说明字符><格式符>”输出格式来达到更高输出格式要求。
常用附加说明符如表3.2所示:
表3.2 printf()函数附加格式说明
数据输出的最小宽度,当数据实际宽度超过m时,则按实际宽度输出,如实际宽度短于m,则输出时前面补0或空格。
【例3.1】输出整型、长整型、无符号整型数据
#include “stdio.h”
void main()
{
int y=20;
long a=1024;
unsigned b=54321;
printf(“%d,%ld,%u\n”,y,a,b);
printf(“%+8d,%+8ld,%+8u\n”,y,a,b);
printf(“%08d,%08ld,%08u\n”,y,a,b); /
printf(“%-8d,%-8ld,%-8u\n”,y,a,b);
printf(“%o,%lo,%o\n”,y,a,b);
printf(“%#x,%#lx,%#x\n”,y,a,b);
printf(“%8o,%8lo,%8o\n”,y,a,b);
printf(“%-8x,%-8lx,%-8x\n”,y,a,b);
}
运行结果如下:(ㄩ代表空格)
20,1024,54321
ㄩㄩㄩㄩㄩ+20,ㄩㄩㄩ+1024,ㄩㄩㄩ54321
00000020,00001024,00054321
20ㄩㄩㄩㄩㄩㄩ,1024ㄩㄩㄩㄩ,54321ㄩㄩㄩ
24,2000,152061
0x14,0x400,0xd4321
ㄩㄩㄩㄩㄩㄩ24,ㄩㄩㄩㄩㄩ2000,ㄩㄩ152061
14ㄩㄩㄩㄩㄩㄩ, 400ㄩㄩㄩㄩㄩ, d4321ㄩㄩㄩ
【例3.2】输出字符和字符串
#include “stdio.h”
void main()
{
char ch=’a’;
printf(“%c\n”,ch);
printf(“%-3c\n”,ch);
printf(“%3c\n”,ch);
printf(“%s\n”,”programing”);

printf(“%15s\n”,”programing”);
printf(“%-15s\n”,”programing”);
printf(“%10.5s\n”,”programing”); /
printf(“%-10.5s\n”,”programing”);
}
运行结果如下:
a
aㄩㄩ
ㄩㄩa
programing
ㄩㄩㄩㄩㄩprograming
programingㄩㄩㄩㄩㄩ
ㄩㄩㄩㄩㄩprogr
progrㄩㄩㄩㄩㄩ
【例3.3】输出实型数据
#include “stdio.h”
void main()
{ float x,y;
double a;
x=111111.111;y=123.468;
a=333333333.33333;
clrscr();
printf(“%f\n”,x);
printf(“%f\n”,a);
printf(“%10f,%10.2f,%.2f,%-10.2f\n”,x,x,x,x);
printf(“%e\n”,x);
printf(“%e\n”,a);
printf(“%10e,%10.2e,%.2e.%-10.2e\n”,a,a,a,a);
printf(“%f,%e,%g”,y,y,y);
}
程序运行结果如下:
111111.109375
333333333.333330
111111.109375, ㄩ111111.11,111111.11,111111.11ㄩ
1.11111e+05
3.33333e+08
3.33333e+08, ㄩㄩㄩ3.3e+08,3.3e+08.3.3e+08ㄩㄩㄩ
123.468002,1.23468e+02,123.468
4.在使用printf()函数时,还应注意以下问题
(1) 调用printf()函数时,格式式转换说明符与输出项必须顺序和数据类型上一一对应一致。
(2) VC6.0++ 规定:当格式说明符明个数少于输出项个数时,多余的输出项不予输出。当格式说符明个数多于输出项个数时,而输出不定值。
(3) 当printf()函数中多个输出项为表达式时,VC6.0++ 规定先从右到左的顺序计算各表达式的值,然后再从左到右的顺序输出结果。
(4) 在使用“f”格式符输出实数时,并非全部数字都是有效数字,单精度实数的有效位数一般为7位,双精度数的有效位数一般为16位。
例如:
① #include “stdio.h”
void main()
{ float x=111111.111,y=222222.222;
printf("%f",x+y);
}
输出结果为:
333333.328125 /*前7位是有效数字,后面数字无意义*/
② #include “stdio.h”
void main()
{ double x=111111.11111,y=222222.22222;
printf("%lf",x+y);
}
输出结果为:
333333.333330 /*可达16位是有效数字,小数点保留6位*/
一般形式:
scanf("格式控制",地址列表);
功能:从键盘向程序中的变量输入一个或若干个任意类型的数据。
例如:
scanf("%d,%d",&a,&b);
1.格式控制
格式控制与printf基本相同,由格式说明、附加说明字符和普通字符三部分组成。printf格式换行
"% <附加说明字符><格式符>"
格式字符如表3.3所示,附加说明字符如表3.4所示。
表3.3 scanf函数格式说明及作用
表3.4 scanf函数附加格式说明及作用
用在格式字符d、o、x、u的前,表示输入长整型数据,用在f或e前,表示输入double型数据。
2.地址列表
地址列表:用逗号分隔的若干接收输入数据的变量地址。各变量地址间用逗号“,”分隔。
变量地址组成:由地址运算符“&”后跟变量名组成。
例如:
#include<stdio.h>
void main()

{
int a,b, c;
/*%d%d%d”表示要按十进制整数形式输入3个数*/
scanf(“%d%d%d”,&a,&b,&c);
printf(“a=%d,b=%d,c=%d\n”,a,b,c);
}
运行时按以下方式输入a,b,c的值:
3ㄩ4ㄩ5↙ (输入a,b,c的值,用空格间隔)
a=3,b=4,c=5 (输出a,b,c的值)
注:输入数据时,在两个数据之间以一个或多个空格间隔,也可以用Enter键、Tab键分隔,不能用逗号作为两个数据的分隔符。
下面输入均为合法:
①3ㄩ4ㄩ5↙
②3↙
4 5↙
③3(按Tab键)4↙
5↙
如下面的输入不合法:
3,4,5↙
3.使用scanf()函数时应注意的问题
(1)地址列表中的各个参量都是变量地址,而不是变量名。
例如:设a 、 b 分别为整型变量和浮点型变量,则
scanf("%d %f",&a,&b);
是合法的。而
scanf("%d %f",a,b);
是非法的。
(2)普通字符在输入数据时,在对应位置上输入相同字符。
例如:
scanf("%d,%d",&a,&b)
输入时应用如下形式:
3,4↙
以下输入格式是不对的:
3ㄩ4↙
3:4。
又如:scanf(”%d:%d:%d”,&x,&y,&z);
输入形式应为:12:13:14。
(3)对于实型数据,输入时不能规定其精度。
例如:
scanf(“%6.3f”,&x);
是不合法的。
(4)在用“%c”格式输入字符时,空格字符和“转义字符”都将作为有效的字符输入。
例如:
scanf("%c%c%c",&c1,&c2,&c3);
如果输入:
aㄩbㄩc↙
则字符'a'→c1,字符'ㄩ'→c2,字符'b'→c3。
正确输入方法是:
abc↙(中间没有空格)
(5)在输入数据时,遇到下列情况时,输入数据认为结束:
遇空格或按“回车”或“跳格”(Tab)键;
遇宽度结束,如“%3d”,只取3列;
遇非法输入;
例如:
scanf("%d%c%f",&a,&b,&c);
若输入
123a456o.26↙
¯ ¯ ¯
a b c
123→a ,字符a→b,456→c
注:第3个数4560.26错打成456o.26,由于456后面出现了英文字母“o”,就认为此数据结束,则将会把456送给c,后面的数据将不被接受。
(6)当使用多个scanf()函数连续给多个字符变量赋值时,例如:
#include<stdio.h>
void main()
{
char c1,c2;
scanf(“%c”,&c1);
scanf(“%c”,&c2);
printf(“c1 is %c,c2 is %c”,c1,c2);
}
运行该程序时如果输入:
A↙
输出结果为:
c1 is A,c2 is ↙ (即C2接收了一个回车符↙,而没有被赋值)
如果输入:
AB↙
输出结果为:
c1 is A,c2 is B。
(7)对于unsigned型变量所需的数据,可以用%u,%d或%o,%x格式输入。
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-26176-1.html
晚安