『壹』 c語言 購物找零
#include<stdio.h>
int main()
{
float m,n,p;
scanf("%f%f%f",&m,&n,&p);
if(m>=n*p)
printf("找零:%.2f",m-n*p);
if(m<n*p)
printf("Failed");
return 0;
}
『貳』 C語言,貪心演算法,貨幣找零問題
貪心演算法找零就是現實中從最大面額開始找的思路。不代表是最優解,只是演算法之一。
由於面額輸入順序不定,我先對輸入的面額進行降序排序。
下面代碼:
#include <stdio.h>
#include <malloc.h>
int main()
{
int i,j,m,n,*ns=NULL,*cn=NULL,sum=0;
printf("請輸入總金額m及零錢種類n:"),scanf("%d",&m),scanf("%d",&n);
printf("請分別輸入%d種零錢的面額: ",n);
if(!(ns=(int *)malloc(sizeof(int)*n))) return 1;
if(!(cn=(int *)malloc(sizeof(int)*n))) return 1;
for(i=0;i<n;i++) scanf("%d",&ns[i]);
//------------考慮輸入面額順序不定,先對面額進行降序排列(如按照降序輸入,該段可刪除)
for(i=0;i<n;i++)
for(j=i+1;j<n;j++)
if(ns[j]>ns[i]) ns[j]^=ns[i],ns[i]^=ns[j],ns[j]^=ns[i];
//-------------------------------------------------------------------
for(i=0;i<n;i++)//貪心演算法,從最大面額開始
if(m>=ns[i])
cn[i]=m/ns[i],m=m%ns[i],sum+=cn[i],printf("%d元%d張 ",ns[i],cn[i]);
printf(" 最少使用零錢%d張 ",sum);
return 0;
}
『叄』 C語言實收金額找零代碼怎麼寫
#include<stdio.h>
voidmain()
{
doubleprice,money=0;
intnum;
printf("請輸入方便麵的價格和購買的數量:");
scanf("%lf%d",&price,&num);
money+=price*num;
printf("請輸入作業本的價格和購買的數量:");
scanf("%lf%d",&price,&num);
money+=price*num;
printf("請輸入圓珠筆的價格和購買的數量:");
scanf("%lf%d",&price,&num);
money+=price*num;
printf("應付金額:%.2lf ",money);
printf("實收金額:");
{
doublemoney1;
scanf("%lf",&money1);
printf("找零:%.2lf ",money1-money);
}
}
『肆』 c語言找零錢問題
double iChange=0;
double taget=0.72;
double Money[5] = { 0.5, 0.1, 0.05, 0.02, 0.01};
double ArrChange[100];
for語句將ArrChange置零;
int CountCoin=0;
while(iChange != taget )
{
for(int i = 0 ; i < 5 ; i ++)
{
if(iChange + Money[i] > taget)continue;
else
{
iChange += Money[i];
ArrChange[CountCoin] = Money[i];
CountCoin++;
}
}
}
//基本是這么個思路,如果一點也不思考對你沒好處,原理就是找多了就換小的,盡量選大的錢
『伍』 用C語言編寫找零錢問題,謝謝!!
//用遞歸, C++下調試
#include <iostream>
using namespace std;
void compute_coins(int coin_value,int& number,int& amount_left){
if(amount_left >= coin_value)
compute_coins(coin_value, ++number, amount_left -= coin_value);
else{
cout << coin_value << ":" << number << endl;
number = 0;
switch(coin_value){
case 25:
compute_coins(10, number, amount_left);
break;
case 10:
compute_coins(5, number, amount_left);
break;
case 5:
compute_coins(1, number, amount_left);
break;
}
}
}
int main()
{
int n;
cin >> n;
int number = 0;
compute_coins(25, number, n);
}
//下面是C語言的,更直觀,不需要引用
#include <stdio.h>
void compute_coins(int coin_value,int number,int amount_left){
if(amount_left >= coin_value)
compute_coins(coin_value, number+1, amount_left-coin_value);
else{
printf("%d : %d\n", coin_value, number);
switch(coin_value){
case 25:
compute_coins(10, 0, amount_left);
break;
case 10:
compute_coins(5, 0, amount_left);
break;
case 5:
compute_coins(1, 0, amount_left);
break;
}
}
}
int main()
{
int n;
printf("input amount:");
scanf("%d", &n);
compute_coins(25, 0, n);
}