原题链接:[编程入门]报数问题
合理利用continue是该题突破的重点 即解决《在报数时如何跳过已经退圈的位置》
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<assert.h>
int main()
{
int k=0, m, n;//k统计数到3,m统计剩余在圈内的元素个数,n为最初元素个数
scanf("%d", &n);
m = n;
int a[30] = { 0 };
a[0] = n;//a[0]设为n
for (int i = 1; i < n; i++)//从a[1]开始一次1,2,3赋值
{
a[i] = i;
}
for (int i = 1; m >1; i++)//当圈内剩余1个的时候退出循环
{
if (a[i % n] == 0)
{
continue;//如果当前位置已经退圈,则继续for循环从下一个开始判断
}
k++;//当前元素在圈内 则数数+1
if (k == 3)
{
a[i % n] = 0;//令k=3的值为0,表示退圈
k = 0;
m--;
}
}
for (int j = 0; j < n; j++)
{
if (a[j] != 0)
{
printf("%d", a[j]);//将不等于0的数打印出来,
}
}
}
0 分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复