你这是一个插入程序
程序代码:
# include<stdio.h>
int main()
{
int a[7]={1,2,22,55,78,89},i=0,k,j;
printf("请输入一个数:");
scanf("%d",&k);
while(i<6&&k>a[i]) {i++;}
if(i==6) a[6]=k;
else
{
for(j=i+1;j<=6;j++)//这个循环错了,应该从后往前走不是从前往后复制,你想想,这样循环过后从i+1的位置开始全部偶一样了!--》for(int j=6;j>i;j--)
a[j+1]=a[j];
}
a[j+1]=k; //这个赋值也错了,应该是我的那个循环出来后a[i]=k;并且这句话应该包括到上面的else板块
for(i=1;1<=7;i++)//1<=77的错误是粗心。。。另外C语言数组下标从0开始
printf("%-4d",a[i]);
printf("\n");
return 0;
}
总之问题比较多,在你的程序基础上我做修改如下:
# include<stdio.h>
int main()
{
int a[7]={1,2,22,55,78,89},i=0,k,j;
printf("请输入一个数:");
scanf("%d",&k);
while(i<6&&k>a[i]) {i++;}
if(i==6) a[6]=k;
else
{
for(j=6;j>i;j--)
a[j]=a[j-1];
a[i]=k;
}
for(i=0;i<7;i++)
printf("%-4d",a[i]);
printf("\n");
return 0;
}