这里是我的代码:当我的数组输入是10001,那么它也进入另一个块输入[1] = 0,如果我已经把条件放在外层if if(input [j] = = 1)。任何人都可以告诉我为什么会发生这种情况?为什么它进入else时如果外部不是真的呢?
#include<stdio.h>
int main()
{
unsigned int tcase=0,build=0,i=0,j=0,k=0,count=0;
unsigned int input[1000];
scanf("%d",&tcase);
while(tcase--)
{
scanf("%d",&build);
for(i=0;i<build;i++)
scanf("%d",&input[i]);
for(j=0;j<build;j++)
{
if(input[j]==1)
{
if(j==0)
{ input[j+1]=1;
printf("fddf");
}
else if(j==(build-1))
{
input[j-1]=1;
printf("Gfgf");
}
else
{
input[j+1]=1;
input[j-1]=1;
printf("awGfgf");
}
}
}
for(k=0;k<build;k++)
{
if(input[k]==0)
++count;
}
printf("%d\n",count);
}
return 0;
}
可正常工作。它进入是因为在前面的迭代中(迭代j = 0),你将输入[1]的值改为1 – carlosdc 2012-08-04 17:57:43