习题
一组有序的数据8,9,12,18,23,34,56,78,输入一个待查找的数,如果该数存在则输出该数所在的序号,如果不存在则将该数插入到该数组中,保持数组的有序性 // 输入一个数,查找在数组中是否有这个数,若有,这个数是数组中的第几个数,若没有则插入该数#include<stdio.h>
int main()
{
void find(int a[], int b, int high, int low);
int a = { 8,9,12,18,23,34,56,78 };
int b, high = 14, low = 0;
printf("请输入要寻找的数:");
scanf("%d", &b);
find(a, b, high, low);// 用数组名作为函数的实参
}
void find(int a[], int b, int high, int low)
{
int i, n, mid;
n = high;
while (low <= high)
{
mid = (high - low) / 2 + low;
if (b > a)
low = mid + 1;
if (b < a)
high = mid - 1;
if (b == a)
break; // 找到数后中断循环
}
if (b == a)
{
printf("we have the %dst number is %d\n", mid, a);
}
else
{
for (i = n;i >= mid;i--)
a = a;
a = b;
for (i = 0;i < 15;i++)
printf("%d ", a);
printf("\n");
}
} 我想看看 不用函数的做法 有吗?() 宇轩宇轩! 发表于 2020-12-24 11:25
我想看看 不用函数的做法 有吗?()
修改一下便是了。哥们,你有几个帖子还没有选最佳答案哟~~ 宇轩宇轩! 发表于 2020-12-24 11:25
我想看看 不用函数的做法 有吗?()
#include<stdio.h>
int main()
{
int a = { 8,9,12,18,23,34,56,78 };
int b, high = 14, low = 0;
int i, n = 0, mid,count = 0;
printf("请输入要寻找的数:");
scanf("%d", &b);
for (i = 0;i < high;i++)
{
if (a != 0)
n++;
}
high = n;
n = n + 1;
// 因为题目所给数据不足再加上 high 在运行中会不断地被修改
while (low <= high)
{
mid = (high - low) / 2 + low;
if (b > a)
low = mid + 1;
if (b < a)
high = mid - 1;
if (b == a)
break; // 找到数后中断循环
}
if (b == a)
{
printf("we have the %dst number is %d\n", mid, a);
}
else
{
for (i = n;i >= mid;i--)
{
a = a;
}
a = b;
for (i = 0;i < n;i++)
printf("%d ", a);
printf("\n");
}
}
页:
[1]