C语言/C++常见习题问答集锦(三十三)之人民币兑换

  • Post author:
  • Post category:其他




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 版权协议,转载请附上原文出处链接和本声明。