用单位替换数组C中的元素



我有一个一维数组,我需要用一个替换最小元素之后的数组元素,但我不知道我需要写什么来使这个条件工作?我将非常感激你的帮助。

#include <stdio.h>
#include <stdlib.h>
void main() {
float X[16] = {2.34, -3.42, 0.56, -3.71, 1.25, 6.37, 0.123,  -45.821,
32.5, 0.94,  0.54, -1.26, 2.36, 4.32, -5.345, 4.876};
float sum;
float min;
float Y[16];
printf("Massiv Хn");
for (int i = 0; i < 16; i++) {
printf("%2.3ft", X[i]);
}
for (int i = 0; i < 16; i++) {
if (min > X[i]) {
min = X[i];
}
}
printf("nMin= %2.3f", min);
printf("nMassiv n");
X[16] = 1;
for (int i = 0; i < 16; i++) {
printf("%2.3ft", X[i]);
}
sum = 0;
for (int i = 0; i < 7; ++i) {
if (X[i]) {
sum += X[i];
}
}
printf("nSum= %2.3ft", sum);
}

首先,您必须找到最小的元素。您还需要将变量设置为0,直到找到最小值,然后设置为1。如果变量为1,则将数组中的其余元素设置为1。如果变量为0,检查当前元素是否最小。另外,另一种版本是保存最小值的位置,并将该位置之后的所有元素更改到末尾。

int after_min = 0;    
float minn = x[0];
for(int i = 1; i < 16; i++)
if (minn > x[i])
minn = x[i];
for(int i = 0; i < 16; i++) {
if (after_min)
x[i] = 1;
else 
if (x[i] == minn)
after_min = 1;
}

当你做x[16] = 1时,你越界了。第一个元素是x[0],最后一个元素是x[15]。

最新更新