注意事项:除了内存有点大,好像没别的问题
参考代码:
#include<stdio.h> int main() { int n,a[1000000]={0},cnt=0,i; scanf("%d",&n); for(i=0;i<n;i++){ a[i]=i+1; }//把每个学生进行排序 int sum=n; while(sum>1){ //当圈内只剩下一名学生,退出循环 for(i=0;i<n;i++){ if(a[i]!=0){ cnt++;//报数 if(cnt==3){ a[i]=0;//当报到三,该学生序号归零 cnt=0; sum--;//圈内学生减一 } } } } for(i=0;i<n;i++){ //遍历数组,将学生序号输出 if(a[i]!=0){ printf("%d\n",i+1); } } return 0; }
0.0分
1 人评分