• 基于Visual C++2013拆解世界五百强面试题--题6-double类型逆序


    请设计一个函数,不许用到字符串函数,用数学运算,将double类型数据转换,例如123.456转换成654.321


    首先想到依次提取他的每一个位数,然后进行运算,移动每一位数到相应位置,结果相加就能逆序double数


    下面上程序:

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    double ConvertDouble(double Val)
    {
    	int leftLen=0, rightLen=0;
    	double leftVal, rightVal;
    	double convertVal = 0.0;
    
    	//取左边整数和右边小数部分的值
    	leftVal = (double)(int)(Val);
    	rightVal = Val - leftVal;
    
    	//获取整数部分长度,按题意等于小数部分长度
    	while (leftVal > 0.99)
    	{
    		leftVal /= 10;
    		leftLen++;
    	}
    	
    	for (int i = 1; i <= leftLen; i++)
    	{
    		leftVal = (int)Val;
    		int nTen = 1;
    		for (int j = 0; j < i; j++)
    		{
    			nTen *= 10;
    		}
    
    		leftVal = (int)((leftVal / nTen) * 10)%10;  //分别提取整数部分的每一位
    		convertVal += leftVal / nTen;				//把整数部分倒到小数部分
    
    		rightVal = Val - (int)Val;						//去掉整数部分
    		rightVal = (int)(rightVal*nTen) % 10;		//分别提取每一位小数
    		convertVal += rightVal*nTen / 10;			//把小数部分倒到整数部分
    	}
    	return convertVal;
    }
    
    int main()
    {
    	printf("%lf 
    ", ConvertDouble(1234.5678));
    	return 0;
    }


    运行结果如下图:



    如果有什么问题和疑问可以在下面留言互相探讨。

    原题我已经上传到这里了http://download.csdn.net/detail/yincheng01/6461073 ,

    解压密码为 c.itcast.cn


  • 相关阅读:
    数据预处理
    数据挖掘-聚类分析
    数据挖掘分类--判别式模型 ----支持向量机
    神经网络
    数据挖掘-贝叶斯定理
    数据挖掘之分类和预测
    关于stm32的IO口的封装
    星际炸弹——炸弹爆炸时间计算
    共阳极数码管三极管驱动
    自定义的TIME.H头文件
  • 原文地址:https://www.cnblogs.com/new0801/p/6177590.html
Copyright © 2020-2023  润新知