解题思路:给一个数组在里面随便赋非零的值,遍历每个元素,如果这个元素不是零,就报数+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 人评分
简单的a+b (C语言代码)浏览:564 |
大小写转换 (C语言代码)浏览:904 |
【亲和数】 (C语言代码)浏览:908 |
校门外的树 (C语言代码)浏览:988 |
C语言训练-求1+2!+3!+...+N!的和 (C语言代码)万恶的long long浏览:907 |
WU-格式化数据输出 (C语言代码)浏览:1818 |
【亲和数】 (C语言代码)浏览:628 |
大家好,我是验题君浏览:604 |
C语言程序设计教程(第三版)课后习题10.3 (C语言代码)浏览:1968 |
局部变量作函数返回值的问题浏览:1028 |