c语言除法不四舍五入,C语言中关于POW在不同状态下四舍五入的解决方法

这是今天作业中的一个代码:

#include

#include

int main()

{

printf("请输入一个整数:");

int c,a,x,d,f,i,mix;

scanf("%d",&a);

if(a>999999999)

{

printf("越界!");

return 0;

}

c=a;

printf("它的逆序输出为:");

mix=0;

while(c!=0)

{

d=c%10;

c=c/10;

printf("%d",d);

mix++;

}

printf("

它是一个%d位数

",mix);

x=(int)(pow(10,mix-1));

printf("它的各位数字为:");

do

{

f=a/x;

a=a%x;

x=x/10;

printf("%d ",f);

}

while(x!=0);

return 0;

}

但是在实际运行中出现了错误,也就是“吞数字“”的现象。为了查找错误,经基友提醒,在x=(int)(pow(10,mix-1))后加了一个printf语句,来检查输出的x值。结果是这样的:

请输入一个整数:123

它的逆序输出为:321

它是一个3位数

99

它的各位数字为:1 2

对,看见了吗,我本来想要的x值是100,但是这里进行了舍去,变成了99,那么接下来的程序就会少走一步,即最后的数字不会被计算并读取。当然不管怎么说这样的程序都是不健壮的,还需要修改。

既然是舍入的话,那么会出现+1,-1还有合适共三种情况,我们来给这个一个判断

-1,9999,能整除9;正好,10的倍数,一定能整除10

写一个if语句进行判断:

if(x%9==0)  x=x+1;

if(x%10==0)  x=x;

但是x=1时该怎么办?结果是1,一定会进入第三种情况,此时程序出现错误。解决方法很简单if   (x%10==0||x==1)  x=x;

但是即使是这样也被老师批了一顿T^T,理由是程序太过复杂(明明只有42行啊!),但是老师说我们还是要尽可能的精简。。。这体现了算法的优劣。同样的程序,我用if循环也可以写出来,但是那样的程序很不好,判断条件太多,语句也太多,能算出来,但是你能说它好吗?当然不能。之前有一个输出100000以内素数的程序,老师强制规定程序的运行时间不能超过1秒,那就必须用开平方的形势,不开方也能算,但是时间是6秒多。算了,说多了,继续我们这个程序。这里的强制类型转换是在pow后,也就是先进行平方运算再转换,那么,我们直接在pow后加一个0.5,如果本来是要舍去的加上0.5就会取入,99会成100.这样不就不用对x的值进行判断再转换了吗?

x=(int)(pow(10,mix-1)+0.5);省了3行,而且算法更优秀

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/426928.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

stringstream字符串流的妙用

现在有一个数组,其值为从1到10000的连续增长的数字。出于某次偶然操作,导致这个数组中丢失了某三个元素,同时顺序被打乱,现在需要你用最快的方法找出丢失的这三个元素,并且将这三个元素根据从小到大重新拼接为一个新数…

实例18:python

#题目:求saaaaaaaaaaaa…a的值,其中a是一个数字。例如222222222222222(此时共有5个数相加),几个数相加由键盘控制。 #!/usr/bin/env python3 -- coding: utf-8 -- n int(input(n )) a int(input(a )) sum 0 total 0 for i in range(…

vue vue的table表格自适应_响应式表格,HTML表格自适应(responsive table)

简单自适应表格前面的一篇文章里面我介绍到了一种简单的自适应表格制作方案,就是通过给表格的外面加了一个.table-container的标签.table-container{width: 100%;overflow-y: auto;_overflow: auto;margin: 0 0 1em;}table{border:0; border-collapse:collapse;}tab…

c语言程序设计实践教程课,C语言程序设计实践训练教程

计算机实践训练课程是程序设计课程中必不可少的一个环节。目的是训练读者综合运用该课程的知识与技巧的能力,达到理论联系实际、学以致用。本书是与《C语言程序设计教程》和《C语言程序设计实验指导与习题解析》配套使用的教学参考书。内容包括:程序设计…

AQS是什么?

AQS介绍AQS,即AbstractQueuedSynchronizer, 队列同步器,它是Java并发用来构建锁和其他同步组件的基础框架。来看下同步组件对AQS的使用:AQS是一个抽象类,主是是以继承的方式使用。AQS本身是没有实现任何同步接口的,它仅…

实例19:python

#题目:一个数如果恰好等于它的因子之和,这个数就称为"完数"。 #例如61+2+3.编程找出1000以内的所有完数。 #!/usr/bin/python3 list2 [] for x in range(1, 1001): list1 [] for i in range(1, int(x / 2) 1): if x…

python将excel日期比大小_sql与excel、python比较(二)——日期和时间函数

1、CURDATE()或CURRENT_DATE():返回当前的日期select curdate(),current_date();excel:TODAYpython:datetime和time库2、CURTIME()或CURRENT_TIME():返回当前的时间select curtime(),current_time();excel:NOWpython&a…

c语言实验报告熟悉vc,C语言实验报告源代码

C语言实验报告源代码1.问题描述:计算三个整数12*34*56的积,得出正确的结果,并能通过此实验熟悉vc6.0的操作环境;源程序及注释:# include void main() /*求三个数的积*/{ int a,b,c,sum; /*这是声明部分,定义…

solr的一些查询语法

以下内容来自solr中国 1.1. 首先假设我的数据里fields有:name, tel, address 预设的搜寻是name这个字段, 如果要搜寻的数据刚好就是 name 这个字段,就不需要指定搜寻字段名称. 1.2. 查询规则: 如欲查询特定字段(非预设字段),请在查询词前加上该字段名称加 “:” (不包含”号) 符…

实例20:python

#题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下 #,求它在第10次落地时,共经过多少米?第10次反弹多高? #!/usr/bin/python -- coding: UTF-8 -- tour [] height [] h…

圆弧齿轮啮合原理_图解八种齿轮的加工原理

齿形有多种形式,其中以渐开线齿形最为常见。渐开线齿形常用的加工方法有两大类,即成形法和展成法。1铣齿采用盘形模数铣刀或指状铣刀铣齿属于成形法加工,铣刀刀齿截面形状与齿轮齿间形状相对应。2成形磨齿也属于成形法加工,成形砂…

组个最小数C语言pta,PTA|C语言:组个最小数

7-58 组个最小数 (20 分)给定数字0-9各若干个。你可以以任意顺序排列这些数字,但必须全部使用。目标是使得最后得到的数尽可能小(注意0不能做首位)。例如:给定两个0,两个1,三个5,一个8,我们得到的最小的数就…

python中[-1]、[-1]、[-1]、[n-1]使用方法

import numpy as np anp.random.rand(5) print(a) [ 0.64061262 0.8451399 0.965673 0.89256687 0.48518743] print(a[-1]) ###取最后一个元素 [0.48518743] print(a[:-1]) ### 除了最后一个取全部 [ 0.64061262 0.8451399 0.965673 0.89256687] print(a[::-1]) ### 取从后向…

项目收集

配置中心 apollo : https://github.com/ctripcorp/apollo 参考资料 apollo 系列 : https://www.jianshu.com/nb/26825662 下载工具 proxyee-down https://github.com/proxyee-down-org/proxyee-down 书籍 books-collection 给程序员的开源、免费图书集合…

vue 获取请求url_vue 获取url里参数的两种方法小结

我就废话不多说了,大家还是直接看代码吧~第一种:const query Qs.parse(location.search.substring(1))let passport query.passport;第二种:var querythis.$route.query;let lat query.lat;补充知识:Vue通过query获取路由参数现…

单片机c语言1602怎么接线,lcd1602中文资料分享:lcd1602接线图_lcd1602与单片机连接图 - 全文...

lcd1602液晶屏在很懂工业产品上都有应用,LCD1602能够能够同时显示32个字符,价格便宜,编程简单而且稳定可靠。lcd1602液晶屏是一种图形点阵显示器,显示原理简单易懂,都是液晶屏内部的液晶材料变化而显示不同的字符&…

李代数笔记

下载:李代数笔记(20180906).pdf 犹记我曾经这篇博文中提到过Humphreys李代数是李代数的万恶之源。 这个笔记的证明都相对自然很多,不过不意味着这个笔记适合新手,因为这仅仅是用来复习的笔记,精简出最重要的内容而已,当…

access日期如何增加年数_如何为Access数据库表添加日期或时间戳

为了应用方便,您可能需要给数据库的每条记录都添加日期/时间戳,以便确定各个记录添加到数据库的时间。在Access数据库应用中,使用Now()函数能够轻松完成这个任务。本文将一步一步为您介绍整个添加过程,非常简单。本文所使用的Acce…

单片机 c语言 定义i o,【51单片机】普通I/O口模拟SPI口C语言程序

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼89C51系列单片机都不带SPI口,所在在这种情况下,我们可以模拟SPI口来现实我们要的功能,程序如下://-----------------------函数声明,变量定义--&am…

Python format 格式化函数

Python2.6 开始,新增了一种格式化字符串的函数 str.format(),它增强了字符串格式化的功能。 基本语法是通过 {} 和 : 来代替以前的 % 。 format 函数可以接受不限个参数,位置可以不按顺序。 实例 “{} {}”.format(“hello”, “world”) # 不…