写一段程序用来提示用户投入一定数量的美分。程序然后在计算出最少需要多少数量的美分,这些硬币可能是&po

小弟刚入门,请会编程的高手帮忙阿!万分感谢写一段程序用来提示用户投入一定数量的美分。程序然后在计算出最少需要多少数量的美分,这些硬币可能是£2, £1, 50p, 20p, 10p, 5p, 2p, 1p.举个例子,397美分至少需要以下数量的硬币:1 x £2, 1 x £1, 1 x 50p, 2 x 20p, 1 x 5p, 1 x 2p在你的部分的解决方案中可能存在很多重复性的工作。Marks 则可以用一些数据结构(例如矩阵)来储存硬币的面值和有多少枚硬币的投入来减少重复性的操作。你的程序应该不断的提示用户美分的数量,只要键入正确数量,程序将计算出硬币的数量。当键入零或者不正确的数量,程序将终止。
2026年09月28日 12:57
有1个网友回答
网友(1):

#include

#define LEN 8

typedef struct{
int par;
int num;
}CENT;

int Calc(CENT cents[],int val);
int Show(CENT cents[],char *names[]);

int main()
{
char *names[LEN]={"£2","£1","50p","20p","10p","5p","2p","1p"};
int value,total;
CENT cents[LEN]={{200},{100},{50},{20},{10},{5},{2},{1}};

while(1)
{
printf("Input value:");
scanf(" %d",&value);
if(value <= 0)
break;

total = Calc(cents,value);
printf("%3d cents:",total);
Show(cents,names);
}

return 0;
}

int Calc(CENT cents[],int val)
{
int i;
int total;

if(!cents || val <= 0)
return 0;

for(i=0;i {
cents[i].num = 0;
}

for(i=0,total=0;i {
while(val >= cents[i].par)
{
++cents[i].num;
++total;
val -=cents[i].par;
}
}

return total;
}

int Show(CENT cents[],char *names[])
{
int i;

if(!cents || !names)
return 0;

for(i=0;i {
if(cents[i].num)
printf("%2d x %s ",cents[i].num,names[i]);
}

puts("");

return 1;
}