#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;
}