我用你上面的代码测试,没有出现无法输出,只是结果异常(我把第三个for循环的i--改为i++倒是出现了无法输出,不知道是不是你说的这种情况);
把a[inside] =temp;移到第三个for循环后面即得到预期的结果。
修改如下:
#include <stdio.h>
int main(void){
int i,j,n,temp,t;
int a[100];
int inside;
printf("输出元素的个数及插入的值:");
scanf("%d%d",&n,&temp);
// printf("n=%d,temp=%d\n",n,temp);
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
// printf("输入的元素为:\n");
// for(i=0;i<n;i++){
// printf("%d ",a[i]);
// }
//
if(temp<=a[0]){
inside=0;
}
if(temp>=a[n-1]){
inside=n;
}else{
for(i=0;i<n-1;i++){
if(temp>=a[i]&&temp<=a[i+1]){
// printf("a[%d]=%d,a[%d]=%d\n",i,a[i],i+1,a[i+1]);
inside=i+1;
break;
}
}
}
// printf("\ninside=%d\n",inside);
for(i=n-1;i>=inside;i--){
a[i+1]=a[i];
}
a[inside] =temp;
for(i=0;i<=n;i++){
printf("%d",a[i]);
printf(" ");
}
return 0;
}