leihen0218 发表于 2018-6-8 10:28:45

帮忙看下哪里错了,反向排序问题

#include <stdio.h>

int diaohuan(int b[], int n);

void main()
{
        int a = {3,7,9,11,0,6,7,5,4,2};

        diaohuan(a, 10);
       
       
}


int diaohuan(int b[], int n)
{
        int *p, i;
        p = b;
        for(i=0; i < n; i++)
        {
                *(p+9-i) =b ;
               
                printf("%d ",*(p+i));
        }
        return 0;

}
把数组内数字反向排序,麻烦大神看下哪里出错了,结果不对

BngThea 发表于 2018-6-8 10:42:06

原始数据被覆盖
比如 当 i 为0的时候,p == b
因为p是指向b的所以 b==p,此时b的数据被b覆盖了
当 i 为9的时候,p==b就无法渠道原始数据

ba21 发表于 2018-6-8 10:59:41

统一下,指针就指针,数组就数组,其它这里数组和指针没多大差别,另 交换肯定要第3方变量,要不就用别的办法

#include <stdio.h>

int diaohuan(int b[], int n);

void main()
{
      int a = {3,7,9,11,0,6,7,5,4,2};
                int i;

                for(i=0; i<10; i++)
                {
                        printf("%d ", a);
                }
                printf("\n");

      diaohuan(a, 10);
      
                for(i=0; i<10; i++)
                {
                        printf("%d ", a);
                }
                printf("\n");
}


int diaohuan(int b[], int n)
{
      int i, temp;

                n=n-1;
      for(i=0; i <= n/2; i++)
      {

                                temp = b;
                b = b ;
                                b = temp;
      }

      return 0;

}

ba21 发表于 2018-6-8 11:03:10

int diaohuan(int b[], int n)
{
      int i;

                n=n-1;
      for(i=0; i <= n/2; i++)
      {
                b ^= b;
                                b ^= b;
                                b ^= b;
      }

      return 0;

}
页: [1]
查看完整版本: 帮忙看下哪里错了,反向排序问题