|
![]() | 作者: top [top]
![]() |
登录 |
有13个人,每人一个序号(1-13)从1开始报数,报到5就离开一个!下一个(就是这个后面的那个)再以1开始!依次报,直到13个都出圈,要求顺序输出出圈人序号! [此贴被 偃月狂刀(top) 在 5月21日13时24分 编辑过] |
地主 发表时间: 5/21 13:1 |
![]() | 回复: dizi0774 [dizi0774] ![]() |
登录 |
很有意思的一个问题,用turbo c2.0解法如下: main() {int a[13],num,i,j,k; i=0; for(num=13;num!=0;num--) { for(j=0;j<5;j++) {i=(i==13)?1:i+1; comp: for(k=13-num;k>0;k--) {if(a[k-1]==i) {i=(i==13)?1:i+1; goto comp; } } } a[13-num]=i; } for(i=0;i<13;i++) {if(i%5==0)printf("\n"); printf("a[%2d]=%-5d",i,a[i]); } } turbo c2.0下调试通过。 |
B1层 发表时间: 05/21 02:45 |
![]() | 回复: top [top] ![]() |
登录 |
谢谢!!! 其实下一个是指删除后的那个的下一个,比如5过后的6就是5 的下一个! 你的程序是56789-----直到4 你的算法是怎么的?两个i=(i==13)?1:i+1是什么意思? 若按现在的说法又该在没做呢?答案是5。10。2――――――――到完! |
B2层 发表时间: 05/21 12:13 |
![]() | 回复: tucd [tucd] ![]() |
登录 |
判断I是否等于13,如果是就返回1,否则就返回I+1。 |
B3层 发表时间: 05/21 23:22 |
![]() | 回复: top [top] ![]() |
登录 |
两句的作用一样? 还有,这题怎么做?数到5的时候,是以5的下一个为1再数,一值到完 |
B4层 发表时间: 05/22 10:19 |
![]() | 回复: wxy6285 [wxy6285] ![]() |
登录 |
main() { int j=0,i,a[13],b[13]; for(i=0;i<13;i++)a[i]=++i; i=0; while(j==13) { for(num=0;num<5;) { if(a[i]!=0) num++; if(num==5) { b[j++]=a[i];a[i]=0;} if(++i==13)i=0; } } for(i=0;i<13;i++) printf("%d",b[i]); return; } 此程序是刚编的 还没有调试 意思是每数到第五个就把它记0直到所有数都为0 |
B5层 发表时间: 05/24 03:57 |
|
20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon
粤ICP备05087286号