Sapphire
2022/2/12
解题思路:
在输入人数n后,我们设置一个数组arr[n]并把其中每个元素设值为1,定义count=0(用来记人数),counter=0(用来记报数),然后开始遍历数组,每遍历一个元素,counter++,当counter=3时再把当前遍历到的这个数组元素赋值为0,这样下次就不会再数到这个数字了,并且count也++,表示被退出圈的人增加一个,最外层用一个while循环while(count!=n-1)就会一直执行数数,计数,赋值,直到count==n-1为止。
思路是不是非常清晰呢~~
注意事项:1.最后输出还保留在圈子里的那个人的编号时记得+1噢,因为数组的下标是从0开始的,与常理不同。
参考代码:
#include<stdio.h> int main() { int count=0; int counter=0; int n; scanf("%d",&n);//输入圈中有多少人 int arr[n]; int i; for(i=0;i<n;i++)//把每个人定义为1,方便计数 { arr[i]=1; } while(count!=n-1) { for(i=0;i<n;i++) { counter+=arr[i]; if(counter==3)//当计数君数到3时,把当前数组元素赋值为0避免再数到 { arr[i]=0; count++; counter=0; } } } for(i=0;i<n;i++) { if(arr[i]==1) { printf("%d",i+1);//这里千万记得要+1 } } return 0; }
0.0分
2 人评分
C语言程序设计教程(第三版)课后习题6.3 (C语言代码)浏览:553 |
C语言程序设计教程(第三版)课后习题8.3 (C语言代码)浏览:624 |
C语言程序设计教程(第三版)课后习题7.4 (C语言代码)浏览:1314 |
【计算直线的交点数】 (C语言代码)浏览:1501 |
三角形 (C语言代码)浏览:965 |
第三届阿里中间件性能挑战赛-总决赛亚军比赛攻略浏览:1170 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:497 |
C语言程序设计教程(第三版)课后习题7.4 (C语言代码)浏览:548 |
C语言程序设计教程(第三版)课后习题5.8 (C语言代码)浏览:691 |
老王赛马 (C++代码)浏览:973 |