求助关于C语言的问题!

要求:已知一有序序列1,3,4,8,15,17,要求从键盘输入一个整数,将此整数插入到此有序序列中。要求输出原始数组和插入之后的数组。

以下是我写的程序:
#include<stdio.h>
#include<stdlib.h>
int insert(int b[],int c)
{
int s1[100],j,i;
if (b[0]>=c)
{
s1[0]=c;
for(i=0;i<6;i++) s1[i+1]=b[i];
}
else if (b[0]<c)
{
for(i=0;;i++)
{
if (b[i]>c) break;
if (i=6) break;
}
for(j=0;j<(i-1);j++) s1[j]=b[j];
s1[i]=c;
for(j=i;j<6-i;j++) s1[i+1]=b[i];
}
else {
printf("please input a number\n");
exit(-1);
}
for(i=0;i<7;i++) b[i]=s1[i];
}
int main()
{
int a[10]={1,3,4,8,15,17},i,n;
printf("原始数组为:\n");
for(i=0;i<6;i++) printf("%3d",a[i]);
printf("\n");
printf("请输入一个整数:\n");
scanf("%d",&n);
insert(a,n);
printf("hou\n");
for(i=0;i<7;i++) printf("%3d",a[i]);
}

应该有不少错误,请告诉我应该怎么改QAQ 谢谢了!

#include<stdio.h>
#include<stdlib.h>
int insert(int b[],int c)
{
    int s1[100],j,i;
    if (b[0]>=c)
    {
        s1[0]=c;
        for(i=0; i<6; i++) s1[i+1]=b[i];
    }
    else if (b[0]<c)
    {
        for(i=0;; i++)
        {
            if (i==6) break;    /*这一句要放在上面,否则下面那句会数组访问越界,其实放在for语句就可以了*/
            if (b[i]>c) break;
        }
        for(j=0; j<=(i-1); j++) s1[j]=b[j];
        s1[i]=c;
        for(j=i; j<6; j++) s1[j+1]=b[j];    /*这一句问题比较多,自己看看*/
    }
    else
    {
        printf("please input a number\n");
        exit(-1);
    }
    for(i=0; i<7; i++) b[i]=s1[i];
}
int main()
{
    int a[10]= {1,3,4,8,15,17},i,n;
    printf("原始数组为:\n");
    for(i=0; i<6; i++) printf("%3d",a[i]);
    printf("\n");
    printf("请输入一个整数:\n");
    scanf("%d",&n);
    insert(a,n);
    printf("hou\n");
    for(i=0; i<7; i++) printf("%3d",a[i]);
}

算法比较啰嗦,给你改了改表面问题,你看看。

追问

修改之后输出的 3,4 是乱码 Q_Q

追答

不会啊,我这里是可以的,你用我的代码拷贝过去执行以下试试。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-07-10
不用那么复杂吧。
看我的。

#include<stdio.h>
#include<stdlib.h>

int main()
{
int a[7]={1,3,4,8,15,17,0},i,n;
printf("原始数组为:\n");
for(i=0;i<6;i++) printf("%3d",a[i]);
printf("\n");
printf("请输入一个整数:\n");
scanf("%d",&n);
a[6]=n;
int t=n;
for(i=0;i<6;++i){
if(a[i]>n){
int temp=a[i];
a[i]=t;
t=temp;
}
}
a[6]=t;
printf("hou\n");
for(i=0;i<7;i++) printf("%3d",a[i]);
system("PAUSE");
}

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网