| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3719 人关注过本帖
标题:C语言报数问题
只看楼主 加入收藏
于小满01
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2014-6-4
结帖率:75%
收藏
已结贴  问题点数:20 回复次数:3 
C语言报数问题
我写了一段C的报数问题的解答,可是运行却不对,因为刚刚学指针,所以不太名明白哪里错了,希望大神帮忙指出,万分感谢。
要求是输入两个正整数 n 和 m( (1<m<n<=50)),有 n 个人围成一圈,按顺序从 1 到 n 编号。从第一个人开始报数,报数 m 的人退出圈子,下一个人从 1 开始重新报数,报数 m 的人退出圈子。如此循环,直到留下最后一个人。请按退出顺序输出退出圈子的人的编号,以及最后一个人的编号。


#include<stdio.h>
int main(void)
{
    int count, i, m, n, no;
    int num[50];
    int *p;

    scanf("%d%d", &n, &m);
    for(i = 0; i < n; i++)
        num[i] = i + 1;
    p = num;
/*---------*/
    i=0;no=0;count=0;
    while(no<n-1)
    {
        if(p[i]!=0)count++;
        if(count==m)
        {    no++;
            printf("No%d: %d\n", no, *p);
            p[i]=0;
            
            count=0;
        }
        i++;
        if(i==n)i=0;
    }

     p = num;
    while(*p == 0)
        p++;
    printf("Last No is: %d\n", *p);
}
搜索更多相关主题的帖子: include C语言 正整数 count 
2014-06-07 21:52
蚕头燕尾
Rank: 10Rank: 10Rank: 10
来 自:Gryffindo
等 级:贵宾
威 望:12
帖 子:734
专家分:1546
注 册:2013-3-24
收藏
得分:20 
这个问题叫做:简单约瑟夫环问题

建议楼主先看懂这个类型的问题的原理

然后到这里说一下“你”到底觉得哪里不对了。

学习编程,为的是表达自己的思想,而不是被别人的思想所禁锢。要先明白自己想干嘛,而不要先问别人让你干嘛。               

                                                                                                                    Black Cat      Hello Tomorrow~
2014-06-07 22:54
xsw07122269
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:34
专家分:183
注 册:2014-6-2
收藏
得分:0 
你if(count==m)里面那个printf语句里面输出*p永远输出的都是首元素,应该写p[i]或*(p+i)结果就对了。
2014-06-08 08:51
于小满01
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2014-6-4
收藏
得分:0 
经过楼上两位的提醒,我大体明白了,原来是指针的输出那里出了问题,谢谢两位了,作为一个新手,我得好好努力了期待与大家多交流
2014-06-08 22:13
快速回复:C语言报数问题
数据加载中...
 
   



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

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