2 yingxiongdahui yingxiongdahui 于 2014.11.21 19:53 提问

gcc编译没有错,就出不了结果,谁能帮我看下,多谢

#include
int main(int argc, char *argv[])
{
int n,x,y,i=0,a[100];

scanf("%d",&n);

for(i=0;i<n;i++)
{
    a[i]=i+1;

}

x=0;
y=n;

while(y>1)
{

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

        if(a[i]!=0)
        {   
            x++;

            if(x%3==0)
            {
                a[i] = 0;
                y--;

            }

        }
}


i=0;
while(i<n)
{
    if(a[i]!=0)
        printf("%d\n",a[i]);
}

return 0;

}

6个回答

jiangzuzai
jiangzuzai   2014.11.21 21:49
已采纳

while(i<n)
{
if(a[i]!=0)
printf("%d\n",a[i]);
i++;

}//加上 i++就可以了

shangguanwaner
shangguanwaner   2014.11.21 21:40

死循环了,最后几行。

save4me
save4me   Ds   Rxr 2014.11.21 22:18

最后一个while的时候i没有变化,一直为0,如果你输入大于1的数字,就永远i<n,如果你输入小于1的数,就不会执行while里面的语句,程序直接结束。
正常情况,在while中加上i++

u011897065
u011897065   2014.11.22 12:55

输入的数不会造成数组越界吧?

coyooly
coyooly   2014.11.22 23:56

没的说了,前面都说完了

yingxiongdahui
yingxiongdahui   2014.11.23 13:29

shangguanwaner 最早,却排在最后了。应该采纳他的,
大家的答案都对的,谢谢大家。
编译器没有提示错误,新手找的好累,呵呵

Csdn user default icon
上传中...
上传图片
插入图片