C语言程序设计(第三版)何钦铭著 习题4-5
题目
换硬币。将一笔零钱(大于8分,小于1元,精确到分)
换成5分、2分和1分的硬币,每种硬币至少有一枚。
输入金额,问有几种换法?
针对每一种换法,输出各种面额硬币的数量和硬币的总数量。试编写相应程序。
分析过程
输入
条件:输入金额(大于8分,小于1元,精确到分)
输出
条件:输出各种面额硬币的数量和硬币的总数量
代码
#include <stdio.h>
#include <math.h>
int main () {
/*定义变量*/
int money; /*定义变量,存储输入的金额*/
/*赋值*/
printf("请输入金额:\n"); /*输入提示*/
scanf("%d \n", &money); /*输入并赋给变量*/
/*计算*/
for(int i=1 ; i<=money/5 ; i++){
/*假设5分有一个,开始循环*/
for(int j=1 ; j<= money/2 ;j++ ){
/*假设2分有一个,开始循环*/
for (int k = 1; k < money; k++) {
/*假设1分有一个,开始循环*/
if(5*i+2*j+k == money)/*判断5分、2分、1分为当前数量所等价的数额与输入的数额是否相等,若相等,则输出*/
printf("5分、2分、1分的数量为%d、%d、%d,总数量为%d \n", i, j, k, i+j+k);
}
}
}
return 0;
}