解题思路:给一个数组在里面随便赋非零的值,遍历每个元素,如果这个元素不是零,就报数+1存起来;报的数如果是3的倍数,那就把这个元素标记一下,给他赋为零,以便下次报数的不再为这个元素报数。用循环直到只剩一个非零的元素,就完了

注意事项:多次循环,直到剩一个非零的元素

参考代码:

void main()

{

          int arr1[1000]={0};

          int n=0;////////////输入的数

          int i=0;///////////循环

          int j=0;/////////////标记的非零的元素,就相当于报数

          int m=0;/////////////标记是零的元素,跳过报数

          int x=0;/////////////先存输入的n值

          scanf("%d",&n);

          x=n;

          while(n--)////////////其实只要是赋非零的数的就好

            {

               arr1[i]=i+1;

                i++;

            }


          for(i=0;i<x;i++)

           {

                if(arr1[i]!=0)///////////开始报数

                  {

                      j++;

                  }

                if(j%3==0&&arr1[i]!=0)////////////报数报到3的时候标记这个元素,给他赋零,并且不能重复赋零

                  {

                     arr1[i]=0;

                     m++;

                   }

                if(i==x-1&&m<x-1)/////////////////第一轮报完的时候,非零的元素不是1个,或者是零的元素不是n-1个,就是没赋完

                   {

                     i=-1;///////////后面要i++,才是0,下次循环

                   }

           }


         for(i=0;i<x;i++)

            {

              if(arr1[i]!=0)

                {

                printf("%d ",arr1[i]);//////////////////打印这个非零的元素,就是报数完没报到3的

                 }

            }

}


点赞(0)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论