如何将不在数组中的无素插入数组中呢?为什么我这个不行啊?
#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);
}
}
以上的我的代码,不过运行的时候却得不到想要的结果……
问题出在哪里呢?希望高手指点指点………………
{:5_93:}我就看看,不说话 #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]