一道c++程序题 哪里出错?

来源:百度知道 编辑:UC知道 时间:2024/06/30 16:05:20
经典分硬币问题 1.75美元 = 100美分+50美分+2×10美分+5美分
没有要求是否得到数量最大 只要求得到解就可以
要求:用三个文件 coinComputer。cpp coinComputer。h coinmain。cpp
coinComputer 函数为:coinCompute(int coin,float amount,float& amountleft)coin表示硬币的面值 以美分为单位 就是1美元=100美分 amount为现有需要分得总千树,amountleft为剩余数
程序如下
#include <iostream>
using namespace std;
int coinCompute(int coin,float amount,float& amountleft){
int number = (amount*100)/coin;
if(number>0){
amountleft = amount*100 - number*coin;

}else{
number = 0;
}

string money="";
string value="";

switch(coin){
case 200:value = "two";break;
case 100:value = "one";break;
case 50:value = "50";break;
case 20:value = "20";break;
case 10:value = "10";break;
case 5:value = "5";break;
default:break;
}

if((int)(coin/100)<1){
mon

我觉得你的程序设计思路有些问题
我对其做了一些比较大的修改
其中coinCompute返回mountleft作为下一次循环的mount
而number作为已经在coinCompute函数中输出的值不需要返回

具体代码如下,有兴趣可以参考,该代码在vc++6.0中运行无误。

coinComputer.cpp文件:

#include <iostream.h>
#include"coinComputer.h"
float coinCompute(int coin,float amount)
{
float amountleft=amount;
char *money = new char[];
char *value = new char[];
int number = (amount*100)/coin;
if(number>0)
{
amountleft=(amount*100-number*coin)/100;
}
else
{
number=0;
amountleft=amount;
}

switch(coin)
{
case 200:value = "two";break;
case 100:value = "one";break;
case 50:value = "50";break;
case 20:value = "20";break;
case 10:value = "10";break;
case 5:value = "5";break;
default:break;
}

i