数字查找与排序问题 请看看。。。
/*一组有序的数据8,9,12,18,23,34,56,78,输入一个待查找的数,如果该数存在则输出该数所在的序号,如果不存在则将该数插入到该数组中,保持数组的有序性。*/
#include "stdio.h"
int main(void)
{
int a={8,9,12,18,23,34,56,78},i,num,j;
scanf("%d",&num);
for(i=0;i<8;i++)
{
if(num==a)
{
printf("%d的位置是第%d个",num,i+1);
break;
}
}
if(i==8) //num的值不在a数组中的情况
{
for(i=0;i<8;i++)
if(num<a)
break; //跳出循环后,将i的值传递给下面的语句,由其去判断。
if(i!=0) //num的值大于78 或 大于8小于78 的情况
{
for(j=0;j<i;j++)
printf("%d ",a); //先输出比num小的值
printf("%d ",num); //再输出num的值
for(j=i;j<8;j++)
printf("%d ",a); //最后输出比num大的值
}
//if(i==0)语句需放在if(i!=0)的下面。否则,i的值经过if(i==0)语句,改变为8,使得if(i!=0)语句符合条件而执行,影响输出结果。
if(i==0) //num的值小于8的情况
{
printf("%d ",num);
for(i=0;i<8;i++)
printf("%d ",a);
}
}
return 0;
}
代码正确,结果也正确。
就感觉这代码不怎么好,有点复杂。
请问大神
你有什么不同的思路
请指教一下 写了一个,用两个数组比较方便~代码奉上,有错误请指出~~~
#include "stdio.h"
int main(void)
{
int a={8,9,12,18,23,34,56,78},i,num,temp;
scanf("%d",&num);
if((num!=8)&&(num!=9)&&(num!=12)&&(num!=18)&&(num!=23)&&(num!=34)&&(num!=56)&&(num!=78))
{ //如果查找的数不在数组内那么执行插入算法
for (i=0;i<8;i++)
{
temp=a;
}
for (i=0;i<8;i++)
{
if((a<num)&&(num<a))
{
a=num;
for (;i<8;i++)
{
a=temp;
}
}
}
for (i=0;i<8;i++)
{
printf("%d ",a);
}
}
else
{
for (i=0;i<8;i++)
{
if (a==num)
{
printf("%d\n",i+1);
}
}
}
return 0;
}
此处略缺三万 发表于 2013-12-3 21:44 static/image/common/back.gif
写了一个,用两个数组比较方便~代码奉上,有错误请指出~~~
#include "stdio.h"
int main(void)
你好 谢谢你的回帖
在输入不属于a数组里面的值的num时,出错了。
部分代码(输入的数num不是a数组里的值时)出错了
if((a<num)&&(num<a))
当输入的数num大于78时,i=7,而元素a不存在。
for (i=0;i<8;i++)
{
printf("%d ",a);
}
请问你是想把num的值嵌入a数组里面,然后将num在内的九个值输出吗?
但初始化后不能改变数组的大小。
这是我的看法,希望对你有点帮助。{:1_1:}
页:
[1]