作者在 2012-10-29 14:46:40 发布以下内容
/*
*有n个人围成一圈,顺序排号,从第一个人开始报数,
*凡报到3的人退出圈子,最后留下的是第几号。
*/
#include <stdio.h>
const int N = 100;
int main(){
int num[N], *p, i, cnt, k;
int n;
printf("输入一个正整数:");
scanf("%d", &n);
p = num;
for(i=0; i<n; i++){
*(p+i) = i+1;
}
i = 0, cnt = 0, k = 0;
while(cnt<n-1){
if(0!=*(p+i)){
k++;
}
if(3==k){
*(p+i) = 0;
cnt++;
k = 0;
}
i++;
if(n==i){
i = 0;
}
}//while
while(0==*p){
p++;
}
printf("最后剩下的是%dn", *p);
return 0;
}
*有n个人围成一圈,顺序排号,从第一个人开始报数,
*凡报到3的人退出圈子,最后留下的是第几号。
*/
#include <stdio.h>
const int N = 100;
int main(){
int num[N], *p, i, cnt, k;
int n;
printf("输入一个正整数:");
scanf("%d", &n);
p = num;
for(i=0; i<n; i++){
*(p+i) = i+1;
}
i = 0, cnt = 0, k = 0;
while(cnt<n-1){
if(0!=*(p+i)){
k++;
}
if(3==k){
*(p+i) = 0;
cnt++;
k = 0;
}
i++;
if(n==i){
i = 0;
}
}//while
while(0==*p){
p++;
}
printf("最后剩下的是%dn", *p);
return 0;
}