为什么这个代码实现不了求最小值?

#include<stdio.h>

int CompareToAllNumbers(int array[]) {
	bool isMin;
	int x, y;
	for (int x = 0; x < 10; x++) {
		isMin = true;
		for (int y = 0; y < 10; y++) {
			if (array[x] > array[y]) 
				isMin = false;
		}
		if (isMin) break;
	}
    return array[x];
}
int main() {
	int arr[10] = { 3,7,2,9,8,5,3,1,4,2 };
	int Min_arr = CompareToAllNumbers(arr);
	printf("%d", Min_arr);
	return 0;
}

 

因为你的判定条件是array[x] >= array[y],无论如何结果都是false。

我觉得你直接>号就可以啊,这样就算相等也是这个数组里面有几个一样大的最大值

楼主的代码逻辑判断设计是错误的,修改如下,供参考:

#include<stdio.h>
int CompareToAllNumbers(int array[]) {
	int isMin;
	int x, y;
	isMin = array[0];
	for (int y = 0; y < 10; y++) {
		if (isMin  >= array[y])
		      isMin = array[y];
	}
        return isMin;
}
int main() {
	int arr[10] = { 3,7,2,9,8,5,3,1,4,2 };
	int Min_arr = CompareToAllNumbers(arr);
	printf("%d\n", Min_arr);

	return 0;
}

 

帮你修改了一下,如有帮助,请采纳,谢谢 

#include<stdio.h>

int CompareToAllNumbers(int array[]) {
	int temp = array[0];
	for (int x = 1; x < 10; x++) 
	{
		if (temp>array[x])
			temp = array[x];
	}
	return temp;
}
int main() {
	int arr[10] = { 3, 7, 2, 9, 8, 5, 3, 1, 4, 2 };
	int Min_arr = CompareToAllNumbers(arr);
	printf("%d", Min_arr);
	return 0;
}

 

x从0开始,y也从0开始,那么array[x]和array[y]再第一项比较时不就一定相等吗,isMin一定是false。

if (array[x] >= array[y])

isMin = false;

这句后面应该加一个else吧

帮你修改了一下,如有帮助,请采纳,谢谢 

#include<stdio.h>

int CompareToAllNumbers(int array[]) {
	int temp = array[0];
	for (int x = 1; x < 10; x++) 
	{
		if (temp>array[x])
			temp = array[x];
	}
	return temp;
}
int main() {
	int arr[10] = { 3, 7, 2, 9, 8, 5, 3, 1, 4, 2 };
	int Min_arr = CompareToAllNumbers(arr);
	printf("%d", Min_arr);
	return 0;
}

只用遍历数组,和临时存放最小值temp进行比较 ,当前元素比temp小 则temp = 当前元素

int CompareToAllNumbers(int array[]) {
	bool isMin;
	int x, y;
	for (int x = 0; x < 10; x++) {
		isMin = false;
		for (int y = 0; y < 10; y++) {
			if (array[x] > array[y])
				isMin = true;
		}
		if (isMin) break;
		return array[x];
	}
}

如果你想用原来的思路就是这个

更新一下,目前已经改成功了,主要原因是刚开始x,y没赋值,然后在for循环里又重新定义了一遍,相当于没有派上用场,改正后就可以了,谢谢大家。

#include<stdio.h>
int CompareToAllNumbers(int array[]) {
	bool isMin;
	int x=0, y=0;
	for (x = 0; x < 10; x++) {
		isMin = true;
		for (y = 0; y < 10; y++) {
			if (array[x] > array[y])
				isMin = false;
		}
		if (isMin) break;
	}
	return array[x];
}
int main() {
	int arr[10] = { 3,7,2,9,8,5,3,1,4,2 };
	int Min_arr = CompareToAllNumbers(arr);
	printf("%d", Min_arr);
	return 0;
}