int i,a[6],x,t;
for(i=0;i<5;i++)
scanf("%d",&a[i]);
printf("再输入一个数");
scanf("%d",&a[x]);
for(i=0;i<6;i++)
{
if(a[x]>a[x+1])
{
t=a[x];
a[x]=a[x+1];
a[x+1]=t;
}
printf("%5d",a[i]);
}
system("pause");
你怎么一直在用变量x,你始终没有对它改变过,一直是0,这肯定不对
你的x应该有个初始化,不然我们怎么知道你是从a[?]开始比较的呢,如果设X=0,那么就是从a[0]开始比较
x没有值,你从第二次读取一个数就开始错了,它把第一个元素的值覆盖了
你没有对x赋值,系统会自动为x赋一个任意数,在"scanf("%d",&a[x]);"时,会将数字存到a数组中下标为x的地址里,在第二个for循环中,x并没有变化,所以下标一直没变,都是a[x]和a[x+1]这两个数在比较。
也就是说,如果系统赋予x的值为4,那么执行 scanf("%d",&a[x]); 这句代码时,系统会将输入的值存到a[4]中,在第二个for循环里,一直都是a[4]和a[5]在做比较。
第二个scanf里的'x'是不是应该改为5,if语句里的'x'改为‘ i ’?
if(a[x]>a[x+1])
{
t=a[x];
a[x]=a[x+1];
a[x+1]=t;
}
printf("%5d",a[i]);
改成:
for(i=0;i {
if(a[i]>a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
printf("%5d",a[i]);
}
这是段不安全的代码,因为scanf函数接收的是输入流,分配的内存是系统自动分配的,在第二次scanf的时候,楼主可以定义一个整型变量,然后把这个变量赋值给
你的数组元素a[5],这样就可以比较数组大小了