【发布时间】:2022-11-25 19:55:09
【问题描述】:
我还是 C 的新手,一直在尝试解决这个练习:给定一个按升序排序的整数数组 nums 和一个整数目标,编写一个函数来搜索 nums 中的目标。如果目标存在,则返回其索引。否则返回-1。
这是我的功能:
int search(int* nums, int numsSize, int target){
int i = 0;
int wynik =0;
for (i = 0; i<(numsSize -1); i++){
if (nums[i] == target){
wynik = i;
}
else if (nums[i] != target){
wynik = -1;
}}
return wynik;
}
在之前的所有情况下,它都运行良好,除了一个特殊情况:
int nums[1] = {5}, target = -5, numsSize = 1;
int result = search(nums, numsSize,target);
printf("%d", result);
预期输出是 -1,而我得到的是 0。如果我错了请纠正我,但我认为问题可能在于我的函数以某种方式将负 -5 读取为 5。我该如何解决?非常感谢您提前:)
#include <stdio.h>
int search(int* nums, int numsSize, int target){
int i = 0;
int wynik =0;
for (i = 0; i<(numsSize-1); i++){
if (nums[i] == target){
wynik = i;
}
else if (nums[i] != target){
wynik = -1;
}}
return wynik;
}
int main(void) {
int nums[1] = {5}, target = -5, numsSize = 1;
int result = search(nums, numsSize,target);
printf("%d", result);
return 0;
}
【问题讨论】:
-
“我的函数以某种方式将负数 -5 读取为 5 的事实”你有任何证据表明这个“事实”实际上是一个事实吗?我没有看到任何支持该声明的输出。
标签: c for-loop search function-definition