C语言高手来! 内存不能为written
发布网友
发布时间:2024-10-06 05:47
我来回答
共2个回答
热心网友
时间:2024-11-20 19:10
数组下标越界了。
if(a[i]<temp)
{
for(j=10;j>=i;j--) 这个地方,当 j = 10时,下面的操作是a[11] = a[10]; 而a[11]越界了
a[j+1]=a[j];
a[i]=temp;
break;
}
热心网友
时间:2024-11-20 19:10
越界了,第28行10改成9就好了。
#include<stdio.h>
void main()
{
int a[11],i,j,temp;
printf("please input 10 numbers:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(j=0;j<10;j++)
for(i=0;i<9-j;i++)
if (a[i]<a[i+1])
{
temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
}
printf("the sorted numbers:\n");
for(i=0;i<10;i++)
printf("%3d",a[i]);
printf("\nplease input a new number:\n");
scanf("%d",&temp);
if(a[9]>temp)
a[10]=temp;
else
{
for(i=0;i<11;i++)
if(a[i]<temp)
{
for(j=9;j>=i;j--) /* 10 -> 9 */
a[j+1]=a[j];
a[i]=temp;
break;
}
}
printf("the new sorted numbers:\n");
for(i=0;i<11;i++)
printf("%3d",a[i]);
}