C语言求助!

(1) 对数组A中的N(0<N<100)个整数从小到大进行连续编号,要求不能改变数组A中元素的顺序,且相同的整数要具有相同的编号。
例如:A=(5,3,4,7,3,5,6) 则输出为: (3,1,2,5,1,3,4)
#include<stdio.h>
void arrange(int a[],int b[])
{
int i,j,n,t;
for(i=0;i<=n;i++)
{
b[i]=1;
for(j=0;j<n;j++)
{
if(a[i]>a[j])
{
b[i]++;
for(t=0;t<j;t++)
{if(a[j]==a[t]) b[i]--;}
}
}
}
}
void main()
{
int n,i;
int a[30],b[30];
printf("please input n:");
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
arrange(a,b);
for(i=0;i<n;i++)
printf("%4d",b[i]);
}

哪错了,出来一大串数字。。唉

void fun(int *p1,int *p2,int *s)//实参传过来,p1,p2分别是a和b的地址,s是a的地址
{
s=(int*)malloc(sizeof(int));//此处动态开辟存储空间,使得s指向这个空间
*s=*p1+*p2;//将a+b的和存在刚才开辟的空间中
free(s);//释放开辟的空间
}
main()
{
int a=1,b=40,*q=&a;
fun(&a,&b,q);//调用fun函数
printf("%d\n",*q);//输出q指向的值,也就是a的值,a在调用过程中没有被改变,所以此处输出应该是1
}
打字不易,如满意,望采纳。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-01-13
第2个回答  2014-05-27

int a[30],b[30];数组b没有初始化就用函数调用了,定义时可以对b[30]={NULL};初始化


相似回答