+ -
当前位置:首页 → 问答吧 → c++程序修正

c++程序修正

时间:2011-11-30

来源:互联网


/*求三个实数逆序输出*/
#include<iostream>
#include<iomanip>
#include<cmath>

using namespace std;

int main()
{
double temp,number,i,j,shu,count,integer,k;

for(k=1;k<4;k++){

i=j=1,count=0;
temp=1.5;

cout<<"Please enter a number:";
cin>>integer;

number=integer;
if(number<0)
number=-number;

while(temp>=1)
{
temp=number/pow(10,i);
i++;
}
  --i;
j=0;
 
if(number!=(int)number)
{
cout<<integer<<"为小数"<<endl;
while(temp!=(int)temp)
{
temp=number*pow(10,j);
j++;
}
--j;
cout<<integer<<"的小数位数是"<<j<<endl;
}

cout<<integer<<"的位数为"<<i+j<<endl;


number*=pow(10,j);
cout<<"逆序为:";
if(integer<0)
cout<<"-";
while(number>=1){
shu=(int)number%10;
cout<<shu;
number/=10;
count++; 
if(count==j){
cout<<".";
}
}
 
if(integer<1&&integer>-1)
cout<<"0";
cout<<endl;
}
return 0;

}



输入0.2563,-0.2563,0.2568,-0.2568,0.0009就会出错,请问哪的错,怎样改正?

作者: t534458362   发布时间: 2011-11-30

当输入0.2563时实际的值为0.25629999999999997...所以在while(temp!=(int)temp)
{
temp=number*pow(10,j);
j++;
}时进入死循环换所以输不出值了

作者: gongheguoyingpai11   发布时间: 2011-12-01

热门下载

更多