| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1020 人关注过本帖
标题:请问各位大神下面这几种情况是怎么回事啊?(嵌套循环)
只看楼主 加入收藏
慕牧羊
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2018-4-18
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:8 
请问各位大神下面这几种情况是怎么回事啊?(嵌套循环)
#include<stdio.h>
int main()
{
    int b,c,d;//关于给出一个数值(单位:元),程序将给出由一角、两角、五角凑出来的答案;
    int e=0;
    float a;
    float f;
    printf("请输入一个数\na:");
    scanf("%f",&a);
    for(b=0;b<=a/0.1;b++)
    {
        for(c=0;c<=a/0.2;c++)
        {
            for(d=0;d<=a/0.5;d++)
            {
               f=0.1*b+0.2*c+0.5*d;
                if(f==a)
                {
                    
                    printf("%.1f元可以由%d个一角钱和%d个两角钱和%d个五角钱组成\n",a,b,c,d);
                }
            }
        }
    }
    return 0;}
1.当输入2的时候发现少了b=0,c=10,d=0;b=20,c=0,d=0这两种情况(b为一角钱的数量,c为两角钱的数量,d为五角钱的数量),这是什么原因啊?
2.当把自定义变量f去掉后,改为if(0.1*b+0.2*c+0.5*d==a)时,在输入a=2;为什么只输出b=0,c=0,d=4这一种情况啊?
搜索更多相关主题的帖子: 嵌套 int 输入 for 数量 
2018-04-18 22:19
nosnoy
Rank: 9Rank: 9Rank: 9
来 自:mcu
等 级:贵宾
威 望:14
帖 子:541
专家分:1178
注 册:2016-9-17
收藏
得分:10 
编译器的问题吧
我的运行正常 你可以尝试写成if((0.1*b+0.2*c+0.5*d)==a)

还有建议先判断5 再判断2 1则是20-5*d-2*c
    当20= 5*d+2*c的时候break
这样会降低运算时间
 虽然没快多少

穷举是最暴力的美学
2018-04-18 23:10
慕牧羊
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2018-4-18
收藏
得分:0 
回复 2楼 nosnoy
你好,我用cb和dev c++都试过,结果都是出现了前面说的问题,也试过将==前面的表达式整体用括号括起来,可还是不管用。想问下你用的是什么编译器啊?
2018-04-19 08:52
nosnoy
Rank: 9Rank: 9Rank: 9
来 自:mcu
等 级:贵宾
威 望:14
帖 子:541
专家分:1178
注 册:2016-9-17
收藏
得分:0 
回复 3楼 慕牧羊
dev c++


请输入一个数
a:2
2.0元可以由0个一角钱和0个两角钱和4个五角钱组成
2.0元可以由0个一角钱和5个两角钱和2个五角钱组成
2.0元可以由0个一角钱和10个两角钱和0个五角钱组成
2.0元可以由1个一角钱和2个两角钱和3个五角钱组成
2.0元可以由1个一角钱和7个两角钱和1个五角钱组成
2.0元可以由2个一角钱和4个两角钱和2个五角钱组成
2.0元可以由2个一角钱和9个两角钱和0个五角钱组成
2.0元可以由3个一角钱和1个两角钱和3个五角钱组成
2.0元可以由3个一角钱和6个两角钱和1个五角钱组成
2.0元可以由4个一角钱和3个两角钱和2个五角钱组成
2.0元可以由4个一角钱和8个两角钱和0个五角钱组成
2.0元可以由5个一角钱和0个两角钱和3个五角钱组成
2.0元可以由5个一角钱和5个两角钱和1个五角钱组成
2.0元可以由6个一角钱和2个两角钱和2个五角钱组成
2.0元可以由6个一角钱和7个两角钱和0个五角钱组成
2.0元可以由7个一角钱和4个两角钱和1个五角钱组成
2.0元可以由8个一角钱和1个两角钱和2个五角钱组成
2.0元可以由8个一角钱和6个两角钱和0个五角钱组成
2.0元可以由9个一角钱和3个两角钱和1个五角钱组成
2.0元可以由10个一角钱和0个两角钱和2个五角钱组成
2.0元可以由10个一角钱和5个两角钱和0个五角钱组成
2.0元可以由11个一角钱和2个两角钱和1个五角钱组成
2.0元可以由12个一角钱和4个两角钱和0个五角钱组成
2.0元可以由13个一角钱和1个两角钱和1个五角钱组成
2.0元可以由14个一角钱和3个两角钱和0个五角钱组成
2.0元可以由15个一角钱和0个两角钱和1个五角钱组成
2.0元可以由16个一角钱和2个两角钱和0个五角钱组成
2.0元可以由18个一角钱和1个两角钱和0个五角钱组成
2.0元可以由20个一角钱和0个两角钱和0个五角钱组成

--------------------------------
Process exited after 2.665 seconds with return value 0
请按任意键继续. . .

[此贴子已经被作者于2018-4-19 10:40编辑过]


穷举是最暴力的美学
2018-04-19 10:38
nosnoy
Rank: 9Rank: 9Rank: 9
来 自:mcu
等 级:贵宾
威 望:14
帖 子:541
专家分:1178
注 册:2016-9-17
收藏
得分:0 
回复 3楼 慕牧羊
图片附件: 游客没有浏览图片的权限,请 登录注册

改成64位编译器

穷举是最暴力的美学
2018-04-19 10:43
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:10 
不是闲得蛋疼就别用 浮点数
即使用浮点数,优先使用double

程序代码:
#include <stdio.h>

int main( void )
{
    unsigned dime;
    {
        printf( "请输入元数: " );
        double cny;
        if( scanf("%lf",&cny)!=1 || cny<0 )
            return 1;
        dime = (unsigned)(cny*10+0.5);
    }

    for( unsigned a=0; 5*a<=dime; ++a )
        for( unsigned b=0; 5*a+2*b<=dime; ++b )
            printf( "%.1f元可以由%d个一角钱和%d个两角钱和%d个五角钱组成\n", dime/10.0, dime-5*a+2*b, b, a );
}

2018-04-19 12:37
慕牧羊
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2018-4-18
收藏
得分:0 
回复 5楼 nosnoy
你好,我的电脑是32位的操作系统,改成64位的编译器的话得不出结果。想问下,就是你那在64位的编译器下运行得到的是正确的结果,改成32位的编译器运行的到的结果就是和我问题中提到的情况一样出现错误吗?
2018-04-19 21:54
慕牧羊
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2018-4-18
收藏
得分:0 
回复 6楼 rjsp
你好,表示接受你的建议
2018-04-19 21:56
慕牧羊
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2018-4-18
收藏
得分:0 
回复 4楼 nosnoy
非常感谢你的热心以及耐心解答,谢谢!
2018-04-19 22:05
快速回复:请问各位大神下面这几种情况是怎么回事啊?(嵌套循环)
数据加载中...
 
   



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

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