135-1821-9792

我的刷题之旅1-创新互联

十余年的福海网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。成都全网营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整福海建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。成都创新互联从事“福海网站设计”,“福海网站推广”以来,每个客户项目都认真落实执行。

这题目一看,很多小伙伴可能觉这玩意肯定一遍过,然而,我当时也是这么想的,但现实是,磨了几天才写出来。这次我们选择先分析题:

首先我们来思考,我们要输入两个整数但求的却是小数,要怎么处理呢?

有两种方法:

1.我们可以在a/b的时候在a面前乘以1.0来使a变成小数(因为在c语言中,‘/’号有这样的法则,整数除整数等于整数,且是属于去尾的那种,而只要除号两端任意一端有小数,都可以为小数。)所以我们可以写这样的代码:

#includeint main()
{
    int a,b;
    while(scanf("%d %d",&a,&b)!=EOF)
    {
        printf("%.10f\n",1.0*a/b);
    }
    return 0;
}

嗯,这里有几点注意的:首先是输入,在scanf中你是怎样输入的,就要用怎样的格式:比如我输入a b中间隔了一个空格,那么在scanf的引号里也要是%d %d的格式,而如果我们如果输入的是啊a,b那么输出也要变%d,%d。这是要注意的,还有一个就是多组输入,一般我们就是用上面这个方法,可以学一下,具体的理论我也不太清楚。

这里有一点特别要注意的:养成经常打换行符的好习惯,我这么久都过不了就是因为没打换行符,也就是'\n',除非题目格式特殊要求,不然一般都是要打换行符的。

好,继续介绍第二种方法。强制转化。我们可以在a或者b的前面加一个括号里面写上double。也可以过,如:

#includeint main()
{
    int a,b;
    while(scanf("%d %d",&a,&b)!=EOF)
    {
        printf("%.10f\n",(double)a/b);
    }
    return 0;
}

这也是可以的,当然,同样的你也可以在b前面加也可以,但是不可以这样(double)(a/b)这样是错误的,因为它这样的话就会让a/b先计算出去小数尾的整数;再加小数点。同样这样也是错的。(这里提一嘴,%f这里变为%.10f的意思是保留十位小数).

拓展一个小知识:这里为什么不用float类型呢?那是因为错了,到底为什么错了呢?重点来了:因为float为单精度浮点类型y十进制的有效位数为7位,double双精度类型的十进制的有效位数为16位,这就说明白了刚刚为什么float不行。

最后想在激励一下自己:

林清玄:"人也要像珍珠贝一样,养成重塑伤口的本事。转化成生命的创伤,使它变成美丽的珍珠。”愿每一个受过伤的孩子都能坚强的重新站起来,去努力追寻心中的光·。

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


新闻名称:我的刷题之旅1-创新互联
本文路径:http://kswsj.com/article/dsigjo.html

其他资讯



Copyright © 2009-2022 www.kswsj.com 成都快上网科技有限公司 版权所有 蜀ICP备19037934号