无法正常输出内容
#include
// 此函数目的为将所输入数组输出为下一个数组,如【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"%d",&array[i]);
}
int *p=NULL;
p=answer(array,number);
for (int i=0;i"%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;marray[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;
}
没仔细看 大致扫了一眼
错误一33行数组越界了 i+1那个
错误二:42行对output是空指针,不能对其解引用,而且数组不能那么写,指针要写那种数组的写法的话要开辟空间(malloc等)
错误三:59,60行对空指针解引用了
if(i==0)
{
for (int m=0;m<number;m++)
{
output[m]=array[number-m-1];
}
return output;
}
这一段是错误的,output只是一个空指针而已,没有分配空间,怎么就开始赋值了呢
第九行int array[number]; 不能这么初始化数组大小,需要在编译时给定数组大小。