| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 847 人关注过本帖
标题:请大家来读题!~~
只看楼主 加入收藏
mico
Rank: 1
等 级:新手上路
帖 子:96
专家分:0
注 册:2005-7-25
收藏
 问题点数:0 回复次数:18 
请大家来读题!~~

#include<stdio.h>

void main(void)
{
int i,test,p[17],head;
for(i = 0; i < 16; i++)
p[i] = i + 1;
p[16] = 0;
test = 0;
while(test != p[test])
{
for(i = 1; i < 3; i++)
{
head = test;
test = p[test];
}
p[head] = p[test];
test = p[head];
}
printf("\n%5d",test);
return;
}

17人逢3的倍数就离开的,然后继续报数,只到最后一人留下来的题目的答案,但本人实在看不明白,求高手大虾指点!~

循环体内很难理解。~~

搜索更多相关主题的帖子: test include return 
2006-05-14 23:03
mico
Rank: 1
等 级:新手上路
帖 子:96
专家分:0
注 册:2005-7-25
收藏
得分:0 
~~~怎么没人来啊~:(
!~~请看懂的人发表一下意见啊~~~谢谢

2006-05-15 18:45
走刀口→超
Rank: 6Rank: 6
等 级:贵宾
威 望:20
帖 子:5018
专家分:0
注 册:2006-3-14
收藏
得分:0 
我觉得没有可能留下一个人呀。
最起码2个吧。。。再看看。。。

人在江湖【走】,怎能不挨【刀】;为了能活【口】,唯有把己【超】!come on...
2006-05-15 18:53
mico
Rank: 1
等 级:新手上路
帖 子:96
专家分:0
注 册:2005-7-25
收藏
得分:0 
结果是10 是正确的!~~

2006-05-15 18:58
走刀口→超
Rank: 6Rank: 6
等 级:贵宾
威 望:20
帖 子:5018
专家分:0
注 册:2006-3-14
收藏
得分:0 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2

1 2 4 5 7 8 10 11 13 14 16 17
1 2 3 1 2 3 1 2 3 1 2 3

1 2 5 7 10 11 14 16
1 2 3 1 2 3 1 2

1 2 7 10 14 16
1 2 3 1 2 3

1 2 10 14
1 2 3 1


是到最后一组的意思咯?
还有程序不要写void main(void)这是错误的!


人在江湖【走】,怎能不挨【刀】;为了能活【口】,唯有把己【超】!come on...
2006-05-15 19:02
zhangjuan
Rank: 1
等 级:新手上路
帖 子:992
专家分:0
注 册:2006-1-19
收藏
得分:0 
void main(void)我在很多例子上看到这种用法

2006-05-15 19:06
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 
以下是引用zhangjuan在2006-5-15 19:06:00的发言:
void main(void)我在很多例子上看到这种用法

确实没有void main 的形式.
平常的main是int main的缩写


对不礼貌的女生收钱......
2006-05-15 19:10
走刀口→超
Rank: 6Rank: 6
等 级:贵宾
威 望:20
帖 子:5018
专家分:0
注 册:2006-3-14
收藏
得分:0 
错误就是了。这个程序我看不来。头很晕。
把FOR里面的head和test全部打出来看也不明白饿。
高手指点。。。

人在江湖【走】,怎能不挨【刀】;为了能活【口】,唯有把己【超】!come on...
2006-05-15 19:11
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 
以下是引用mico在2006-5-14 23:03:00的发言:

#include<stdio.h>

void main(void)
{
int i,test,p[17],head;
for(i = 0; i < 16; i++)
p[i] = i + 1;
p[16] = 0;
test = 0;
while(test != p[test])
{
for(i = 1; i < 3; i++)
{
head = test;
test = p[test];
}
p[head] = p[test];
test = p[head];
}
printf("\n%5d",test);
return;
}


这种算法很独特,不是本人,很难了解他的想法,如楼主您所说,循环体内太难理解....
我看到现在还是没看懂...再看看....


对不礼貌的女生收钱......
2006-05-15 19:27
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 
以下是引用mico在2006-5-15 18:58:00的发言:
结果是10 是正确的!~~

如果作者是按0,1,……,16编号这样10是正确的,
如果是按1,2,……17编号,这样应该是11
而程序中,定义成p[test]=i+1;让人感觉应该是按11才对,
可偏偏在下面又有一个是p[16]=0,让人感觉磨零两可。。


对不礼貌的女生收钱......
2006-05-15 19:33
快速回复:请大家来读题!~~
数据加载中...
 
   



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

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