一个简单的c++程序,请帮忙分析一下(输入输出格式控制方面)

#include<iostream.h>
void main(void)
{
int i;

cin>>hex>>i;
cout<<i<<endl;
cout<<"i= "<<dec<<i<<endl;
cout<<"i= "<<hex<<i<<endl;
cout<<"i= "<<oct<<i<<endl;

cin>>dec>>i;
cout<<i<<endl;
cout<<"i= "<<dec<<i<<endl;
cout<<"i= "<<hex<<i<<endl;
cout<<"i= "<<oct<<i<<endl;

cin>>oct>>i;
cout<<i<<endl;
cout<<"i= "<<dec<<i<<endl;
cout<<"i= "<<hex<<i<<endl;
cout<<"i= "<<oct<<i<<endl;
}

运行结果为:
11
17
i=17
i=11
i=21
11
13
i=11
i=b
i=13
11
11
i=9
i=9
i=11

我想问的是,运行结果的第7行那个为什么是13而不是11,谢谢

第7行是按8进制输出的。
你可能是希望这一行按10进制输出而非8进制,但由于操作符对流格式的控制是通过修改流的标志位来实现的,所以在你源代码的第10行(包括空行)cout<<"i= "<<oct<<i<<endl; 中,流对象cout中的标志位已经被修改,所以它在下一次输出的时候使用的就是已经被修改后的标志位来进行格式输出,也就是八进制进行输出了。
你可以参考下《C++程序设计语言(特别版)》的第21章。
温馨提示:内容为网友见解,仅供参考
第1个回答  2008-04-14
应该是cout使用的上一次设置的条件输出的,cout<<"i= "<<oct<<i<<endl;

一个简单的c++程序,请帮忙分析一下(输入输出格式控制方面)
第7行是按8进制输出的。你可能是希望这一行按10进制输出而非8进制,但由于操作符对流格式的控制是通过修改流的标志位来实现的,所以在你源代码的第10行(包括空行)cout<<"i= "<<oct<<i<<endl; 中,流对象cout中的标志位已经被修改,所以它在下一次输出的时候使用的就是已经被修改后的标志位...

c++,怎么控制输出格式,使每一行格式相同,且对齐,就比如输出一个表格形...
cout.unsetf(ios::showpos);\/\/取消设置标志位 c里面控制输出格式是通过%10d,%10s等方式控制

一个筒单的C++问题
在C++编程中,遇到一个看似简单实则有趣的问题,即输出特定数值时的不同表示方式。这里主要探讨的是输出序列"10 -20 +10 -20"时,使用了setiosflags函数中的"showpos"标志。首先,我们需要理解"C++中的ios::showpos"标志作用于控制正数的输出前是否添加"+"号。在实际应用中,这个标志主要用于美化输出...

C\/C++scanf函数的使用(负载printf函数格式说明)
scanf函数格式为:scanf(格式控制字符串,变量地址列表)其功能是通过标准输入设备,按照格式控制字符串中的格式要求为变量地址列表中的变量输入数据。例如交换变量a和b的值并输出,可编写如下语句:运行结果:交换后的a和b值输出 注意,格式控制字符串中多个格式转换说明符间无逗号,输入数据时通常使用空格或...

关于一个C++的简单程序,输入数字判断范围,输入字符返回输入有误...
您的中文表达也不太容易懂。字符编码采取ASCII码,在这个码制里,数字0~9是相连的10个码,'0'最小,'9'最大。您要判断输入的字符是否为数字,只需要加如下判断就行了(假设您读入的字符在变量ch中):if ( ch>='0' && ch<='9' ) { \/\/这里是输入数字的处理代码 } else { \/\/这里是...

C++格式化输入输出简介
Bytes:字节 bit:位 1Bytes=8bit 1KB=1024B 1MB=1024KB 1MB=1024*1024B 注意:不建议在同一程序中混合使用C和C++风格的输入输出,以免出错!二、格式化输出函数:格式化输入函数和格式化输出函数是C语言标准库函数。printf()函数的一般语法格式如下:printf("",);1.格式化字符串:用双引号括起来...

C语言中有输出格式控制,C++怎么实现?
对于流数据的输入输出格式,C++提供了两种不同的控制方式,一种是使用ios_base类提供的setf、width等函数设置输入输出格式,另一种是通过重载的格式控制符“<<”、“>>”以及流格式控制对象进行设置。本文只介绍:用函数设置或者恢复格式 大部分流的输入输出格式可以用setf函数来设置。该函数有两种重载形式...

C++二维数组的输入和输出
include<stdio.h> include<stdlib.h> int main(){ int m,n,i,j;int **x;scanf("%d%d",&m,&n);x=(int **)malloc(sizeof(int *)*m);for(i=0;i<m;i++){ x[i]=(int *)malloc(sizeof(int)*n);} for(i=0;i<m;i++){ for(j=0;j<n;j++){ scanf("%d",&x[i]...

c\/ c++中cout的格式化输出是怎样?
double pi = 3.1415926535;cout.precision(3);cout << pi; \/\/ 输出:3.14 (保留3位小数)要控制对齐方式,可以使用setf()方法和unsetf()方法,例如:在 C++ 的 I\/O 操作中,通过 setf() 和 unsetf() 方法可以对格式标志进行设置和取消设置,从而控制输出的格式。其中,setf() 方法用于设置...

如何控制C或C++数字的输出格式,使得输入12345.36,输出12,345.36 ?
sprintf(str,"%lf",x); \/\/可以把double型转换为字符串放到char型数组str里,得了字符串还不是随便弄,既然你说自己写代码我也就不发代码了

相似回答
大家正在搜