gpt4 book ai didi

c - 尝试使用指针在冒泡排序上编写程序时出现编译错误

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

我尝试用 C 语言编写一个程序,使用指针对作为输入获得的数字序列进行“冒泡排序”。内容如下:

#include<stdio.h>
void swap(int *p,int *q)
{
int t;
t=*p;
*p=*q;
*q=t;
}
void sort(int *a[],int n)
{
int i,j;
for(i=0;i<n-1;i++)
{
for(j=0;j<n-i-1;j++)
{
if(a[j]>a[j+1])
swap(a[j],a[j+1]);
}
}
}
int main()
{
int p[40],b,i;
printf("Enter the number of elements in the sequence: \n");
scanf("%d",&b);
printf("Enter the elements of the sequence: \n");
for(i=0;i<b;i++)
{
scanf("%d",p[i]);
}
sort(p,b);
printf("The sorted sequence is: \n");
for(i=0;i<b;i++)
{
printf("%d \n",p[i]);
}
return 0;
}

但是,程序没有编译通过。它显示了以下错误消息:

enter image description here

错误信息显示:

error 139 - Argument no 1 of 'sort' must be of type '<ptr><ptr>int', not 'int[40]'

任何人都可以告诉我应该如何更正我的程序以便编译并给出正确的输出吗?

附录:以下是更正后的代码,按要求-

#include<stdio.h>
void myswap(int *p,int *q)
{
int t;
t=*p;
*p=*q;
*q=t;
}
void sort(int a[],int n)
{
int i,j;
for(i=0;i<n-1;i++)
{
for(j=0;j<n-i-1;j++)
{
if(a[j]>a[j+1])
myswap(&a[j],&a[j+1]);
}
}
}
int main()
{
int p[40],b,i;
printf("Enter the number of elements in the sequence: \n");
scanf("%d",&b);
printf("Enter the elements of the sequence: \n");
for(i=0;i<b;i++)
{
scanf("%d",&p[i]);
}
sort(p,b);
printf("The sorted sequence is: \n");
for(i=0;i<b;i++)
{
printf("%d \n",p[i]);
}
return 0;
}

最佳答案

从简短的观察中发现了两个错误:

void sort(int *a[],int n)

应该是

void sort(int a[],int n)

swap(a[j],a[j+1])

应该是

swap(&a[j],&a[j+1])

a[j] 只是一个整数,您需要获取放置 & 的元素的地址,因为交换声明需要指针。

关于c - 尝试使用指针在冒泡排序上编写程序时出现编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44462448/

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