gpt4 book ai didi

c - C中数组的问题

转载 作者:太空宇宙 更新时间:2023-11-04 05:01:39 24 4
gpt4 key购买 nike

我是一名编程专业的学生,​​我不明白这段代码有什么问题:

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

void merge(int a[], int low, int high, int mid){
int i, j, k, c[50];
i=low;
j=mid+1;
k=low;
while((i<=mid)&&(j<=high)){
if(a[i]<a[j]){
c[k]=a[i];
k++;
i++;
} //end if
else{
c[k]=a[j];
k++;
j++;
} //end else
} //end while
while(i<=mid){
c[k]=a[i];
k++;
i++;
} //end while
while(j<=high){
c[k]=a[j];
k++;
j++;
} //end while
for(i=low;i<k;i++){
a[i]=c[i];
} //end for
} //end merge()

int mergesort(int a[], int low, int high){
int mid;
if(low<high){
mid=(low+high)/2;
mergesort(a,low,mid);
mergesort(a,mid+1,high);
merge(a,low,high,mid);
} //end if
return(0);
} //end mergesort()

int main(){
int i, n, arr[100];
do{
scanf("%d", &n);
if(n == 0)
break;
else{
for(i = 0; i < n; i++){
scanf("%d", &arr[i]);
mergesort(arr, 0, n);
} //end for
} //end else
for(i = 0; i < n; i++)
printf("%d\n", &arr[i]);
}while(n != 0); //end while
} // end main()

终端显示以下错误

ej.c: In function ‘main’:
ej.c:60:5: warning: format ‘%d’ expects type ‘int’, but argument 2 has type ‘int *’

这个程序的目的是显示一个排序的数组。

最佳答案

这里:

 printf("%d\n", &arr[i]);

应该是

 printf("%d\n", arr[i]);

因为你想打印数组 arr[i] 的实际元素,而不是它的地址 &arr[i]


注意 scanfprintf 之间的区别。在 scanf 中,您应该提供地址 ( explanation, why ),而在 printf 中,您应该提供实际值。

关于c - C中数组的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7438125/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com