| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1701 人关注过本帖
标题:新手求助,看了半天实在找不到原因,谢谢
只看楼主 加入收藏
hao123mh
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2018-11-16
结帖率:0
收藏
已结贴  问题点数:20 回复次数:6 
新手求助,看了半天实在找不到原因,谢谢
原始题目:有abcde,5个不同的球,准备分给甲乙丙丁戊5人,已知甲不要a球,乙不要b球,丙不要c球,问共有多少种分法。

我的问题: 怀疑是continue的用法不对,程序陷入了死循环,但是我不知道为什么会陷入死循环。想请教大神告诉我原因,谢谢。(解题不是目的,参考书上有答案,主要是想知道为什么自己编的这段程序会死循环,所以不要告诉我其他的写法,只是想知道我这么写的问题所在,谢谢了)

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

void main()
{
    int a,b,c,d,e,i,j;//abcde 即代表甲乙丙丁戊;  abcde 五个球用01234代表
    int x[10];
    int n=1;
    
    for(i=0;i<10;i++)
        x[i]=1;

    for(a=0;a<5;a++)
    {
        if(a=0) continue;
        x[a]=0;     //防止重复

        for(b=0;b<5;b++)
        {
            if(b=1) continue;
            if(x[b])            
            {
                x[b]=0;        //防止重复
                for(c=0;c<5;c++)
                {
                    if(c=2) continue;
                    if(x[c])
                    {
                        x[c]=0;      //防止重复
                        for(d=0;d<5;d++)
                        {
                            if(x[d])
                            {
                                x[d]=0;   //防止重复
                                for(e=0;e<5;e++)
                                    n++;

                            }
                            x[d]=1;        //未找到解,重新赋1,下同
                        }                        
                    }
                    x[c]=1;
                }                            
            }
            x[b]=1;
        }
        x[a]=1;
        
    }

    printf("n=%d\n",n);

}


[此贴子已经被作者于2018-11-16 17:53编辑过]

搜索更多相关主题的帖子: 原因 continue int for 防止重复 
2018-11-16 17:51
幻紫灵心
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山咔咔里面
等 级:贵宾
威 望:53
帖 子:396
专家分:2640
注 册:2018-3-30
收藏
得分:7 
这种题不是在纸上推理一下就出来了嘛?

saber,别哭.
2018-11-16 18:53
hao123mh
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2018-11-16
收藏
得分:0 
回复 2楼 幻紫灵心
推不出来啊,可能我陷入思维误区或者一叶障目了。 我试了程序只能发现是因为陷入了死循环,但是我觉得逻辑没问题
2018-11-16 18:58
C基础
Rank: 6Rank: 6
等 级:侠之大者
威 望:6
帖 子:133
专家分:421
注 册:2018-10-15
收藏
得分:7 
你先把if中的判断条件改掉,比如这句:if(b=1)改成if(b==1),"="是赋值号,相信你们老师说过,只不过你没注意,下次小心点就可以了,希望对你有所帮助
2018-11-16 19:21
hao123mh
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2018-11-16
收藏
得分:0 
回复 4楼 C基础
天啊,感谢感谢,我就说哪里不对但是我自己看了半天没有反应过来。
2018-11-16 19:29
C基础
Rank: 6Rank: 6
等 级:侠之大者
威 望:6
帖 子:133
专家分:421
注 册:2018-10-15
收藏
得分:0 
回复 5楼 hao123mh
没事,没事
2018-11-16 22:15
MeandC
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:8
帖 子:245
专家分:792
注 册:2018-7-14
收藏
得分:7 
赋值号和等号习惯了就好了。

C果然是有点难啊!
2018-11-16 22:36
快速回复:新手求助,看了半天实在找不到原因,谢谢
数据加载中...
 
   



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

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