我正在尝试编写一个使用指针对数组(用户输入)进行排序的程序。
这是我写的代码:
#include <stdio.h>
void main()
{
int a[100],i,n,j,t;
printf("Enter number of elements:\n");
scanf("%d",&n);
printf("Enter array:\n");
for (i=0; i<n; i++)
{
scanf("%d",a+i);
}
for (i=0; i<(n-1); i++)
{
for (j=i+1; i<n; i++)
{
if (*(a+i)>*(a+j))
{
t=*(a+i);
*(a+i)=*(a+j);
*(a+j)=t;
}
}
}
printf("Sorted array (ascending) is:\n");
for (i=0; i<n; i++)
{
printf("%d ",*(a+i));
}
printf("\n");
}
编译器没有显示任何错误。
输入:
5
1 5 4 2 8
输出:
1 8 4 2 5
我是自学的,我知道指针类似于数组。我知道如何用数组完成相同的任务,但是当我在这里尝试用指针替换它们时,它不起作用。
我在这里做错了什么?
最佳答案
问题出在您排序时的第二个循环中:
for (i=0; i<(n-1); i++)
{
for (j=i+1; i<n; i++)
{
if (*(a+i)>*(a+j))
{
t=*(a+i);
*(a+i)=*(a+j);
*(a+j)=t;
}
}
}
您需要将计数器名称更改为 j
:
for (i=0; i<(n-1); i++)
{
for (j=i+1; j<n; j++)
{
if (*(a+i)>*(a+j))
{
t=*(a+i);
*(a+i)=*(a+j);
*(a+j)=t;
}
}
}
这一行有问题:
for (j=i+1; j<n; j++)
关于c - 使用指针对整数数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45927206/