对于循环,并不像seitch分支语句中拥有default指令,这时可以选择使用循环加if的结构来完成最后结果,例如
while(a<=b)
{
\\n内容
}
if(a>b)
{
\\内容
}
这样的结构,两面取反来达到效果
顺手写了一个昨天的查找序列的更改版,上一个版本是随机数列的查找,这个是使用二分法的有序序列查找。序列随手写的,无关紧要
#include<stdio.h> //使用二分法验证一个数字是否存在于一个已有顺序的数组中
int main()
{
int a = 0;
int arr[] = {1,5,9,21,55,98,110,230,420,365,558,655,722};
int sz = sizeof(arr) / sizeof(int);
int l = 0,r=sz-1;
int mid = 0;
printf("please enter the num\n");
scanf_s("%d", &a);
while (l < r)
{
mid = (r + l) / 2;
if (arr[mid] > a)
r = mid-1;
else if (arr[mid] < a)
l = mid+1;
else if (arr[mid] == a)
{
printf("存在");
break;
}
if (l >= r)
{
printf("不存在");
}
}
return 0;
}
这里再r=mid-1 和l=mid+1的问题上纠结好久,本身mid代表的是字符的位序而非字符