问题 E: 22-循环-1-整钞换零
#include<stdio.h>
int main()
{
int n=0;
while(scanf("%d",&n)!=EOF)
{
int cnt=0;
for(int i=1;i<=(n-3)/5;i++)
{
for(int j=1;j<=(n-6)/2;j++)
{
for(int k=1;k<=n-7;k++)
{
if(5*i+2*j+k==n)cnt++;
}
}
}
printf("%d\n",cnt);
}
return 0;
}
//}(100-5*i)/2
//100-5*i-2*j
for(int i=1;i<=m/5;i++)
{
for(int j=1;j<=(100-i*5)/2;j++)
{
for(int k=1;k<=100-i*5-j*2;k++)
{
if(i*5+j*2+k==m)
{
cnt++;
}
}
}
}
法2循环次数更少,更佳。
题目描述
给定任意的人民币的整币m(10、20、50和100元),将其兑换成5元、2元和1元币值(要求三种币值均有),统计兑换的的方法有多少种。
输入
多样例。每个样例输入一行,为任意人民币的整币100,50,20,10中的一个数据。
输出
每一个样例输出一行,包括一个整数,表示兑换的方法有多少种。
样例输入 Copy
50 10
样例输出 Copy
106 2
1、变量在生存周期内声明及初始化
否则会影响下一次输出
错误代码如下
int n=0;
int cnt=0;
while(scanf("%d",&n)!=EOF)
{
//第二次输入时cnt不再等于0
for(int i=1;i<=(n-3)/5;i++)
{
for(int j=1;j<=(n-6)/2;j++)
{
for(int k=1;k<=n-7;k++)
{
if(5*i+2*j+k==n)cnt++;
}
}
}
printf("%d\n",cnt);
}
2、方程思想:多种选择用循环。