帮忙看下哪里错了,反向排序问题
#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;
}
把数组内数字反向排序,麻烦大神看下哪里出错了,结果不对 原始数据被覆盖
比如 当 i 为0的时候,p == b
因为p是指向b的所以 b==p,此时b的数据被b覆盖了
当 i 为9的时候,p==b就无法渠道原始数据 统一下,指针就指针,数组就数组,其它这里数组和指针没多大差别,另 交换肯定要第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;
} 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]