栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言 拼接数字

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言 拼接数字

一、题目

010:拼数。模拟编译程序,将以字符形式读入的数字序列转换成对应的实数。例如,由键盘输入‘1’,‘2’,‘3’,‘.’,‘4’,‘5’要转换成对应的实数123.45。(书例3.37)

二、代码实现 思路:输入的字符‘1’转成数字1只需要‘1’-‘0’即可,(字符1的ASCII码是49,字符0的ASCII码是48),如果再输入‘2’,通过result=result*10+‘2’-‘0’,就能得到12,依次进行。出现小数点后,先仍按照整数处理,如123.45,先按照整数12345处理,再除以10^2,得到123.45

代码如下:

//010:拼数。模拟编译程序,将以字符形式读入的数字序列转换成对应的实数。例如,由键盘输入‘1’,‘2’,‘3’,‘.’,‘4’,‘5’要转换成对应的实数123.45
# include
int main()
{
    char ch;//读取的字符
    double result;//准备输出的结果
    int scale;//输入中若含有小数点,将result除以scale以实现小数点移位
    result=0;
    printf("please input:");
    scanf("%c",&ch);//键盘键入后,程序逐个读取ch字符并执行操作
    do
    {
        result=10*result+(ch-'0');//将字符转化成数字
        scanf("%c",&ch);
    }
    while(ch>='0'&&ch<='9');
    if(ch=='.')//出现小数点后,循环加上要除的规模,其余类同
{
    scale=1;
    scanf("%c",&ch);
    do
    {
        result=10*result+(ch-'0');
        scale*=10;
        scanf("%c",&ch);
    }
    while(ch>='0'&&ch<='9');
    result/=scale;//得到最后输出
}
printf("result=%gn",result);
return 0;
}
运行结果:
please input:12.456
result=12.456

按任意键关闭终端。
please input:0.00123456
result=0.00123456

按任意键关闭终端。
注意%g格式输出可以去掉后面无意义的0,但是只能保留6位有效数字
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/983499.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号