为什么下面程序中,break出现的位置不一样,是怎么影响结果的?
# include <stdio.h>
int main ()
{
int a[14]={1,2,3,4,13,15,16,19,20,34,56,67,78}; //要多定义一个,这里还要一个空间留给添加的数了,不然又会出现不确定的数!
int n,i,j,temp1,temp2;
printf ("insert number :");
scanf ("%d",&n);
if (n>a[12])
{
a[13]=n;
}
else
{
for (i=0;i<=12;i++) //这下面有错误!
{
if (a[i]>n)
{
temp1=a[i];
a[i]=n;
for (j=i+1;j<=13;j++)
{
temp2=a[j];
a[j]=temp1;
temp1=temp2;
}
break;
}
//break; //为什么放在这里就不行了???结果就是错的!
}
}
printf ("the new order is :");
for (i=0;i<=13;i++)
printf ("%5d",a[i]);
printf ("\n");
return 0;
}
---------------
不都是在第一个for循环里面吗?为什么结果就不一样?
[解决办法]
准确的说你加在正确的地方,那里是为了结束内层循环,放到错误的地方就就结束外层循环了 直接影响结果
不知道能不能给你帮助 如果帮到了,亲,记得结贴给分哦
[解决办法]
if (a[i]>n)
{
break; // 只在a[i]>n的时候跳出上层循环
}
//break; //此处跳出循环,不管a[i]与n的关系,即整个循环只运行了i=0
}