C语言问题(高手帮忙下,谢谢)

来源:百度知道 编辑:UC知道 时间:2024/05/21 12:39:01
4. 以下程序将一个已排序的数组(从大到小)按逆序排列。请参照(1)程序源码,完成(2)(3)程序改造要求

(1) 实参采用数组名,形参采用数组名的实现代码如下:
#include <stdio.h>
#define N 10
void reverse(int a[N])
{
int i, j, t;
for (i=0,j=N-1;i<j; i++, j--)
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}

void main()
{
int i, b[N]={98,76,68,65,57,53,45,43,32,29};

reverse(b);

for (i=0;i<N; i++)
printf("b[%d]=%d\n", i, b[i]);
}

(2) 主函数,将reverse函数形参改为采用指针变量形式实现

(3) 在第(2)小题的基础上,保持reverse函数不改动,将主程序中实参改为采用指针变量形式实现

#include <stdio.h>
void reverse(int* a,int N)
{
int i, j, t;
for (i=0,j=N-1;i<j; i++, j--)
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}

void main()
{
int i, b[10]={98,76,68,65,57,53,45,43,32,29};
int *pArry=b;
reverse(pArry,10);

for (i=0;i<10; i++)
printf("b[%d]=%d\n", i, b[i]);
}

(2)
#include <stdio.h>
#define N 10
void reverse(int *a)
{
int i, j, t;
for (i=0,j=N-1;i<j; i++, j--)
{
t=*(a+i);
*(a+i)=*(a+j) ;
*(a+j)=t;
}
}

void main()
{
int i, b[N]={98,76,68,65,57,53,45,43,32,29};

reverse(b);

for (i=0;i<N; i++)
printf("b[%d]=%d\n", i, b[i]);
}

(3)
#include <stdio.h>
#define N 10
void reverse(int *a)
{
int i, j, t;
for (i=0,j=N-1;i<j; i++, j--)
{