C语言/C++常见习题问答集锦(三十三)之人民币兑换
程序之美
1、将一元钱换成1分,2分和5分硬币,每种硬币的个数大于0,且为5的倍数,编写程序并计算几种换法
C++:
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
int count=0;
/**********Program**********/
int x,y,z;
for(x=5;x<=100;x+=5)
for(y=5;y<=50;y+=5)
for(z=5;z<=20;z+=5)
if(x+2*y+5*z==100){
count ++;
}
/********** End **********/
cout << "共有" << count << "种换法。" << endl;
//忽略阅读
//忽略阅读结束
return 0;
}
结果为:
C语言:
解法一:
#include<stdio.h>
int main()
{
int i,j,k,num = 0;;
printf("1分\t2分\t5分\n");
for(i=1;i<100;i++)
for(j=1;j<50;j++)
for(k=1;k<20;k++)
if(i%5==0&&j%5==0&&k%5==0&&i+2*j+5*k==100){
num ++;
printf("%d\t%d\t%d\n",i,j,k);
}
printf("一共有%d种换法!\n",num);
return 0;
}
结果为:
解法二:
#include <stdio.h>
int main()
{
int a,b,c;
int t=0;
for(a=0;a<=20; a++)
{
for(b=0; b<=(100-5*a)/2; b++)
{
c=100-5*a-2*b;
if (a > 0 && b > 0 && c > 0 && a % 5 == 0 && b % 5 == 0 && c % 5 == 0)
{
printf("%d %d %d\n", a,b,c);
t++;
}
}
}
printf("共计%d种方法\n", t);
return 0;
}
结果为:
2、将一元钱换成一分两分五分硬币一共有几种换法
c++:
#include <iostream>
#include <fstream>
using namespace std;
int main() {
int cent_1=1,cent_2=2,cent_5=5;
int nCount=0;
for(int k=0;k<=20;k )
for(int j=0;j<=50;j )
for(int i=0;i<=100;i )
{
if((cent_1*i cent_2*j cent_5*k)==100)
{printf("- - - ",i,j,k);nCount ;}
}
cout<<"
一共 "<return 0;
}
C语言:
解法一:
#include <stdio.h>
int main()
{
int a,b,c;
int t=0;
for(a=0;a<=20; a++)
{
for(b=0; b<=(100-5*a)/2; b++)
{
c=100-5*a-2*b;
printf("%d %d %d\n", a,b,c);
t++;
}
}
printf("共计%d种方法\n", t);
return 0;
}
解法二:
#include<stdio.h>
int main(){
int i1,i2,i5;
for (i1=0;i1<=100;i1++)
for (i2=0;i2<=50;i2++)
for (i5=0;i5<=20;i5++)
if (i1+i2*2+i5*5==100)
printf("一分硬币%d个 + 二分硬币%d个 + 五分硬币%d个\n",i1,i2,i5);
}
解法三:
#include <stdio.h>
#include <stdlib.h>
int main(){
int c1, c2, c5, cnt = 0;
printf("1元硬币有以下这些兑换方法:");
for(c1 = 0; c1 <= 100; c1++)
for(c2 = 0; c2 <= 50; c2++)
for(c5 = 0; c5 <= 20; c5++)
if(c1 * 1 + c2 * 2 + c5 * 5 == 100){
printf("%3d个1分硬币、%3d个2分硬币、%3d个5分硬币\n", c1, c2, c5);
cnt++;
}
printf("共有%d种兑换方法。\n", cnt);
return 0;
}
解法四:
#include<stdio.h>
int fun()
{
int sum,count=0;
int i,j,k;
for(i=1;i<20;i++){
for(j=1;j<50;j++){
for(k=1;k<100;k++){
sum=5*i+2*j+k;
if (sum==100)
{
printf("%4d%4d%4d\n",i,j,k);
count++;}
}
}
}
return count;
}
int main()
{
int s;
s=fun();
printf("%d",s);
return 0;
}
版权声明:本文为hnjzfwy原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。