PTA 编程题(C语言)-- 实数四舍五入后的相加运算

题目标题:实数四舍五入后的相加运算

题目作者:唐艳琴 中国人民解放军陆军工程大学

本题目实现实数保留两位小数的四舍五入存储后,再相加。

输入格式:

输入两个双精度实数A,B。

输出格式:

第一行输出A+B的真实值(保留两位小数)
第二行输出A、B进行四舍五入后再相加后的值(保留两位小数)。

为了保证输出的美观,每个实数占10位,A为左对齐,B为右对齐,A+B的结果为左对齐。

输入样例:

12.345,4.896

输出样例:

12.345000 +  4.896000=17.24     
12.350000 +  4.900000=17.25     

首先说一下个格式问题:(1)双精度的输入要用格式转换说明符%lf,而输出用%f就可以,有特殊要求根据特殊要求确定格式转换说明符。

(2)保留n位小数输出浮点数,用格式转换说明符%.nf。

(3)占位m位左对齐输出整数或浮点数,用%-md或%-mf;右对齐,用%md或%mf。

(4)输出浮点数既有保留小数位数的要求,又有占位要求,可以综合起来用%-m.nf或者%m.nf。

思路:根据题目的要求,读入双精度浮点数到变量A,B后,第一行直接打印printf("%-10f+%10f=%-10.2f\n",A,B,A+B) 即可。

根据题目要求,第二行是先要把A和B进行四舍五入,变成a和b,然后再输出,输出的格式与第一行相同,即printf("%-10f+%10f=%-10.2f\n",a,b,a+b) 即可。

注意:若要对一个浮点数四舍五入,保留n位输出(也就是说对第n+1位进行四舍五入),我们直接用%.nf输出就行了。但是根据题目的要求,是要把A四舍五入赋值给a,B四舍五入赋值给b,然后再算a+b,这时我们就需要进行一些运算了。

有一点题目中没有说明清楚,但是根据猜测和答案的印证,题目中的把A、B先四舍五入是指对A、B的小数点后第3位进行四舍五入。我们用 a = round(A*100)/100 和 b = round(B*100)/100 来实现。原理是这样的:假设要对12.345的小数点后第三位进行四舍五入,那么我们先给12.345乘以100,得到1234.5,然后根据round函数的性质,round(A)是对A的小数点后第1位进行四舍五入,于是不难得出 round(A*100)/100 就是对A的小数点后第3位进行四舍五入。

代码:
#include <stdio.h>
#include <math.h>
int main () {
    double a,b,A,B;
    scanf("%lf,%lf", &a, &b);
    printf("%-10f+%10f=%-10.2f\n",a,b,a+b);
    A = round(a*100)/100;
    B = round(b*100)/100;
    printf("%-10f+%10f=%-10.2f",A,B,A+B);
    return 0;
}

  更多PTA题目的的参考代码,可以在下面的小程序里找到哦

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值