int n = sizeof(arr) / sizeof(int)怎样用别的c语句替换
时间: 2023-11-20 07:05:34 浏览: 35
可以使用以下语句来计算数组元素个数:
```
int n = sizeof(arr) / sizeof(arr[0]);
```
其中,`sizeof(arr)` 表示整个数组所占据的内存空间大小,`sizeof(arr[0])` 表示数组中一个元素所占据的内存空间大小,相除即可得到数组元素个数。
相关问题
int n = sizeof(arr) / sizeof(arr[]);的作用
这个语句的作用是计算数组 arr 的元素个数,其中 sizeof(arr) 表示数组 arr 的总字节数,sizeof(arr[]) 表示数组 arr 中每个元素的字节数,两者相除即可得到数组 arr 的元素个数。
int main() { int arr[] = { 1,2,3,4,5,6,7,8,9,10 }; int k = 0; printf("请输入你需要查找的数字\n"); 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;//中间元素下标;mid = left+(right-left)/2 if (arr[mid] < k) { left = mid + 1; } else if (arr[mid] > k) { right = mid - 1; } else { printf("找到了下标是:%d", mid); break; } if (left > right) printf("不存在该数字\n"); } return 0; }修改代码中的错误
代码中并没有明显的错误,只有一处不规范之处,即缺少了 else 语句。当找到目标元素时应该及时退出循环,避免继续执行不必要的比较操作。修改后的代码如下:
```
int main() {
int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
int k = 0;
printf("请输入你需要查找的数字\n");
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;//中间元素下标;mid = left+(right-left)/2
if (arr[mid] < k) {
left = mid + 1;
}
else if (arr[mid] > k) {
right = mid - 1;
}
else {
printf("找到了下标是:%d\n", mid);
break;
}
}
if (left > right)
printf("不存在该数字\n");
return 0;
}
```