输入变量k后,其值将自动更改为5。
#include<iostream>
using namespace std;
int search(int arr[], int target, int size) {
int l = 0; int mid;
while(l <= size) {
mid = l + (size-l) / 2;
if(arr[mid] == target)
return 1;
if(arr[mid] > target)
size = mid - 1;
if(arr[mid] < target)
l = mid + 1;
}
return 0;
}
int sort(int arr[], int size) {
int temp; bool swap = false;
for(int i = 0; i < size; i++) {
bool swap = false;
for(int j = 0; j < size - i; j++) {
if(arr[j] > arr[j + 1]) {
temp = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = temp;
swap = true;
}
}
if(swap == false)
break;
}
return 0;
}
int main() {
int n, k;
int count;
int j;
int arr[n];
cin >> n;
cin >> k;
int value;
for(int i = 0; i < n; i++)
cin >> arr[i];
sort(arr, n - 1);
for(int i = 0; i < n; i++) {
value=arr[i] + k;
j = search(arr, value, n - 1);
if(j == 1)
count++;
}
cout << count;
}
我在输入之后立即打印了k的值,它显示了正确的值。但是在主函数内部,当我使用它来计算变量“值”时,其值被视为5。在调用排序函数之前发生了某些事情。