输出$$1234$1522756
例4、设置对齐格式
函数setiosflags(ios::left)和setiosflags(ios::right)用来控制输出左右对齐格式。当数据实际宽度小于输出宽度时该控制才起作用。默认情况下数据输出是右对齐。
#include
#include
void main( )
{
int number=1234;
cout
}
输出1234$$1522756$
例5、控制浮点数显示
函数setprecision(n)可用来控制输出流显示浮点数的数字个数(整数部分加小数部分)。c++默认的流输出数值的有效位是6。当小数截短显示时,进行四舍五入处理。
函数setflags(ios::fixed)用来控制符点数是按纯小数方式显示,函数setflags(ios::scientific)用来控制符点数是按科学记数法方式显示。系统默认为纯小数方式输出。
函数setiosflags(ios::showpoint) 用来强制显示小数点和符号。
#include
#include
void main( )
{
float x=20.0/7; y=18.0/6;
cout
cout
cout
cout
cout
cout
cout
}
输出结果为:
2.85714 (默认6位,整数部分加小数部分)
2.857143e+000 (默认6位,指小数部分)
2.857142857142857e+000 (double型最多15位)
2.85714285714286 (double型有效位最多15位,整数部分加小数部分)
3 ( 无小数位)
3 (默认0不输出)
3.00000 (强制输出0)
2.8 标准输入输出函数printf与scanf
在程序设计中输入输出是不可缺少的内容,因此在C语言中提供了printf与scanf标准函数来满足输入输出要求。需要说明的是,在C++中提供了更方便的输入输出控制,这就是I/O流。但为了满足一些对printf与scanf使用习惯的要求,C++中仍保留了这两个函数。
一、printf函数
格式:
printf (格式控制字符串,输出项1,输出项2,…)
说明:
(1)格式控制字符串决定了数据输出的结果。它由“格式说明字符”和“普通字符”组成。普通字符按原样输出,格式说明字符将对应输出数据转换成指定的格式输出。格式控制字符串的形式为:
%[域宽]格式字符
域宽部分是可选的,每个格式说明对应于一个输出参数,该参数被转换成由格式说明规定的数据格式后输出。例如:
#include
void main()
{
int a=10;
float b=-5.2;
printf("a=%d,b=%8.3f",a,b);
}
输出结果如下:
a=10,b= -5.200
(2)格式说明字符及其规定的输出格式
printf的格式说明字符见下表
格式说明符
参数类型
输出格式
d,i
int
十进制整数
o
int
八进制数(无前导0)
x,X
int
十六进制数(无前缀0x或0X)
u
int
无符号十进制数
c
int
单个字符
s
char *
字符串(必须以’\0’结束或给定长度)
f
double
小数形式的的浮点数(小数位数由精度决定,缺省为6位)
e,E
double
标准指数形式的浮点数(小数位数由精度决定,缺省为6位)
%
不转换
输出一个%
域宽说明字符
域宽说明字符
意义
-
在指定的区域内以左对齐方式输出(无’-’号时为右对齐)
+
输出正值时前面冠以符号+
空格
输出的第一个字符不是符号时,要输出一个空格做前缀
0(零)
在域宽范围内用前导0填补空位
#
对于o格式输出前导0,对于x或X输出0x或0X前缀。
m(正整数)
指出输出数据的最小宽度。
.(小数点)
分隔域宽与精度,小数点前面可以没有与宽说明
n(正整数)
数据输出的精度即小数部分的位数,
h
指出输出数据是短整型
l
指出输出数据是长整型
L
指出输出数据是高精度浮点型(long double)
ÿ例1
#include
void main()
{
int a=10;
float b=-5.2;
printf("a=%#o,b=%08.3f",a,b);
}
输出结果为:
a=012,b=-008.200
ÿ例2
#include
void main()
{
int a=28,b=38;
long c=289868;
printf("%5d,%5d\n%ld\n",a,b,c);
printf("%3ld\n%7ld\n%d\n",c,c,c);
}
这是书上的例子(28页)。在32位机输出结果与书上的不一样。
28, 38
289868
289868
289868
289868 //16位机输出27724
ÿ例3
#include
void main()
{
int a=-3;
printf("%d,%o,%x,%X,%6x\n",a,a,a,a,a);
}
在16位机上输出结果为:
-3,177775,fffd,FFFD,fffd
在32位机上输出结果为:
-3,37777777775,fffffffd,FFFFFFFD,fffffffd
ÿ例4
#include
void main()
{
char ch=a;
int a=65;
printf("%c,%d,%3c\n",ch,ch,ch);
printf("%c,%d,%3d\n",a,a,a);
}
输出结果为:
a,97, a
A,65, 65
ÿ例5
#include
void main()
{
printf("%3s,%-5.3s,%5.2s\n","hello","hello","hello");
}
输出结果为:
hello,hel , he
说明:第一个"hello"按%3s输出,由于"hello"长度超过3,因此按实际长度输出。第二个"hello"输出宽度为5,且从前面截取3个字符左对齐输出,第三个"hello"的输出宽度仍为5,从"hello"中截取2个字符右对齐输出。
二、scanf函数
一般形式:
scanf(格式控制字符串,地址1,地址2,…);
说明:格式控制字符串同前面的printf函数。地址是指变量的地址,格式是变量的前面加&符号。
例如:
#include “stdio.h”
void main()
{
int i;
printf(“please input i:\n”);
scanf(“%d”,&i);
printf(“i=%d”,i);
}