❶ c语言找零程序 为什么张数总是0呢应该都转化好了呀请高手指点
把scanf("%f%f",&a,&b)改成scanf("%lf%lf",&a,&b)试试!应该就没有问题了。要知道scanf()函数是很挑剔的,你声明的a、b是double型,但却用float型格式输入,所以就出错了……
❷ 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语言编程:写出最合理的超市货币找零方案,不考虑一元以下情况,如货款22元,支付50元,找零28元
现在好像没2元张....分别用20,10,5为模,得其余数
(1)20*1+5+3*1
(2)10*2+5+3*1
(3)5*5+3*1
(4)10*2+8*1
(5)20*1+8*1
❹ 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语言,找零代码用浮点数怎么不行
假设浮点数为a, 一般就用a>0判断就可以了 如果一定要求严谨的话, 你可以这么做: 判断a-0的绝对值是否大于1e-7, 也就是:if(fabs(a-0)>1e-7) 代码: #include<conio.h> #include<stdio.h> #include<math.h> void main() { float a; scanf("%f",&a); if(fabs(a-0)>1e-7) printf(">0"); else printf("<=0"); getch(); }
❼ 一道c语言初学者题,找零问题,求解答
#include<stdio.h>
void main(){
int total, cost, res10, res1;
total = 50;
scanf("%d", &cost);
res10 = (total - cost)/10;
res1 = total-cost-res10*10;
printf("找零10元%d张; 1元%d张。",res10, res1);
}
运行示意图
希望帮到你
❽ C语言找零程序求修改
我只能告诉你double的20.6=20.600...001所以exchange=3.999...,而你的num又是int型的,当i=6时,最后除出来的结果是num[]={0,0,0,0,0,0,3}所以都不会提示你有没有一角零钱。所以你要解决的问题就是int和double相除时造成的数据不准确,我的办法很土,就是在计算exchange的时候加上一个很小的数,帮你改成了下面的样子,你再试试
#include"stdio.h"
main()
{
doublea[]={50,20,10,5,1,0.5,0.1};
intnum[7];
inti,pd;
doubleprice,paid,exchange,rest;
printf("请输入商品总价:");
scanf("%lf",&price);
printf("请输入支付金额:");
scanf("%lf",&paid);
exchange=paid-price+1e-6;
rest=exchange;
for(i=0;i<7;i++)
{
num[i]=rest/(a[i]);
rest-=num[i]*(a[i]);
}
if((num[6]>3)&&(num[6]<5))
{
printf("请问您有没有多余的0.1元?(1表示有,0表示没有)");
scanf("%d",&pd);
if(pd==1)
{
exchange+=0.1;
rest=exchange;
for(i=0;i<7;i++)
{
num[i]=rest/a[i];
rest-=num[i]*a[i];
}
}
}
if((num[4]>3)&&(num[4]<5))
{
printf("请问您有没有多余的1元?(1表示有,0表示没有)");
scanf("%d",&pd);
if(pd==1)
{
exchange+=1;
rest=exchange;
for(i=0;i<7;i++)
{
num[i]=rest/a[i];
rest-=num[i]*a[i];
}
}
}
printf("找零=");
for(i=0;i<7;i++)
{
if(num[i]==0)continue;
printf("%.1lf*%d(张)",a[i],num[i]);
}
}
❾ 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语言编写找零钱问题,谢谢!!
//用递归, 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);
}