在 C 中更改数字数组中的值

标签 c

我想编写一个程序,该程序使用我创建的函数,它将数组 X(长度为 N)的所有元素与某个数字 K 交换,前提是该元素大于 K。我在哪里这里哪里出错了?

#include <stdio.h>
#include <stdlib.h>

int swap_K(int *, int);
int main()
{
    int N,i,K;
    printf("Enter N: ");
    scanf("%d",&N);
    printf("Enter K: ");
    scanf("%d",&K);
    int X[N];
    for (i=1; i<=sizeof(X)/sizeof(int); i++){
       printf("Enter %d. element: ",i);
       scanf("%d",&X[i]);
    }
    swap_K(X,K);

    for (i=1; i<=sizeof(X)/sizeof(int); i++){
        printf("%d",X[i]);
    }
}

int swap_K(int *X, int K)
{
    int i;
    for (i=1; i<=sizeof(X)/sizeof(int); i++){
        if (X[i]>K)
            X[i]=K;
    }
    return X;
}

最佳答案

swap_K(int *X, int K)中,sizeof(X)sizeof(int *),不是大小数组。

在 C 中,指针与数组并不完全相同。

要修复它,请在任何地方使用 N 而不是 sizeof(X)/sizeof(int),尤其是。在 swap_K() 中。

关于在 C 中更改数字数组中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26554554/

相关文章:

可以内联通过函数指针使用的函数吗?

c - 使用register_chrdev动态分配主编号时,保留256个次编号有什么意义吗?

c++ - C/C++/Objective-C 文本识别库

c - 如何将数组添加到位域结构?

我可以执行驻留在数据段(ELF 二进制文件)中的代码吗?

c - 确定 argv[1] 中的字符串是否以字符或数字开头(C 编程)

c - 如何通过 C 更改默认网关

c - 子网中的所有 IP (C)

c - 沿对角线循环遍历 2-dim 矩阵,但反之

c - realloc() 没有赋值问题