如何将字段值写入另一个字段 - C

How to write field values to another field - C

我需要将字段值从 moj_array[] 写入 input_array[]...我需要这样做,因为 input_array 必须是 const int 的数据类型,所以我不能在我的代码中使用此字段。

请问是哪里出了问题?

#include <stdio.h>
#include <math.h>

int array_min(const int input_array[], const int array_size);

int main() {
    //uloha-7
    int input_array[] = { 1, 2, 3, 4, 5 };
    printf("%d\n", array_min(input_array, 5));
    // prints: 1
  
    return 0;
}

//uloha7.1
int array_min(const int input_array[], const int array_size) {
    int i = 0;
    int moj_array[i];
    int velkost;
    moj_array[i] = input_array[i];
    velkost = array_size;

    if (moj_array != NULL) {
        for (int j = velkost-1; j > 0; j--) {
            for (int i = 0; i < j; i++) {
                if (moj_array[i+1] < moj_array[i]) {
                    // swap
                    int tmp = moj_array[i+1];
                    moj_array[i+1] = moj_array[i];
                    moj_array[i] = tmp;
                }
            }
        }
        
        return moj_array[0];
    }
    return -1;
}

对数组的副本进行排序是一种非常低效的确定其最小值的方法。

您应该遍历数组以确定最小值并 return 最后:

// Function array_min: return the minimum value in an array.
//   input_array: a non null pointer to an array of int
//   array_size: the number of entries in the array, must be > 0
int array_min(const int input_array[], const int array_size) {
    int min = input_array[0];
    for (int i = 1; i < array_size; i++) {
        if (min > input_array[i])
            min = input_array[i];
    }
    return min;
}