谁能跟我讲讲这道C++程序题的思路!!!急啊!!! 20

问题描述:两个任意长度的正数相减,这两个正数可以带小数点,也可以是整数,请输出结果。输入的字符串中,不会出现除了数字与小数点以外的其它字符,不会出现多个小数点以及小数点在... 问题描述:
两个任意长度的正数相减,这两个正数可以带小数点,也可以是整数,请输出结果。 输入的字符串中,不会出现除了数字与小数点以外的其它字符,不会出现多个小数点以及小数点在第一个字符的位置等非法情况,所以考生的程序中无须考虑输入的数值字符串非法的情况。
详细要求以及约束:
1.输入均为正数,但输出可能为负数;
2.输入输出均为字符串形式;
3.如果输出是正数则不需要带符号,如果为负数,则输出的结果字符串需要带负号
例如:2.2-1.1 直接输出为“1.1”,1.1-2.2 则需要输出为“-1.1”
4.输出的结果字符串需要过滤掉整数位前以及小数位后无效的0,小数位为全0的,直接输出整数位
例如相减结果为11.345,此数值前后均不可以带0,“011.345”或者“0011.34500”等等前后带无效0的均视为错误 输出。例如1.1-1.1结果为0.0,则直接输出0。
要求实现函数:
void Decrease(char *input1, char*input2, char *output)
【输入】 char *iinput1 被减数
char*nput2 减数
【输出】 char *output 减法结果
【返回】 无
展开
 我来答
zoomscence
2014-09-01 · 超过22用户采纳过TA的回答
知道答主
回答量:37
采纳率:0%
帮助的人:30.8万
展开全部
  1. 既然是任意位置的,则打消掉直接用浮点型求出结果

  2. 两个数中小数位多的进行记录(比如a中有3位小数,b中又2位小数 ,则记录decNumber= 3)

  3. 两个书中整数位多的进行记录(比如a中又4为b中有5位吗,则记录 intNumber= 5)

  4. 具体的例子比如 a = 10.0004 b = 532.03 

    则decNumber =4 ; intNumber = 3 ;

    根据小数位和整数位利用0都填充到最大为数

    则 a = 010.0004  b = 532.0300

        这时候可以忽略小数点,待全部减完之后除10^4(因为小数有4位所以除10000)

无奈叹水东流
2014-09-01 · TA获得超过274个赞
知道小有建树答主
回答量:115
采纳率:0%
帮助的人:77.8万
展开全部

按楼主要求,我只给你说思路,代码不提供,这样才能锻炼楼主能力。

  1. void Decrease(char *input1, char*input2, char *output) 给出了这个函数的接口,分别指定了输入输出,而且都是字符串。

  2. 做这个计算,先要实现从两个输入字数串中提取出数字,怎么提取?用比如input1[0] - '0' 就可以把各个位的值取出来哟。但取之前,最好是先找一下有没有小数点哟。

  3. 如果有小数点,请把两个数都弄成浮点类型,再计算,如果都没小数点,就弄成整型再计算。

  4. 计算完后,把计算结果再转成字符串,存到output上。记住,在里面用个static的字符数组缓存结果,最后把output指向这个数组就可以了。转的时候记得区分小数点、个位、十位等哟。

  5. return;完成。

  6. 当然,楼主也可以调用一些字符串处理函数来更方便地完成以上所提到的一些字符串转化操作哟。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
天涯之仗剑行走
2014-09-01 · 超过53用户采纳过TA的回答
知道小有建树答主
回答量:88
采纳率:0%
帮助的人:68.2万
展开全部
  1. 两个正数-->a,b>0;

  2. 输入的字符串中,不会出现除了数字与小数点以外的其它字符--->输入字符 0~9和“.”共10个;

  3. 字符类型做算术运算需要强制转换其类型可以改变输出结果为double或者float;

  4. 检测字符串第一个字符,取出来检测是否是“.”;

  5. 建议出现第一个正数比第二个小,先计算出值再去添加符号;

    ps:出这道题的人感觉是不是傻?什么东西都混在一起,顺便说下我去年买个表

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友9de5b9a
2014-09-01 · TA获得超过894个赞
知道小有建树答主
回答量:361
采纳率:0%
帮助的人:452万
展开全部
由于任意长度,也就是大数相减,所以不能转化为浮点数,因为你输入的数字可能有几百位,还没有数字可以表示。
首先考虑位数对其,也就是小数点前后数字个数一样:
例如 23.12 - 2.1 对其成:23.12-02.10
例如 23.12 - 2 对其成:23.12-02.00
至于怎么对其,自己想,不难

然后遍历字符串,每一位相减(有小数点的就不要减,保留)

结果处理,去掉前后无效的0
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式