C语言问题,关于循环报数
#include
main(){
int circle[17]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
int call;
int number;
int i;
number=17;
call=1;
while(number>0)
{
for(i=1;i<=17;i++){
if(call%3!=0&&circle[i]!=-1){
call++;
}else if(call%3=0){
circle[i]=-1;
number--;
call++;
}
}
}
for(i=1;i<=17;i++){
while(circle[i]!=-1){
printf("the num is %d",i);
}
}
system("pause");
}
编译失败,显示错误提示是需要逻辑0或非0在main函数中,求解释
------解决方案--------------------
int circle[17]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
int call;
int number;
int i=0;
number=16;//出队次数
call=1;//出队循环变量
while(number>0)
{
if((circle[i]!=-1))//当前元素未出队
{
if((call%3) == 0)//当前到循环点
{
circle[i]=-1;
call++;
number--;
}
else
{
call++;
}
}
i++;
if(i>=17)
i%=17;
}
for(i=0;i<17;i++)
{
if(circle[i]!=-1)
{
printf("the num is %d\n",i);
}
}
system("pause");
更改了你的求解逻辑
------解决方案--------------------
引用:我照着改了···还是有问题····
原题是17,编号0到16个人循环报数,从1开始,报到3的倍数的人离开知道剩下最后一个人····问这个人原来的编号是多少···答案是10
我改成这样的代码:
#include
main(){
int circle[17]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}……
你代码有点问题, 帮你改了一下:
#include
int main()
{
int circle[17]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
int call;
int number;
int i;
number=16;
call=1;
while(number>0)
{
for(i=0;i<=16;i++){
if(circle[i] != -1) {