标题:一元纸币兑换一分、二分和五分的硬币,帮我一下,谢谢!
只看楼主
饭桶
Rank: 6Rank: 6
等 级:侠之大者
帖 子:165
专家分:422
注 册:2011-4-5
结帖率:100%
已结贴  问题点数:20 回复次数:23 
一元纸币兑换一分、二分和五分的硬币,帮我一下,谢谢!
用一元纸币兑换一分、二分和五分的硬币,要求兑换硬币的总数为50枚,问有多少种换法?每种换法中各硬币分别为多少?
以下是我所编的,的不到正确的结果,我是一个新手,不知道哪错啦,谁能告诉我,谢谢!
#include "stdio.h"
main()
{ int a=0,b=0,c=0,count=0;
   printf("项目      一分    二分    五分");// a为一分,b为二分,c为五分
   for(a;a<=100;a+=1)
        
         for(b;b<=50;b+=1)
           
            for(c;c<=20;c+=1)
               
                 if((a+2*b+c*5)==100&&(a+b+c)==50)
                 {count++;
                  printf("\n方案%d    %4d    %4d    %4d",count,a,b,c);
                 }
               
           
      
 getchar();
}

[ 本帖最后由 饭桶 于 2011-4-6 00:07 编辑 ]
搜索更多相关主题的帖子: 纸币 
2011-04-05 23:53
王立帅
Rank: 3Rank: 3
来 自:山东淄博
等 级:论坛游侠
帖 子:61
专家分:160
注 册:2011-4-4
得分:10 
for(a = 0;a <= 100; a++)
for(;;)语句错了 应该分别给 a,b,c赋值
你可以想一下,执行第一个for循环,a = 1时 分别执行 50次 第二个for循环 和 二十次 第三个for循环,此时 b = 51; c = 21;
a = 2时 ; 条件不满足;
此题目 三个for 循环都必须赋初值 a = 0; b = 0;c = 0;

[ 本帖最后由 王立帅 于 2011-4-6 07:54 编辑 ]

一个人走
2011-04-06 07:53
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
得分:6 
程序代码:
root@~ #cat 1.c
#include <stdio.h>

int main (void) {

        int a,b,c,count=0;
        printf ("times:\tone\ttwo\tfive\n");
        for(a=1;a<101;a++) {
                for(b=2;b<101;b+=2) {
                        for(c=5;c<101;c+=5) {
                                if((a+b+c)==100&&(a+b/2+c/5)==50) {
                                        count++;
                                        printf ("%i:\t%i\t%i\t%i\t=100\n",count,
a,b/2,c/5);
                                }
                        }
                }
        }
        return 0;

}

root@~ #./1
times:  one     two     five
1:      3       46      1       =100
2:      6       42      2       =100
3:      9       38      3       =100
4:      12      34      4       =100
5:      15      30      5       =100
6:      18      26      6       =100
7:      21      22      7       =100
8:      24      18      8       =100
9:      27      14      9       =100
10:     30      10      10      =100
11:     33      6       11      =100
12:     36      2       12      =100
root@~ #

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-04-06 09:55
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
得分:2 
遍历2分和5分的时候, 他们不是递增1,而是递增2和5

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-04-06 09:55
chfei
Rank: 2
等 级:论坛游民
帖 子:25
专家分:37
注 册:2011-4-6
得分:2 
3楼的循环次数太多了  两个循环就行了 次数第一次100第二次50最多了,
2011-04-06 12:20
饭桶
Rank: 6Rank: 6
等 级:侠之大者
帖 子:165
专家分:422
注 册:2011-4-5
得分:0 
回复 2楼 王立帅
你说得对,分别赋值之后,就可以运行啦,这是怎么回事呢?

#include "stdio.h"
main()
{ int a,b,c,count=0;
   printf("项目      一分    二分    五分");
   for(a=0;a<=100;a+=1)
        
         for(b=0;b<=50;b+=1)
           
            for(c=0;c<=20;c+=1)
               
                 if((a+2*b+c*5)==100&&(a+b+c)==50)
                 {count++;
                  if(count<10)
                     printf("\n方案 %d    %4d    %4d    %4d",count,a,b,c);
                  else
                     printf("\n方案%d    %4d    %4d    %4d",count,a,b,c);
                 }
}

人得一生得奋斗!
2011-04-06 18:44
王立帅
Rank: 3Rank: 3
来 自:山东淄博
等 级:论坛游侠
帖 子:61
专家分:160
注 册:2011-4-4
得分:0 
回复 6楼 饭桶
我在前面的那个帖子里已经解释了,执行第一个循环一次后 b的值已经被自加到51,c的值自加到21;
再执行a = 2 这层循环时,b的初值为51,c的初值为21 不满足循环的条件了……

一个人走
2011-04-06 19:20
饭桶
Rank: 6Rank: 6
等 级:侠之大者
帖 子:165
专家分:422
注 册:2011-4-5
得分:0 
回复 7楼 王立帅
明白啦,谢谢啊!太感谢啦!!!

人得一生得奋斗!
2011-04-06 19:33
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
得分:0 
感谢楼主赐分!

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-04-06 20:14
痴痴颠颠
Rank: 1
等 级:新手上路
帖 子:7
专家分:5
注 册:2011-4-6
得分:0 
沙发说的很正确,穷举法必须把所有可能列出来。


耐得住寂寞,经得起挫折,做得出选择,拼的出结果!
2011-04-06 20:16



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-335731-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.125416 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved