C语言 无法到达的代码(请高手指点)

来源:百度知道 编辑:UC知道 时间:2024/06/01 05:48:45
我自己想做个冒泡,随意乱做的一个东西,不知道错在哪了,请高手指点!以下为我做的东东
# include <stdio.h>
main()
{int a[11];
int i,j,f;
for (i=1;1<=11;i++)
scanf("%d",&a[i]); //定义函数,输入10个大小不等的数
for(i=1,j=0;;j++) //j函数为记数用,10个数理论上最多只要55次比较就可以
{if(j<=55)
{if(a[i]>=a[i+1])i++;
else{
f=a[i];
a[i]=a[i+1];
a[i+1]=f;
i++;}
}
else break;}
}
结果编译的时候说第七行的"for",第八行的"if":Unreachable code in function mian
请高手指点,小弟现在正准备考C,希望高手指导呀,如果您有时间可以和我qq联络,本人的qq 是:276191006,请求请说明哦!

从语法来看,第一个for中不应该是1<=11,而是i<=11;第二个for没有终止条件,计数器j没有意义,如果没有比较55次,则停止不了。另外i只能从1到10,而不是11。

从逻辑来看,我只好说没有正确的地方。冒泡排序的典型算法是双重循环,网上有很多例子可以学习。你的这个程序从本质上讲没有实现多趟扫描,因为无论哪一支下标i都要加1,所以10次以后就越界了。

建议重新学习一遍基本概念。

# include <stdio.h>
void main()
{
int a[11];
int i,j,f;
for (i=1;i<11;i++)
scanf("%d",&a[i]); //定义函数,输入10个大小不等的数
for(i=1,j=0;;j++) //j函数为记数用,10个数理论上最多只要55次比较就可以
{
if(j<=55)
{
if(a[i]>=a[i+1])
i++;
else
{
f=a[i];
a[i]=a[i+1];
a[i+1]=f;
i++;
}
}
else
break;
}
}