首页 > 编程语言 > 详细

C语言 百炼成钢15

时间:2016-01-25 20:59:45      阅读:106      评论:0      收藏:0      [点我收藏+]
//题目43:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出
//圈子,问最后留下的是原来第几号的那位。

#include<stdio.h>
#include<stdlib.h>

//分析:用while循环实现

//定于数组的大小
#define N 6

void main(){
    int a[N] = { 1, 2, 3 ,4,5,6};
    //定义报数变量
    int k = 1;
    //定义数组下标变量
    int index = 0;
    //定义数组有用元素变量
    int num = N;
    while (num != 1){
        //确保元素下标不会越界
        if (index>N - 1)
        {
            index = 0;
        }
        //当遇到已经删除的元素,要跳到下一个元素上
        if (a[index] != 0)
        {
            if (k == 3)
            {
                //删除已经报3的元素
                a[index] = 0;
                //实际元素个数减1
                num--;
                //遇到3后  重置报数
                k = 1;
            }
            else{
                k++;
            }
            index++;
        }
        else{
            index++;
        }
        
    }
    for (int i = 0; i < N; i++)
    {
        if (a[i]!=0)
        {
            printf("最后留下的是第%d号",a[i]);
        }
    }

    system("pause");
    
}

 

技术分享

C语言 百炼成钢15

原文:http://www.cnblogs.com/zhanggaofeng/p/5158436.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!