只是想学C 发表于 2014-3-27 05:10:11

如何将不在数组中的无素插入数组中呢?为什么我这个不行啊?

#include<stdio.h>

void main()
{
        int a,l=0,m=5,h=9,i,j,t,n,f;
       int c;
        for(i=0;i<10;i++)
        {
               
                printf("Input a[%d]:",i);
                while(scanf("%d",&a)!=1)
                {
                        printf("error! please Input a[%d] angin:",i);
                        getchar();
                }                                                                                                                                                //whlie循环,用以抵抗非法输入;
        }
        printf("\nthe array a is :\n");
        for(i=0;i<10;i++)
        {
                printf("%5d",a);
        }
        for(i=0;i<10;i++)
        {
                for(j=0;j<9-i;j++)
                {
                        if(a>a)
                        {
                                t=a;
                                a=a;
                                a=t;
                        }
                }
        }                                                                                                                        //两个for循环,用来对输入的数据进行排序;
        printf("\npai xu hou:\n");
        for(i=0;i<10;i++)
        {
                printf("%5d",a);
        }
        putchar('\n');
        printf("Input n:");
        while(scanf("%d",&n)!=1)
        {
                printf("error! please input angin:");
                getchar();
               
        }
        if(n<a||n>a)
        {
                f=0;
                goto loop;
        }
        while(l<h)
        {
                if(n==a)
                {
                        f=1;
                        break;
                }
                if(n>a)
                {
                        l=m+1;
                        m=(l+h)/2;
                }
                if(n<a)
                {
                        h=m-1;
                        m=(l+h)/2;
                }
        }
loop:if(0==f)
       {
               printf("there is no %d\n",n);
               
       for(i=0;i<10;i++)                                     //从这里开始:
               {
                       c=a;
               }
               c=n;
               for(i=0;i<11;i++)
               {
                       for(j=0;j<10-i;j++)
                       {
                               if(a>a)
                               {
                                       t=a;
                                       a=a;
                                       a=t;
                               }
                       }
               }                                                                                                        //到这里为止。此段代码用于将不在数组中的数据插入数组,并重新排序。
               printf("数组插入%d之后,排列为:\n",n);                               
               
               for(i=0;i<10;i++);
               {
                       printf("%5d",c);
               }
               
       }
       if(1==f)
       {
               printf("%d is a[%d]\n",n,m);
       }
       
}

以上的我的代码,不过运行的时候却得不到想要的结果……



问题出在哪里呢?希望高手指点指点………………

zhouyuelun 发表于 2014-3-27 08:30:31

{:5_93:}我就看看,不说话

只是想学C 发表于 2014-3-27 14:36:34

#include<stdio.h>

void main()
{
        int a={1,2,3,4,5,6,7,8,9,10},l=0,m=5,h=9,i,j,t,n,f;
       int c;
        for(i=0;i<10;i++)
        {
               
                printf("Input a[%d]:",i);
                while(scanf("%d",&a)!=1)
                {
                        printf("error! please Input a[%d] angin:",i);
                        getchar();
                }                                                                                                                                                //whlie循环,用以抵抗非法输入;
        }
        printf("\nthe array a is :\n");
        for(i=0;i<10;i++)
        {
                printf("%5d",a);
        }
        for(i=0;i<10;i++)
        {
                for(j=0;j<9-i;j++)
                {
                        if(a>a)
                        {
                                t=a;
                                a=a;
                                a=t;
                        }
                }
        }                                                                                                                        //两个for循环,用来对输入的数据进行排序;
        printf("\npai xu hou:\n");
        for(i=0;i<10;i++)
        {
                printf("%5d",a);
                c = a;
        }
        putchar('\n');
        printf("Input n:");
       
        while(scanf("%d",&n)!=1)
        {
                printf("error! please input angin:");
                getchar();
               
        }
        c = n;
        if(n<a||n>a)
        {
                f=0;
                goto loop;
        }
        while(l<h)
        {
                if(n==a)
                {
                        f=1;
                        break;
                }
                if(n>a)
                {
                        l=m+1;
                        m=(l+h)/2;
                }
                if(n<a)
                {
                        h=m-1;
                        m=(l+h)/2;
                }
        }
loop:if(0==f)
       {
               printf("there is no %d\n",n);
               
               for(i=0;i<11;i++)
               {
                       for(j=0;j<10-i;j++)
                       {
                               if(c>c)
                               {
                                       t=c;
                                       c=c;
                                       c=t;
                               }
                       }
               }                                                                                                        //到这里为止。此段代码用于将不在数组中的数据插入数组,并重新排序。
               printf("数组插入%d之后,排列为:\n",n);                               
               
               for(i=0;i<11;i++)
               {
                       printf("%5d",c);
               }
               
       }
       if(1==f)
       {
               printf("%d is a[%d]\n",n,m);
       }
       
}我自己又查了一下,改了几个错误,但还是不行。。。
单步调试的结果,当输入值n在a和a之间的时候,程序直接跳到结尾处,而不执行后面的语句。
百思不得其解,等待解答中……谢谢。。。
页: [1]
查看完整版本: 如何将不在数组中的无素插入数组中呢?为什么我这个不行啊?