程序源碼如下:
循環嵌套循環次數少的盡量在外!
#include<iostream>
#include<stdlib.h>
using namespace std;
int main()
{
int count = 0;//換法數量
int temp;
int m = 100;//總錢數
int a = 1;//1元面值
int b = 2;//2元面值
int c = 5;//5元面值
//a, b, c的值還可以是10,20,50
for (int i = 0; i <= m / b; ++i)//++i的意義在於100必須換成三類紙幣,需要大於等於1張
{
for (int j = 0; j <= m / c; ++j) //5元
{
temp = m - (b * i + c * j);
//只要2元和5元的總和加起來不大於100,剩下的都換1元
if (temp >= 0 && temp % a == 0)
{
++count;//換法種數+1
}
}
}
cout << "換法有" << count << "種\n";//輸出換法種數
system("pause");
return 0;
}
程序運行結果如下:
擴展資料:
其他實現方法:
#include <stdio.h>
int main()
{
int x,y,z,i=0;
for(x=0;x<=20;x++)
for(y=0;y<=50;y++)
for(z=0;z<=100;z++)
{
if(x*5+2*y+z==100)
i++;
}
printf("There are %d ways.\n",i);
return 0;
}