|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
转换10个数字的顺序,第一个程序正确,第二个就错了,只是子函数中j的位置变化了
程序1:
#include<stdio.h>
int main()
{
void inv(int *a,int n);
int a[10]={3,7,9,11,0,6,7,5,4,2},i;
printf("The original array:\n");
for(i=0;i<10;i++)
{
printf("%d,",a[i]);
}
printf("\n");
inv(a,10);
printf("The inverted array:\n");
for(i=0;i<10;i++)
{
printf("%d,",a[i]);
}
printf("\n");
return 0;
}
void inv(int *x,int n)
{
int *i,*j,m,temp,*p;
m=(n-1)/2;
p=x+m;
i=x;
j=x+n-1;
for(;i<=p;i++,j--)
{
temp=*i;
*i=*j;
*j=temp;
}
}
程序2:
//8.8 实参:数组 形参:指针变量
#include<stdio.h>
int main()
{
void inv(int *a,int n);
int a[10]={3,7,9,11,0,6,7,5,4,2},i;
printf("The original array:\n");
for(i=0;i<10;i++)
{
printf("%d,",a[i]);
}
inv(a,10);
printf("\n");
printf("The inverted array:\n");
for(i=0;i<10;i++)
{
printf("%d,",a[i]);
}
printf("\n");
return 0;
}
void inv(int *x,int n)
{
int *i,*j,m,temp,*p;
m=(n-1)/2;
p=x+m;
i=x;
// j=x+n-1;
for(;i<=p;i++)
{
j=x+n-1-i; //只有对j的处理不同
temp=*i;
*i=*j;
*j=temp;
}
} |
|