c语言初学者,求大神解释为什么运行结果不对,按顺序插入数据,

c语言初学者,求大神解释为什么运行结果不对,按顺序插入数据,#include<stdio.h>
int main()
{
int i,x,m;
int a[6]={1,3,5,7,9};
printf("请输入要插入的数\n");
scanf("%d",&x);
for(i=0;i<5;i++)
if(x<a[i])
{
m=i;
break;
}
for(i=5;i>=m;i--)
a[i+1]=a[i];
a[m]=x;
printf("(插入后的数组为:\n");
for(i=0;i<=5;i++)
{
printf("%d ",a[i]);
}
return 0;
}

第1个回答  2017-03-31
#include<stdio.h>
int main()
{
    int i,x,m=5;   //将m赋初始值5,防止插入的数大于9时出错 
    int a[6]={1,3,5,7,9};
    printf("插入前的数组为:");
    for(i=0;i<5;i++)
    printf("%d ",a[i]);
    printf("\n请输入要插入的数:");
    scanf("%d",&x);
    for(i=0;i<5;i++)
       if(x<a[i])
       {
          m=i; 
          break;      
        }
    for(i=5;i>=m;i--)
        a[i]=a[i-1]; 
    a[m]=x;
    printf("插入后的数组为:\n");
    for(i=0;i<=5;i++)
    printf("%d ",a[i]);
    return 0;
}

没考虑插入的数大于9的情况

第2个回答  2017-03-31
运行是没有问题,但是你不管插入哪个数字都是第一个,我帮你修改了一下代码:
#include<stdio.h>
int main()
{
int i,x,m,temp;//temp变量用来存储交换数值的
int a[6]={1,3,5,7,9};
printf("请输入要插入的数\n");
scanf("%d",&x);
while(x>=9){ //防止输入的值大于等于9
printf("请输入小于9的数!\n");
printf("请输入要插入的数\n");
scanf("%d",&x);
}
for(i=0;i<5;i++)
if(x<a[i])
{
m=i;
break;
}
for(i=5;i>=m;i--)
if(a[i]>a[i+1]){ //比较然后交换,必须加这个判断
temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
}
a[m]=x;
printf("(插入后的数组为:\n");
for(i=0;i<=5;i++)
{
printf("%d ",a[i]);
}
return 0;
}追问

有点没懂

懂了,谢谢

本回答被提问者采纳
相似回答