| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 324 人关注过本帖
标题:求解一道函数编程
只看楼主 加入收藏
时泽阳
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-10-16
结帖率:0
收藏
 问题点数:0 回复次数:3 
求解一道函数编程
有二十人,从一开始报数报道三的人就退出!!问最后退出的人是谁?(最后退出的人是以前二十人的数!)
2012-10-16 18:40
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:0 
问题提的这么专业  给你个连接https://bbs.bccn.net/thread-383135-1-1.html
2012-10-16 19:10
Brilion
Rank: 1
等 级:新手上路
帖 子:7
专家分:9
注 册:2012-10-16
收藏
得分:0 
void main(void)
{
    int result(int *p,int n,int m);
    int i=0,m=0,n=0;
    int num[50];
    int *p;
   
    for(;;)
    {
        printf("输入人数和报数值:");
        scanf("%d%d", &n, &m);
        for(i = 0; i < n; i++)
            num[i] = i + 1;
        p = num;
        cout<<"The last one is NO."<<result(p,n,m)<<endl;
    }
}
int result(int *p,int n,int m)
{
    int i=0;
    for(i=0;i<n;i++)
        p[i]=i+1;
    i=0;                   // i为每次循环时计数变量
    int k=0;                   // k为按1,2,3...m报数时的计数变量
    int die=0;                   // die为退出人数
    while (die<n-1)          // 当退出人数比n-1少时(即未退出人数大于1时)执行循环体
    {
        if (p[i]!=0)  k++; //如果编号为0,就不报数;如果编号不为0,报数加1
        if (k==m)             // 将退出的人的编号置为0
        {
            printf("%d退出\n",p[i]);
            p[i]=0;
            k=0;//重新开始报数
            m++;//退出人数加1
        }
        i++;
        if (i==n) i=0;        // 报数到尾后,i恢复为0
    }
    while(*p==0) p++;
    return *p;
}
2012-10-16 19:13
lyj2010lyj
Rank: 2
等 级:论坛游民
帖 子:25
专家分:27
注 册:2010-9-28
收藏
得分:0 
回复 3楼 Brilion
k的值怎么定
2012-10-16 21:48
快速回复:求解一道函数编程
数据加载中...
 
   



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

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