无法正常输出内容
#include<stdio.h>
// 此函数目的为将所输入数组输出为下一个数组,如【1,3,2】->【3,1,2】,【3,2,1】->【1,2,3】
int *answer(int *array,int n);
int main()
{
//数组长度
int number;
scanf("%d",&number);
int array[number];
//数组初始值
for (int i=0;i<number;i++)
{
scanf("%d",&array[i]);
}
int *p=NULL;
p=answer(array,number);
for (int i=0;i<number;i++)
{
printf("%d ",p[i]);
}
}
//找两个要交换的值即可完成目的(靠右的较小值和较小的较大值)
int *answer(int *array,int number)
{
//建立左右指针
int *output=NULL;
int *left_point=NULL;
int *right_point=NULL;
int i;
//从右往左找出第一个降序,确定较小值。同时当出现类似【3,2,1】时输出最小序列
for (i=number-1;i>=0;i--)
{
if(array[i]<array[i+1])
{
left_point=&array[i];
break;
}
if(i==0)
{
for (int m=0;m<number;m++)
{
output[m]=array[number-m-1];
}
return output;
}
}
//找较大值
int j;
for (j=number-1;j>i;j--)
{
if(array[j]>array[i])
{
right_point=&array[j];
break;
}
}
//交换
int *temp=NULL;
*temp=*left_point;
*left_point=*right_point;
*right_point=*temp;
return array;
}