字体
第(4/7)页
关灯
   存书签 书架管理 返回目录
 ……,直到将 a[(n-1/2)]与

    a[n-int((n-1)/2)]对换。今用循环处理此问题,设两个“位置指示变量”i 和 j,i 的初值为

    0,j 的初值为 n-1。将 a[i]与 a[j]jiāo换,然后使 i 的值加 1,j 的值减 1,再将 a[i]与 a[j]

    jiāo换,直到 i=(n-1)/2 为止,如图所示。

    程序如下:

    谭浩强      C 语言程序设计               2001 年 5 月 1 日

    void inv(int x[],int n)   /*形参x是数组名*/

    {

    int temp,i,j,m=(n-1)/2;

    for(i=0;i<=m;i++)

    {j=n-1-i;

    temp=x[i];x[i]=x[j];x[j]=temp;}

    return;

    }

    main()

    {int i,a[10]={3,7,9,11,0,6,7,5,4,2};

    printf("The original array:\n");

    for(i=0;i<10;i++)

    printf("%d,",a[i]);

    printf("\n");

    inv(a,10);

    printf("The array has benn inverted:\n");

    for(i=0;i<10;i++)

    printf("%d,",a[i]);

    printf("\n");

    }

    对此程序可以作一些改动。将函数 inv 中的形参 x 改成指针变量。

    【例 10.17】对例 10.16 可以作一些改动。将函数 inv 中的形参 x 改成指针变量。

    程序如下:

    void inv(int *x,int n)   /*形参x为指针变量*/

    {

    int *p,temp,*i,*j,m=(n-1)/2;

    i=x;j=x+n-1;p=x+m;

    for(;i<=p;i++,j--)

    {temp=*i;*i=*j;*j=temp;}

    return;

    }

    main()

    {int i,a[10]={3,7,9,11,0,6,7,5,4,2};

    printf("The original array:\n");

    for(i=0;i<10;i++)

    printf("%d,",a[i]);

    printf("\n");

    inv(a,10);

    谭浩强      C 语言程序设计               2001 年 5 月 1 日

    printf("The array has benn inverted:\n");

    for(i=0;i<10;i++)

    printf("%d,",a[i]);

    printf("\n");

    }

    运行情况与前一程序相同。

    【例 10.18】从 0 个数中找出其中最大值和最
上一页 目录 下一页