试图从 2 个数组 returns 0(不起作用)和其他数组中找到最小的数组元素。 (C郎)

Trying to find smallest array elements from 2 arrays returns 0 (doesn't work) and the other works. (C lang)

我试图在 C 中完成一个简单的任务,即打印出数组 1 中的最小数字和数组 2 中的最小数字。两个数组元素均由用户估算。

第一个只是 returns 0(在我的测试用例中应该是 1),另一个 returns 是正确的 (11)。我真的不明白为什么,我也试过google这个没有结果所以我再次决定在这里寻求帮助!

int main () {

    int masyvas1[10] = {0};
    int masyvas2[10] = {0};

    for(int i = 0; i < 10; i++){

        int x;
        printf("Ivesk pirmo masyvo 10 sk: ");
        scanf("%d", &x);
        masyvas1[i] = x;

    }

    for(int i = 0; i < 10; i++){

        int x;
        printf("Ivesk antro masyvo 10 sk: ");
        scanf("%d", &x);
        masyvas2[i] = x;

    }

    int mas1maz[2] = {0, 0};

    for(int i = 0; i < 10; i++){

        if(masyvas1[i] < mas1maz[1]){

            mas1maz[1] = masyvas1[i];

        }

        if(masyvas2[i] < mas1maz[2]){

            mas1maz[2] = masyvas2[i];

        }

    }

    printf("testas: %d %d", mas1maz[1], mas1maz[2]);

}

如果我为第一个数组输入 1 到 10 的数字,为第二个数组输入 11 到 20 的数字,程序输出为:testas: 0 11,我期望它是 testas: 1 11

提前致谢!

    if(masyvas2[i] < masyvas2[i]){

        mas1maz[2] = masyvas2[i];

    }

按照以下方式更改您的第二个。您正在检查 masmaz1 数组中较小的数字,并在不兼容的数组参数中传递 2。由于您已经为 2 个位置 0 和 1 初始化了一个数组,因为数组位置是从 0 开始的。因此更改第二个 if 以将其与自身进行比较以获得最小数字。

int min;
int max;
int i;

min=max=mas1maz[0];

    for(i=1; i<10; i++)
    {
         if(min>mas1maz[i])
          min=mas1maz[i];       
    }

您应该在用 scanf 填充表格后使用它来查找最小值

然后比较两个不同的最小值

我希望你通过尝试下面的内容来复习你的程序

int mas1maz[2] = {0, 0};

数组有 2 个元素,尝试打印每个元素。
注意: 只有 2 个元素,但我打印了 3 个,因为你已经使用了 mas1maz[2](这是 grabage=11)

printf("%d,%d,%d",mas1maz[0],mas1maz[1],mas1maz[2]);

然后您尝试与 mas1maz[1]=0 进行比较,这将导致最小值始终为零。

for(int i = 0; i < 10; i++) {
    /*
     */
    if(masyvas1[i] < mas1maz[1]) {
        mas1maz[1] = masyvas1[i];
    }

这里你很累比较 mas1maz[2]garbage=11,这就是你看到 11 的原因。

    if(masyvas2[i] < mas1maz[2]) {
        mas1maz[2] = masyvas2[i];
    }

您应该尝试以下操作:

for(int i = 0; i<9; i++) {
    if(masyvas1[i]>masyvas1[i+1])
    {
       /*copy to your array*/  
        mas1maz[0]=masyvas1[i]
    }
    /* similarly for masyvas2*/
}

看到对于长度为 len 的数组,数组的索引范围从 0len-1