|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
/*一组有序的数据8,9,12,18,23,34,56,78,输入一个待查找的数,如果该数存在则
输出该数所在的序号,如果不存在则将该数插入到该数组中,保持数组的有序性。*/
#include "stdio.h"
int main(void)
{
int a[8]={8,9,12,18,23,34,56,78},i,num,j;
scanf("%d",&num);
for(i=0;i<8;i++)
{
if(num==a[i])
{
printf("%d的位置是第%d个",num,i+1);
break;
}
}
if(i==8) //num的值不在a数组中的情况
{
for(i=0;i<8;i++)
if(num<a[i])
break; //跳出循环后,将i的值传递给下面的语句,由其去判断。
if(i!=0) //num的值大于78 或 大于8小于78 的情况
{
for(j=0;j<i;j++)
printf("%d ",a[j]); //先输出比num小的值
printf("%d ",num); //再输出num的值
for(j=i;j<8;j++)
printf("%d ",a[j]); //最后输出比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[i]);
}
}
return 0;
}
代码正确,结果也正确。
就感觉这代码不怎么好,有点复杂。
请问大神
你有什么不同的思路
请指教一下 |
|