我的目标是创建一个 C 函数,用于查找数组的最小值并将其设置为零。到目前为止,我的函数是这样做的,但我希望它忽略/跳过已经为零的索引。
void find_minimum(double a[], int n) {
int i, index;
double low;
index = 0;
low = a[0];
for (i = 1; i < n; i++) {
if ( a[i] < low && a[i] != 0.0) {
low = a[i];
index = i;
}
}
a[index] = 0.0;
}
我也试过使用这样的 continue
语句:
void find_minimum(double a[], int n) {
int i, index;
double low;
index = 0;
low = a[0];
for (i = 1; i < n; i++) {
if(a[i] == 0.0){
continue;
}
if ( a[i] < low) {
low = a[i];
index = i;
}
}
a[index] = 0.0;
}
我错过了什么或搞砸了什么?
最佳答案
您的问题是,当 a[0]
为零时,您的代码会忽略大小写。尝试将一些常量(如 DOUBLE_MAX)分配给较低的值,然后遍历整个数组(for
初始化语句中的 i = 0
而不是 i = 1
)。
void find_minimum(double a[], int n) {
int i, index;
double low;
index = 0;
low = DOUBLE_MAX;
for (i = 0; i < n; i++) {
if ( a[i] < low && a[i] != 0.0) {
low = a[i];
index = i;
}
}
a[index] = 0.0;
}
关于c - 跳过/忽略包含 c 中值的数组索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37837357/