怎么用C语言求把100元换成20元,10元,5元的纸币.要求每种纸币至少有一张。

如题所述

#include<stdio.h

int main() 

{int a,b,c,n=0;

printf("20元\t10元\t5元\n");

for(a=1;a<5;a++)

for(b=1;b<(100-20*a)/10;b++)

{c=(100-20*a-10*b)/5;

printf("%2d\t%2d\t%2d\n",a,b,c);

n++;

}

printf("共%d种方案\n",n);  

return 0;

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-05-27
因为要求每种纸币至少有一张,可以先减轻去固定的35元再循环,减少计算量。
#include<stdio.h>
void main()
{
int i,j,k;
for(i=0;i<=13;i++)
for(j=0;j<=6;j++)
for(k=0;k<4;k++)
{
if(5*i+10*j+20*k==65)
printf("5:%d,10:%d,20:%d\n",i+1,j+1,k+1);
}
}
第2个回答  2011-05-27
循环遍历计算就可以了。
设20,10,5 的张数 n20,n10,n5,
至少有一张,n20,n10,n5 循环初值从 1 起
如果 n20 * 20 + n10 * 10 + n5 * 5 == 100 则为 一种 解。
打印所有组合.

#include <stdio.h>
#include <stdlib.h>
void main(void)
{
int n5,n10,n20;
for (n5=1;n5<20;n5++){
for (n10=1;n10<10;n10++){
for (n20=1;n20<5;n20++){
if (n5 * 5 + n10 * 10 + n20 * 20 == 100)
printf("$5--%d, $10--%d, $20--%d\n",n5,n10,n20);
}
}
}
}本回答被网友采纳
第3个回答  2011-05-27
/* 标准文档模板 */

#include "Stdio.h"
#include "Conio.h"

int main(void)
{
int a=100,b=20,c=10,d=5,e=0,f=0,g=0;
while(a!=0)
{

if(e==0&&f==0&&g==0)
{
a=a-20-10-5;
e++;f++;g++;
}
if(a>=20)
{
e++;
a=a-20;

}

if(a>=10&&a<20)
{
f++;
a=a-10;

}
if(a>=5&&a<10)
{
g++;
a=a-5;
}

}
printf("20: %d 10: %d 5: %d ",e,f,g) ;
getch();
return 0;
}
相似回答