1)输出函数为: void printArray(int arr[], int len){ for(int i=0; i<len; i++){ printf("%d ", arr[i]); } } 2)使用qsort排序并输出: int cmp(const void *a, const void *b){ return *(int*)a - *(int*)b; } //调用 qsort(arr, len, sizeof(int), cmp); printArray(arr, len); 3)使用bsearch查找并输出: int cmp(const void *a, const void *b){ return *(int*)a - *(int*)b; } //调用 int num = 6; int *ptr = (int*)bsearch(&num, arr, len, sizeof(int), cmp); if(ptr != NULL){ printf("%d在数组中的索引值为:%d", num, ptr-arr); //数组下标从0开始 }else{ printf("%d不在数组中", num); }有什么错误
时间: 2023-12-12 21:04:39 浏览: 130
c代码-C:数组做为形参和返回值
这段代码看起来没有什么大问题。以下是一些小问题:
1. `printArray` 函数中的 `printf` 语句最好在末尾加上一个换行符,这样更易于阅读和输出。
2. `bsearch` 函数找到元素时,应该将 `printf` 语句中的索引值加 1,因为数组下标从 0 开始,而题目中要求输出的索引值从 1 开始。
下面是修改后的代码:
```c++
void printArray(int arr[], int len){
for(int i=0; i<len; i++){
printf("%d ", arr[i]);
}
printf("\n"); // 添加换行符
}
int cmp(const void *a, const void *b){
return *(int*)a - *(int*)b;
}
// 调用 qsort(arr, len, sizeof(int), cmp);
printArray(arr, len);
// 调用 int num = 6;
int *ptr = (int*)bsearch(&num, arr, len, sizeof(int), cmp);
if(ptr != NULL){
printf("%d在数组中的索引值为:%d\n", num, ptr-arr+1); // 数组下标从0开始,索引值加1
}else{
printf("%d不在数组中\n", num);
}
```
阅读全文