读书人

一个初级的C语言整数变小数小数变整

发布时间: 2012-02-06 15:52:44 作者: rapoo

一个初级的C语言整数变小数,小数变整数的问题!
提示用户输入一个浮点数,分别输出该数字的整数部分和小数部分分别是多少,然后将该数颠倒过来,以原有的精度输出.
如:
用户输入 1234.56,则输出
整数部分为 1234,小数部分为 56
颠倒数为 56.12

[解决办法]
double reverse(double x)

{
using namespace std;

string str;
char chs[100];
sprintf(chs,"%f",x);

str.assign(chs);
str = str.substr(0,str.find_last_not_of('0')+1);

string str1,str2;

int pos = str.find('.');
str1 = str.substr(pos+1,(str.length() - pos + 1));
str2 = str.substr(0,(str.length() - pos - 1));

str = str1;
str.append(".");
str.append(str2);
return atof(str.c_str());

}

void main(void)

{
double test;
cin>>test;

test = reverse(test);

cin>>test;

}
[解决办法]
#include <stdio.h>
int main(void)
{
float x;
int a,num=0;
float b;
scanf("%f",&x);
a=(int)x;//取出整数部分
b=(int)x;//备份整数部分
x=x-(int)x;//得到小数部分
printf("整数:%d\n小数:%d\n ",a,(int)(x*100));
/*********************************************/
// 计算颠倒数
/*********************************************/
x=(int)(x*100);//小数转整数
for(int i=0;;i++)//计算整数部分位数
{
a=a/10;
num++;
if(a==0) break;
}
for(i=1;i<=num;i++) b=0.1*b;//整数转小数
x=x+b;//整数+小数
printf("颠倒数:%.2f\n",x);
return 0;
}

/************************************************/
//用户输入 1234.56,则输出
//整数部分为 1234,小数部分为 56
//颠倒数为 56.12
/************************************************/

读书人网 >C语言

热点推荐