C循环嵌套

来源:百度知道 编辑:UC知道 时间:2024/06/10 00:43:46
假设变量全部定义了
a〔8〕数组为有从大到小有序排列,插入一个数,仍然有序!
for(i=0;i<7;i++)
if(n>a[i])
{
for(s=6;s>=i;i--) //这里开始循环才对!
a[s+1]=a[s];
break;
}
a[i]=n;
for(i=0;i<8;i++)
printf("%5d",a[i]);
}
要是循环变成这样:
for(i=0;i<7;i++)
{
if(n>a[i]) //为什么这里开始循环出错。
for(s=6;s>=i;s--)
a[s+1]=a[s];
break; //这里不也跳出循环了吗?
}
a[i]=n;
for(i=0;i<8;i++)
printf("%5d",a[i]);
}
for(i=0;i<7;i++)
{
if(n>a[i])
for(s=6;s>=i;s--) //这里if为0时,是不是直接break,不执行for循环?
a[s+1]=a[s];
break;
}
a[i]=n; //要是直接跳出,这里是不是首元素?
for(i=0;i<8;i++)
printf("%5d",a[i]);
}

for(s=6;s>=i;i--) //这里开始循环才对! i--???????????
a[s+1]=a[s];
for(s=6;s>=i;s--)
a[s+1]=a[s];
自己没弄错吧

for(i=0;i<7;i++)
if(n>a[i]) /*这里当if语句判定n>a[i]时才执行下面{ }里的for判断*/
{
for(s=6;s>=i;i--)
a[s+1]=a[s];
break;
}
a[i]=n;
for(i=0;i<8;i++)
printf("%5d",a[i]);
}

下面的程序
for(i=0;i<7;i++)
{
if(n>a[i]) /*这里同样判断,但是和下面的for判断没有关系,无论他是否成立for一样要执行*/(错误出在这里)
for(s=6;s>=i;s--)
a[s+1]=a[s];
break;
}
a[i]=n;
for(i=0;i<8;i++)
printf("%5d",a[i]);
}