C 交换数组函数的两个元素

C 交换数组函数的两个元素,c,C,你能告诉我这有什么问题吗?为什么交换功能不起作用 void swap(int a[], int b, int c) { int temp = a[b]; a[b] = a[c]; a[b] = temp; } void bubble1 (int a[], int N){ int i; for(i=0;i<N-1;i++){ if(a[i]>a[i+1]){ swap(a,i,i+1);

你能告诉我这有什么问题吗?为什么交换功能不起作用

void swap(int a[], int b, int c) {
    int temp = a[b];
    a[b] = a[c];
    a[b] = temp;
}

void bubble1 (int a[], int N){
    int i;
    for(i=0;i<N-1;i++){
        if(a[i]>a[i+1]){
            swap(a,i,i+1);
        }
    }
}


void main() {
    int N = 11;
    int a[12]={5,3,12,4,25,10,14,35,2,8,13};

    bubble1 (a,N);

    int i;
    for(i = 0; i < N; i++){
        printf("%d\n",a[i]);
    }
}
void swap(int a[],int b,int c){
内部温度=a[b];
a[b]=a[c];
a[b]=温度;
}
void bubble1(int a[],int N){
int i;
对于(i=0;ia[i+1]){
互换(a、i、i+1);
}
}
}
void main(){
int N=11;
inta[12]={5,3,12,4,25,10,14,35,2,8,13};
气泡1(a,N);
int i;
对于(i=0;i
如果我不使用交换功能,并在“bubble”功能中手动进行交换,它就会工作。但是,如果我使用交换,它将不起作用,即使它完全相同。我做错了什么

 int temp = a[b];
 a[b] = a[c];
 a[b] = temp;

简单的输入错误,您将分配给
a[b]
两次。第二个应该是
a[c]

哈哈,我觉得很惭愧。斯利登不会的。但是,仔细检查、重写并仔细考虑以避免出现类似这样的错误。尝试在一张纸上单步执行
swap()
,您很快就会发现问题。不要在size use swap(int a[],size\t size)中使用额外变量,并通过#define array_LENGTH(a)(sizeof(a)/sizeof(a)计算您正在使用的数组的大小[0]))a是数组