我是一名大学生,在学习c语言。大家看到有不对的欢迎指出,谢谢~
换硬币。将一比零前(大于8分,小于1元,精确到分)换成5分、2分和1分的硬币,每种硬币至少有一枚。输入金额,问有几种焕发?针对每一种换法,输出各种面额硬币的数量和硬币的总数量。试写相应程序。
我有两个程序,虽然都差不多,但还是觉得第二种挺新奇的,嘿嘿。
第一种
#include<stdio.h>
int main(){
int i,j,k,money,n; //i表示1分,j表示2分,k表示5分
printf("请输入金额:");
scanf("%d",&money);
for(i=1;i<=money;i++){
for(j=1;j<=money-i;j++){ //-i可以省略
for(k=1;k<=money-i-j;k++){ //-i-k可以省略
if(i+j*2+k*5==money){
printf("i=%d,j=%d,k=%d\n",i,j,k);
n++;
}
}
}
}
printf("一共有%d种换法。",n);
return 0;
}
第二种
#include<stdio.h>
int main(){
int i,j,k,money,n;
printf("请输入金额:");
scanf("%d",&money);
for(i=1;i<=money;i++){
for(j=2;j<=money;j+=2){
for(k=5;k<=money;k+=5){ //没想到j直接加2居然可以
if(i+j+k==money){
printf("i=%d,j=%d,k=%d\n",i,j,k);
n++;
}
}
}
}
printf("一共有%d种换法。",n);
return 0;
}