这代码是你自己写的吗?
首先:
int
i,j,p,q,s,num,num2;
int
a[10]={1,5,9,14,22,31,47,55,63};
for(i=0;i<10;i++)
{
p=i;
q=a[i];
for(j=i+1;j<10;j++)
if(q<a[j])
{
p=j;
q=a[j];
}
if(p!=i)
{
num=a[i];
a[i]=a[p];
a[p]=num;
}
printf("%d\t",a[i]);/*在printf前面要加一个条件,if(i==9)exit(0),因为数组声明的时候是10个数据,你只给了9个值,还有最后一个a[9]的值为零,不加条件会多出一个零*/
}
其次》
printf("input number:\n");
scanf("%d",&num2);
for(i=0;i<10;i++)
if(num2>a[i])
{
for(s=9;s>=i;s--)
a[s+1]=a[s];
break;
}
a[i]=num2;
for(i=0;i<=10;i++)
printf("%d\t",a[i]);
return;
}
这段代码是让你输入一个数,然后按从大到小的顺序插入到之前只放了9个数据而长度为10的数组中,不是打印什么
a[i]=num2
而且
for(i=0;i<10;i++)
if(num2>a[i])
{
for(s=9;s>=i;s--)
a[s+1]=a[s];
break;
}
这段下标越界了,当你输入的数字大于63的时候 第一次循环进来a[9+1]是什么 ?数组a[10]里面最后的数据也只是a[9]