以下是c语言代码(含注释),兑换方案有3,418,951种:
#include <stdio.h>
void main()//主函数
{
int yiJiao=0//1角硬币的数量
int wuJiao=0//5角硬币的数量
int yiYuan=0//1元硬币的数量
int count=0//记录兑换方案次数
//内嵌四次循环,分析每种兑换情况(即计算每种硬币的数量的组合)
for(wuFen=0wuFen<=100*100/5wuFen++)
for(yiJiao=0yiJiao<=100*100/10yiJiao++)
for(wuJiao=0wuJiao<=100*100/50wuJiao++)
for(yiYuan=0yiYuan<=100*100/100yiYuan++)
//如果四种硬币总数量等于100元即10000分
if(wuFen*5+yiJiao*10+wuJiao*50+yiYuan*100==100*100)
{
//累增兑换方案次数,输出每种兑换结果
count++
printf("100元可以兑换成%d个5分硬币和%d个1角硬币和%d个5角硬币和%d个1元硬币\n",wuFen,yiJiao,wuJiao,yiYuan)
}
printf("兑换方案共有%d种。\n",count)//输出兑换方案次数
}
以下是程序运行结果(部分):
a,b,c,d,e,f,g,h,i,j应为整型变量;角分处理做了点更改;改后程序如下:
#include<stdio.h>
int main()
{
float num
int a,b,c,d,e,f,g,h,i,j
printf("请输入一个金额如345.78\n")
scanf("%f",&num)
a=(int)num/100
b=(int)(num-a*100)/50
c=(int)(num-a*100-b*50)/10
d=(int)(num-a*100-b*50-c*10)/5
e=(int)(num-a*100-b*50-c*10-d*5)/2
f=(int)(num-a*100-b*50-c*10-d*5-e*2)/1
g=(int)((num-a*100-b*50-c*10-d*5-e*2-f*1)*10)/5
h=(int)((num-a*100-b*50-c*10-d*5-e*2-f*1-g*0.5)*10)
i=(int)((num-a*100-b*50-c*10-d*5-e*2-f*1-g*0.5-h*0.1)*20)/5
j=(int)((num-a*100-b*50-c*10-d*5-e*2-f*1-g*0.5-h*0.1-i*0.05)*100)
printf("100元、50元、10元、5元、2元、1元、5角、1角、5分、1分各有%d,%d,%d,%d,%d,%d,%d,%d,%d,%d张",a,b,c,d,e,f,g,h,i,j)
return 0
}
#include<stdio.h>int main()
{
int m=638,yuan,jiao,fen
yuan=m/100
jiao=(m-yuan*100)/10
fen=m%10
printf("%d枚1分硬币=%d元%d角%d分\n",m,yuan,jiao,fen)
return 0
}