数组错误。
#萌新求助# 对数组A中的N(0<N<100)个互不相同的整数从小到大进行连续编号,要求不能改变数组A中元素的顺序。如A=(78,42,-34,94,25)则输出为(4,3,1,5,2)。个数N和数组中元素要求从键盘输入。 为什么输出会有奇怪的运行错误啊,看不懂,,,。错误原因可能是:
非法的内存引用, 具体原因可能是:
1.数组越界使用;
2.指针的错误使用, 一般是对非用户区的地址空间进行读或者写操作;
3.越权操作文件指针, 程序中却未捕捉该类错误;
4.栈溢出, 一般是因为过多的递归调用或者过大的临时变量导致;5.程序使用的内存超过了题目设定的上限。
#include <stdio.h>
#include <stdlib.h>
int shengxu(int *a,int n)
{
int x,i,j;
for(i=1;i<n;i++)
{
x = a[i];
for(j=i;j>0;j--)
{
if(x<a[j-1])
{
a[j] = a[j-1];
}else{
break;
}
}
a[j] = x;
}
return a;
}
int main()
{
int *a;
int A[100],s[100];
int N,num,i,j,k;
scanf("%d",&N);
for(i=0;i<N;i++)
{
scanf("%d",&num);
char c = getchar();
A[i] = num;
if(c=='\n')
break;
}
for(i=0;i<N;i++)
s[i] = A[i];
a = shengxu(A,N);
int count = N;
for(j=0;j<N;j++)
{
for(k=0;k<N;k++)
{
if(s[j]==a[k])
{
count--;
if(count==0)
printf("%d",k+1);
else
printf("%d,",k+1);
}
}
}
return 0;
}