用函数调用的方法实现对一维数组中元素按从大到小的顺序排序

我输入代码如下
#include<stdio.h>
int main()
{int  p(int a[5]);
int c[5]
;int b[5]={0,5,4,3,2};
c[5]=p(b[5]);
printf("%d\n",c[5]);
return 0;}
int p(int a[5])
{ int a[5]={0,5,4,3,2}; 
int i,j,t;
 for(j=0;j<4;j++)  
for(i=0;i<4-j;i++)  
 if(a[i]>a[i+1]) 
  {t=a[i];a[i]=a[i+1];a[i+1]=t;}
   return (a[5]);   }
错误是C:\Users\1\Desktop\Cpp1.cpp(7) : error C2664: 'p' : cannot convert parameter 1 from 'int' to 'int []'        Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style castC:\Users\1\Desktop\Cpp1.cpp(14) : error C2082: redefinition of formal parameter 'a'

从大到小: 交换判断条件用 if(a[i]<a[i+1])。
函数调用语句: p(b); 或 p(c);
数组 int a[5]; 语句中下标只能用到 a[4];
给你改了函数,数据由参数带入,排队结果由参数带回。
#include <stdio.h>
int main()
{void p(int a[5]);
int c[5],i;
int b[5]={0,5,4,3,2};
for (i=0;i<5;i++) c[i]=b[i];
p(c);
for (i=0;i<5;i++) printf("%d ",c[i]);
return 0;
}
void p(int a[5])
{
int i,j,t;
for(j=0;j<4;j++)
for(i=0;i<4-j;i++)
if(a[i]<a[i+1]) {t=a[i];a[i]=a[i+1];a[i+1]=t;};
}
温馨提示:答案为网友推荐,仅供参考
相似回答