求一段编程的正确写法!!!!

来源:百度知道 编辑:UC知道 时间:2024/06/24 14:14:58
指出以下编程错在哪里,并写出正确写法,谢谢!!(答得好有追加)

//file name:dianfei.cpp
//用于计算电费及如何用1元、1角硬币缴费
//本程序可避免由于输入小数而产生的计算错误

#define DANJIA 0.6 //定义符号常量
#include <iostream>
using namespace std;

int main()
{
double sum, fee;
int yuan, jiao, summ, cha, summm;

cout << "请输入用电量:";
cin >> sum;

fee = DANJIA * sum;
yuan = fee;
summ = sum;
summm = summ + 1;
cha = (summm * DANJIA - fee);
jiao = 10 * (summm * DANJIA - cha);

cout << endl;
cout << "你要缴纳的电费为:" << fee << endl;
cout << "需要一元硬币" << yuan << "枚" << endl;
cout << "需要一角硬币" << jiao << "枚" << endl;

return 0;
}

你的想法是输入用电量,然后求出价格,将整数部分传给yuan,这都没错。
但后面的却将总用电量+1,再求了一次价格(注意这个价格就不对了,一个整数*0.6,再减去刚才的整数yuan,还有可能是小数,甚至有可能大于一),然后把这个数赋予了cha(cha是一个整数,这个过程就又忽略了小数部分),你这么求出jiao是不对的。

正确的做法是,求出了fee(它是一个double)
int yuan,jiao,fen
yuan=fee //double赋予int,忽略小数部分
jiao=10*(fee-yuan) //去掉整数部分,乘10,得到double,赋予整数,忽略小数

如果要得还需要几个一分的:
jiao=100*fee--100*yuan-10*jiao //同理