整数/小数以字符串形式输出

1、问题描述

(1)、现在从键盘输入一个整数(以%d格式符输入),要求以装换成字符串的形式输出;

(2)、现在从键盘输入一个小数和小数位数(%lf%d),要求以字符串的形式输出;

这2个问题本身并不难,但是考虑全面和从算法上的优化确实不容易的,需要仔细认真的考虑!

2、用C实现

在VC下面用的VC++6.0版本实现

#include<stdio.h>

void printfInt(int data);
void printfDouble(double data, int count);

void printfDouble(double data, int count){
    int d = (int)data;
    double x = data - d;
    int i, tmp;
    int p = 1;

    printfInt(d);
    printf(".");
    for(i = 0; i < count; i++){
            p *= 10;
    }
    tmp = (int)(p*x+0.5);//在强转时,由于有截断误差,所以加上0.5,保证了小数点最后一位的取值是正确的。
	printfInt(tmp);
}

void printfInt(int data){
    int q = 1;

    if(data > 1000000000){
            q = 1000000000;
    }else if(data > 100000000){
            q = 100000000;
    }else if(data > 10000000){
            q = 10000000;
    }else if(data > 1000000){
            q = 1000000;
    }else if(data > 100000){
            q = 100000;
    }else if(data > 10000){
            q = 10000;
    }else if(data > 1000){
            q = 1000;
    }else if(data > 100){
            q = 100;
    }else if(data > 10){
            q = 10;
    }

    for(; q; q /= 10){
            printf("%c", ‘0‘ + (data/q)%10);
    }
}

int main(void){
    int number;
    double x_number;
    int bit;

    printf("请输入一个整数 : ");
    scanf("%d", &number);
    printf("请输入小数,和小数位数 : ");
    scanf("%lf%d", &x_number, &bit);

    printfInt(number);
	printf("\n");
    printfDouble(x_number, bit);
	printf("\n");
}

运行结果

3、算法分析

  (1)、我用的是if...else if...else if来判断这个数是几位数,因为用这个数每次/=10也可以判断是几位数,但是效率比较低,用if判断的方法最多10次,就可以知道是几位数字。

  (2)、其次,我知道了是几位数,就可以让(data/q)%10,data不变,让q/=10,在循环中每次调用这个语句,就可以从最高位--->最低位顺序取出,再加上‘0‘,就转换为一个一个的字符了,输出即可。

时间: 2024-10-20 21:29:08

整数/小数以字符串形式输出的相关文章

C语言中以字符串形式输出枚举变量

C语言中以字符串形式输出枚举变量 摘自:https://blog.csdn.net/haifeilang/article/details/41079255 2014年11月13日 15:17:20 haifeilang 阅读数:6295 每个枚举常量对应一个整形数字,很多时候可以像整形一样使用,这个大家都知道:但是如果要求打印枚举变量名的字符串,办法也有很多,查看网上方法几乎都需要转换,要么用数组,下面要说的是一种可以算是直接打印的新方法: #会将后面的内容作为字符串返回 如果想让#后面的内容作

NSString作业1:求字符串“158”和“39”按十进制数值做差后的结果,以字符串形式输出

代码: #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { NSString *str1=@"158",*str2=@"39"; int num1=[str1 intValue]; int num2=[str2 intValue]; int result=num1-num2; NSString *strResult=[

识别字符串中的整数并转换为数字形式

识别字符串中的整数并转换为数字形式(40分) 问题描述: 识别输入字符串中所有的整数,统计整数个数并将这些字符串形式的整数转换为数字形式整数. 要求实现函数: void take_num(const char *strIn, int *n, unsigned int *outArray) [输入] strIn:   输入的字符串 [输出] n:       统计识别出来的整数个数 outArray:识别出来的整数值,其中outArray[0]是输入字符串中从左到右第一个整数, outArray[

【输出一个整数的二进制存储形式】

// 输出一个整数的二进制存储形式void putBinary(int n){ int bits = sizeof(n) * 8; while (bits-->0) { printf("%d", n>>bits&1); if (bits%4==0) printf(" "); } printf("\n");}

字符串分隔 -&gt;连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组; ?长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。

?连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组:?长度不是8整数倍的字符串请在后面补数字0,空字符串不处理. 输入描述: 连续输入字符串(输入2次,每个字符串长度小于100) 输出描述: 输出到长度为8的新字符串数组 输入例子: abc 123456789 输出例子: abc00000 12345678 90000000 import java.util.*; public class Main{     public static void main(String[] ar

判断字符是否为整数、浮点型小数、字符串

function TForm_fangyuanhuizong_tubiao.IsNumber(s: string): integer;     //判断是否为整数.浮点型小数.字符串var  i   :   integer;begin      result   :=   2;      for   i   :=   1   to   Length(s)   do        begin            if   (s[i]   <   '0')   or   (s[i]   >  

请求一个action,将图片的二进制字节字符串在视图页面以图片形式输出

有些时候需要将二进制图片字节在发送浏览器以图片形式显示: 下面是一些示例代码: 控制器: 1 /// <summary> 2 /// 将图片的二进制字节字符串在视图页面以图片形式输出 3 /// </summary> 4 public class HomeController : Controller 5 { 6 7 public ActionResult Test() 8 { 9 return View(); 10 } 11 12 //方法一: 13 public FileRes

[VC] IP地址的字符串形式与整数互换

IPV6出现之后,在windows平台,最好是用随IPV6而出的新函数实现IP地址的字符串形式与整数互换.这些新函数是InetPton和InetNtop. 1  InetPton() 作用:该函数实现字符串到整数的转换. 原型:INT InetPton(INT Family, PCWST pszAddrString,  PVOID pAddrBuf); 参数:family参数既可以是AF_INET(ipv4)也可以是AF_INET6(ipv6).如果,以不被支持的地址族作为family参数,这个

将图片的二进制字节字符串在HTML页面以图片形式输出

具体实现代码如下: 1.新建一个一般处理程序: Image.ashx 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 5 using System.Net; 6 using System.Drawing.Imaging; 7 using System.IO; 8 9 namespace Test 10 { 11 /// <summary> 12 ///测试图