我想编写一个程序,该程序使用我创建的函数,它将数组 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/