关于C语言中if语句和break用法遇到的问题↓
有咩有师兄指导一下啊,请问以下代码中如果要正常执行,为什么需要else里面的break呢。
如果没有break,当输入了一个数组中存在的scanf的值,执行代码后它会一直等待;当输入了一个数组中不存在的scanf的值,执行代码后它会正常打印“未找到”。不太理解呀,猜测如果没有break,结果应该是重复打印“找到了,下标是*”,而不是一直等待吧。感谢各位师兄指导~
//在一个有序数组中查找具体的某个数字k,并输出它的下标。
#include <stdio.h>
int main(void)
{
int arr[] = {1,2,3,4,5,6,7,8,9,10};
int k = 0;
printf("Please enter a number:>");
scanf("%d",&k);
int sz = sizeof(arr)/sizeof(arr[0]);
int left = 0;
int right = sz-1;
while(left<=right)
{
int mid = (left+right)/2;
if(k<arr[mid])
{
right=mid-1;
}
else if(k>arr[mid])
{
left=mid+1;
}
else
{
printf("找到了,下标是%d\n",mid);
break;
//就是上面这个break
}
}
if(left>right)
{
printf("未找到\n");
}
return 0;
}