⑴ c语言编写程序:要将1元人民币换1角,2角,5角的零钱,有几种换法
#include<stdio.h>
int main()
{
int i,x,y,z, count=0;
for(z=0; z<=2;z++)
for(y=0;y<=5;y++)
for(x=0;x<=10;x++)
{
if((x+2*y+5*z)==10)
{printf("%d %d %d\n",x,y,z);count++;}
}
printf("%d",count);
}
⑵ C语言问题:要将100元钱换成1元,2元,5元的零钱,编程求出有几种换法这么编程为什么不行求高手指教!
程序源码如下:
循环嵌套循环次数少的尽量在外!
#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 << "种
";//输出换法种数
system("pause");
return 0;
}
程序运行结果如下:
(2)c语言换零钱怎么换扩展阅读:
其他实现方法:
#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.
",i);
return 0;
}
⑶ c语言换零钱
代码如下:
#include<stdio.h>
#include<stdlib.h>
intmain()
{
inti,j,k,n,cnt=0;
printf("Pleaseinputamountofmoney(unitjiao):");
scanf("%d",&n);
for(i=0;i<=(100/5);i++)
for(j=0;j<=(100/2);j++)
for(k=0;k<=100;k++)
if(i*5+j*2+k==n){
cnt++;
}
printf("Numberofconbinationsis:%d ",cnt);
system("pause");
return0;
}
运行结果:
⑷ C语言编程:将1元人民币兑换为1角、2角和5角的零钱,编写程序计算有多少种兑换方法
摘要 #include
⑸ C语言,零钱兑换问题
int sum = 0;
for(int i = 0;i <= 100 / 5;++i)
{
for(int j = 0;j <= 100 / 10;++j)
{
for(int k = 0;k <= 100 / 20;++k)
{
if(5 * i + j * 10 + k * 20 == 100)
sum++;
}
}
}
cout<<sum<<endl;
cout<<endl;
//大概意思就是 每种都循环遍历 结果等于100的 记下; 下面那个代码 漏掉了3种。
⑹ C语言 零钱兑换
#include<stdio.h>
intmain()
{
intin;
scanf("%d",&in);
printf("%d",in/10);
in=in%10;
printf("%d",in/5);
in=in%5;
printf("%d ",in);
}
⑺ C语言 换零钱
#include "stdio.h"
//穷举法
void main()
{
int i,j,n,s=0;
for(i=0;i<=20;i++) //5分最多换二十个
for(j=0;j<=50;j++) //2分最多换五十个
for(n=0;n<=100;n++) //1分可以换一百个
if( 5*i+2*j+1*n == 100)
{
printf("%d %d个 , %d %d个 , %d %d个",5,i,2,j,1,n);
printf("\n");
s++;
}
printf("一共有%d种方法",s);
}
⑻ C语言编程 零钱兑换
题目我没怎么看懂,比如说你写的i+j+l==k,那题目中的40放在哪里?
另外我要说的一个大问题,也是就是float的用法,float的值是小数,电脑的算法是近似值。
举个例子,
float a = 1;
b = a/10;
按道理b此时是0.1,但是你输出的由于编译器的不同有可能是 0.10000000000001,也有可能是0.09999999999999.也有可能是0.1。当出现这种情况,你的if中的判断就永远不会实现。
所以你的if可以比较大小判断,比如if(x==5)写成((x>4.9999)&&(x<5.00001))或者不要出现float,所有的数值乘以10,把小数去除。
⑼ C语言 换分币 用一百元人民币换成1元 5元和10元 共有多少种兑换方法
你好,如上所说,一共有361种兑换方法,可以得出{5C[1],C[1] + 2C[2],20 - C[1] -C[2]}方程,只需要保证都大于0就行。
1、遇到这种题目,我们首先要区分的概念是钱数和张数。这个问题我可以说大家伙都是明白的,但是用计算机来表达并不容易,是很有难度的。所以,在这种情况下,我们可以设置更多变量以使其易于查看,接着清空你的思绪。将100元换成1元、5元和10元。最简单的零钱是10元。因为 10 是 1、5、10 的最小公倍数。这总是为较小的数字留下空间来计算其他值。
2、然后可以用100删除,简而言之,无法清除并除以 100 / 10。这样10元10件、1元0件、5元最多可以获得。因此,最多为 10 件。如果9块是10元,此时定义变量1<=I<=10个周期就可以了。第一次循环后我们换掉一个10元,剩下的90元用来除5(90/5)。最多18块5元。因此,最多有 18 个。如果有17个,那么定义变量1 < = J < = 18。我们在嵌套循环的第一个循环中换出一个五元,那么剩下的五元和十元不言而喻,而剩下的1元不需要这样分析,因为1元的价值等于它的数量,即剩下的1元都是1元。
3、以下就是这道题的代码
#include "stdio.h"
#include "math.h"
main()
{
printf("共有%d种不同的兑换方案",fun (int n))
}
fun(int m)
{ int i;
for(i=0;i<=10;i++)
{int j;
for(j=0;j<=20;j++)
{int k;
for(k=0;k<=100;k++)
{
if(10i+5j+k==100) m+=1
}
}
if(i==10) return m
}
}
程序源码如下:
循环嵌套循环次数少的尽量在外!
#include
#include
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 << "种
";//输出换法种数
system("pause");
return 0;
}