免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 5419 | 回复: 26
打印 上一主题 下一主题

Intel一道笔试面试题目,各位有空看一下. [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-10-30 02:33 |只看该作者 |倒序浏览
TOTAL个人围一圈,从1开始数到N,谁数到N出圈,下一个人继续从1开始数,返回最后一个出局的人。
  #define TOTAL 15;
   int xxxx(int N)
  {
   int ring[TOTAL] = {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1} //全是1
   int nextstart = 0, counter=0;
   for (i =1; i<TOTAL; i++){
   counter = 0;
   while(counter <N) {
   if (_______________)
   ( ______________  ;    )
   else
   (____________;         )
   }
   ring[nextstart]=0
   }
   return nextstart +1;
  }

[ 本帖最后由 dominic99 于 2005-10-30 21:48 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2005-10-30 08:08 |只看该作者

Intel一道笔试面试题目,各位有空看一下.

#include <stdio.h>;
#include <conio.h>;

int main(void)
{
        char        players[20][10];
        int                isOuted[20];/*人是否已出圈*/
        int                m;/*出圈数字*/
        int                s;/*起始位置*/
        int                i, j = 1;/*循环计数器变量*/
        int                n;/*参加游戏的人数*/
       
        puts("请输入参加出圈游戏的人员名单";
        for(i = 0; i < 20; ++i)
        {
                printf("第%d位:", i + 1);
                scanf("\n%9[^\n]", players);
                if( players[0] == '!' )
                        break;
        }
        n = i;/*获得参加游戏的人数*/
        printf("请输入出圈数字:";
        scanf("%d", &m);
        printf("请输入起始位置:";
        scanf("%d", &s);
        printf("共有%d人参加游戏,出圈数字是%d,起始位置%d(%s)"
                   "\n\n开始游戏...\n", n, m, s, players[s - 1]);
       
        for(i = 0; i < 20; ++i)
                isOuted = 0;/* 0表示没有出圈*/
       
        for(i = 1; i <= n; ++i)
        {
                for(; j < m; ++j)
                {
                        s %= n;
                        ++s;
                        if(isOuted[s - 1])
                                --j;
                }
                isOuted[s - 1] = 1;/* 1表示出圈*/
                printf("%s出圈!\n", players[s - 1]);
                j = 0;
        }
        return 0;
}

论坛徽章:
0
3 [报告]
发表于 2005-10-30 08:53 |只看该作者

Intel一道笔试面试题目,各位有空看一下.

这是课本的题目,钱能的

论坛徽章:
0
4 [报告]
发表于 2005-10-30 14:50 |只看该作者
那个三个空要怎么填呢?

论坛徽章:
0
5 [报告]
发表于 2005-10-30 16:39 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
6 [报告]
发表于 2005-10-30 19:36 |只看该作者
确定这个程序是这个样子的吗?

因为for循环的最后一轮里面的while循环淘汰的是第Total-1轮的一个人,也就是说在完成for循环以后,nextstart指向的应该是(TOTAL-1)轮淘汰的人,这样接下来应该就是找到最后一个人啊,为什么这里直接返回(nextstart+1)(因为数组下标从1开始,所以nextstart对应的就是第nextstart+1个人)啊?

比如说TOTAL=3,N=2时候,第一次删除第2个人(数组下标为1),第二次删除第1个人(数组下标为0),这样做了2次循环后,nextstart=0;退出循环后,nextstart=0,这样返回的就是nextstart+1,也就是说最后的那个人是第一个人,但是很明显,最后的胜利者应该是第3个人啊?

我不知道这样的理解有问题没有?希望大家指正

论坛徽章:
0
7 [报告]
发表于 2005-10-30 20:03 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
8 [报告]
发表于 2005-10-30 21:40 |只看该作者

题真的有错

int ring[TOTAL] = {1} //全是1
第一个数为1,其他为0


楼主题目要给正确

论坛徽章:
0
9 [报告]
发表于 2005-10-30 21:53 |只看该作者

标题也要给正确
究竟是笔试还是面试?

论坛徽章:
0
10 [报告]
发表于 2005-10-30 21:55 |只看该作者
回erduo100 . 不好意思,已改过来了.

题目是偶然在网上看到的,想了一下午还想不出一个确切的答案.
找不到答案.

各位有空再看看吧..担搁各位时间了..
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP