C(C++)输入输出格式 c&c++输入输出控制格式 许多情况下,都需要控制输出结果的表现形式。如输出宽度、输出精度、输出格式等。C++的iomanip.h中定义了许多控制符,这些控制符可以直接插入到流中,控制数据的输出格式。控制符有两种:控制常量和控制函数,控制常量定义在iostream.h中,控制函数定义在iomanip.h中。 常用控制符在iostream.h中,函数控制符在iomainip.h中。 控制符 描述 dec 10进制 hex 16进制 oct 8进制 setfill(c) 设填充字符为c setprecision(n) 设置显示小数精度为n位 setw(n) 设域宽为n个子符 setiosflags(ios::fixed) 小数方式表示 setiosflags(ios::scientific) 指数表示 setiosflags(ios::left) 左对齐 setiosflags(ios::right) 右对齐 setiosflags(ios::skipws) 忽略前导空白(用于输入) setiosflags(ios::uppercase) 16进制数大写输出 setiosflags(ios::lowercase) 16进制数小写输出 注意:除了setw(n)控制符之外,其他控制符对后面的所有输出起控制作用,直到改变输出格式为止。 例1、输出8进制和16进制数 常量dec、hex和oct用来控制必须按10进制、16进制或8进制形式输出。 1 #include<iostream> 2 using namespace std; 3 int main() 4 { 5 int number=15; 6 cout<<dec<<number<<” ”<<hex<< number<<” ”<<oct<<number<<” ”; 7 return 0; 8 } 结果为: 15 f 17 注意:由于这三个标识符已经被定义为系统常量,注意不能在定义为其他变量使用。 上面这段代码没有加#include<iomanip>也能正确运行,但是假如想下面这一段代码使用了setw就要加这个类引用了。 例2、设置值的输出宽度 函数setw(n)用来控制输出宽度,如果数据实际宽度大于设置宽度,将按实际宽读输出;如果设置宽度大于实际输出宽度,数据输出时将在前面补相应数量的空格。另外,该控制符只对一次输出起作用。 1 #include <iostream> 2 #include <iomanip> 3 using namespace std; 4 int main( ) 5 { 6 int number=1234; 7 cout<<setw(5)<<number<<setw(5)<<564<<endl; 8 return 0; 9 } 运行结果: _1234_ _564 例3、设置填充字符 setfill(c)函数用来设置填充的字符,默认情况下为空格。 1 #include <iostream> 2 #include <iomanip> 3 using namespace std; 4 int main() 5 { 6 int number=1234; 7 cout <<setfill(‘*’)<<setw(5)<<number<<endl; 8 return 0; 9 } 输出结果: *1234 例4、设置对齐格式 函数setiosflags(ios::left)和setiosflags(ios::right)用来控制输出左右对齐格式。当数据实际宽度小于输出宽度时该控制才起作用。默认情况下数据输出是右对齐。 1 #include<iostream> 2 #include<iomanip> 3 using namespace std; 4 int main() 5 { 6 int number=1234; 7 cout<<setiosflags(ios::left)<<setfill(‘*’)<<setw(6)<<number<<endl; 8 cout<<setiosflags(ios::right)<<setfill(‘*’)<<setw(6)<<number<<endl; 9 return 0; 10 } 输出结果: 1234 1234 例5、控制浮点数显示 函数setprecision(n)可用来控制输出流显示浮点数的数字个数(整数部分加小数部分)。 c++默认的流输出数值的有效位是6。当小数截短显示时,进行四舍五入处理。 函数setiosflags(ios::fixed)用来控制符点数是按纯小数方式显示。系统默认为纯小数方式输出。 函数setiosflags(ios::scientific)用来控制符点数是按科学记数法方式显示。 函数setiosflags(ios::showpoint) 用来强制显示小数点和符号。 1 #include<iostream> 2 #include<iomanip> 3 using namespace std; 4 int main() 5 { 6 const float x=20.0/7,y=18.0/6; 7 8 cout<<“x: ”; 9 cout<<x<<endl; 10 cout<<setiosflags(ios::scientific)<<x<<endl; 11 cout<<setiosflags(ios::fixed)<<x<<endl; 12 13 cout<<” y: ”; 14 cout<<y<<endl; 15 cout<<setiosflags(ios::showpoint)<<y<<endl; 16 return 0; 17 } 输出结果为: 2.85714 (默认6位,整数部分加小数部分) 2.e+000 (默认6位,指小数部分) 3 (默认0不输出) 3.00000 (强制输出0) 标准输入输出函数printf与scanf 在程序设计中输入输出是不可缺少的内容,因此在C语言中提供了printf与scanf标准函数来满足输入输出要求。需要说明的是,在C++中提供了更方便的输入输出控制,这就是I/O流。但为了满足一些对printf与scanf使用习惯的要求,C++中仍保留了这两个函数。 <1>、printf函数 格式: printf (格式控制字符串,输出项1,输出项2,…) 说明: (1)格式控制字符串决定了数据输出的结果。它由“格式说明字符”和“普通字符”组成。普通字符按原样输出,格式说明字符将对应输出数据转换成指定的格式输出。格式控制字符串的形式为: %[域宽]格式字符 域宽部分是可选的,每个格式说明对应于一个输出参数,该参数被转换成由格式说明规定的数据格式后输出。 例如: 1 #include <iostream> 2 #include <iomanip> 3 using namespace std; 4 int main() 5 { 6 int a=10; 7 float b=-5.2; 8 printf(“a=%d,b=%8.3f ”,a,b); 9 return 0; 10 } 输出结果如下: 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 1 #include<stdio.h> 2 int main() 3 { 4 int a=10; 5 float b=-5.2; 6 printf(“a=%#o,b=%08.3f”,a,b); 7 return 0; 8 } 输出结果为: a=012,b=-008.200 例2 1 #include<stdio.h> 2 int main() 3 { 4 int a=28,b=38; 5 long c=; 6 printf(“%5d,%5d %ld ”,a,b,c); 7 printf(“%3ld %7ld %d ”,c,c,c); 8 return 0; 9 } 结果: 28, 38 //16位机输出27724 例3 1 #include<stdio.h> 2 int main() 3 { 4 int a=-3; 5 printf(“%d,%o,%x,%X,%6x ”,a,a,a,a,a); 6 return 0; 7 } 在16位机上输出结果为: -3,,fffd,FFFD,fffd 在32位机上输出结果为: -3,,fffffffd,FFFFFFFD,fffffffd 例4 1 #include<stdio.h> 2 int main() 3 { 4 char ch=’a’; 5 int a=65; 6 printf(“%c,%d,%3c ”,ch,ch,ch); 7 printf(“%c,%d,%3d ”,a,a,a); 8 return 0; 9 } 输出结果为: a,97, a A,65, 65 例5 1 #include<stdio.h> 2 int main() 3 { 4 printf(“%3s,%-5.3s,%5.2s ”,”hello”,”hello”,”hello”); 5 return 0; 6 } 输出结果为: hello,hel , he 说明:第一个”hello”按%3s输出,由于”hello”长度超过3,因此按实际长度输出。第二个”hello”输出宽度为5,且从前面截取3个字符左对齐输出,第三个”hello”的输出宽度仍为5,从”hello”中截取2个字符右对齐输出。 <2>scanf函数 一般形式: scanf(格式控制字符串,地址1,地址2,…); 说明:格式控制字符串同前面的printf函数。地址是指变量的地址,格式是变量的前面加&符号。 例如: 1 #include<stdio.h> 2 int main() 3 { 4 int i; 5 printf(“please input i: ”); 6 scanf(“%d”,&i); 7 printf(“i=%d ”,i); 8 return 0; 9 } 变量的定义与初始化 看下面例子: 1 #include<iostream> 2 using namespace std; 3 int main() 4 { 5 int num; 6 char ch=’a’; 7 for (num=ch;num<=’z’;num++) 8 cout<<num<<“,”; 9 return 0; 10 } 程序输出什么结果? 答:将输出97,98,…,122 在c++中,任何一个变量在被引用之前必须被定义。 c++中变量可以在程序中随时定义,不必集中在程序之前。 定义格式: 〈类型〉〈变量名表〉; 当有多个变量时,其间用逗号隔开。 例如: int i,j,k; float x,y,z; char c1,c2,c3; 注意:在同一个内存块中不允许定义同名变量,即不允许重复定义一个变量。 变量在定义时可直接给变量一个初始值,称为变量初始化。变量初始化也可放在需要的时候进行。变量被初始化后其值将保存到被改变为止。变量定义以后,如果没有被初始化,并不意味着这个变量中没值,该变量中要么是默认值,要么是无效值。在后面将要讲到,对外部和静态变量定义后其默认值对int型的为0,对浮点型的为0.0;对char型为空。而其他内部变量未初始化时其值是无效的,这是因为该变量所在地址中的内容是先前保留下来的无意义的值。在定义变量时可一次初始化多个变量。 例如: float x,y=3.14,z=0.0; char ch1=’a’, ch2=’ ’; 这里,y,z,ch1,ch2在定义的同时就进行了初始化。 而x只是做了变量说明并没有赋初值。
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/65842.html