★【C语言】请教大佬们一个问题,如下程序错在哪里了,怎么改?改程序的时候保证j的运算步骤在循环体内部 10
#include<stdio.h>intmain(){voidinv(int*x,intn);inti,a[10]={3,7,9,11,0,6,7,5,4,2};prin...
#include<stdio.h>int main(){ void inv(int *x,int n); int i,a[10]={3,7,9,11,0,6,7,5,4,2}; printf("原数组为:\n"); for(i=0;i<10;i++) printf("%d ",a[i]); printf("\n"); inv(a,10); printf("逆序后的数组为:\n"); for(i=0;i<10;i++) printf("%d ",a[i]); printf("\n"); return 0;}void inv(int *x,int n){ int temp,*i,*j; for(i=x;i<=x+(n-1)/2;i++,j--) { j=x+n-1; //请在改程序的时候保证j的运算步骤在循环体内部。(在循环体外的我会) temp=*i; *i=*j; *j=temp; } return;}运行结果如图:
#include<stdio.h>
int main()
{
void inv(int *x,int n);
int i,a[10]={3,7,9,11,0,6,7,5,4,2};
printf("原数组为:\n");
for(i=0;i<10;i++)
printf("%d ",a[i]);
printf("\n");
inv(a,10);
printf("逆序后的数组为:\n");
for(i=0;i<10;i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}
void inv(int *x,int n)
{
int temp,*i,*j;
for(i=x;i<=x+(n-1)/2;i++,j--)
{
j=x+n-1; //请在改程序的时候保证j的运算步骤在循环体内部。(在循环体外的我会)
temp=*i;
*i=*j;
*j=temp;
}
return;
}
?主函数不改动,如果用数组名来做的话,就有两种写法:
?法一:
void inv(int x[],int n)
{
int temp,i,j;
for(i=0;i<=(n-1)/2;i++)
{
j=n-1-i; //下标值运算公式在循环体内。
temp=x[i];
x[i]=x[j];
x[j]=temp;
}
return;
}
法二:
void inv(int x[],int n)
{
int temp,i=0,j;
j=n-1-i; //下标值运算公式在循环体外。
for(;i<=(n-1)/2;i++,j--)
{
temp=x[i];
x[i]=x[j];
x[j]=temp;
}
return;
} 展开
#include<stdio.h>
int main()
{
void inv(int *x,int n);
int i,a[10]={3,7,9,11,0,6,7,5,4,2};
printf("原数组为:\n");
for(i=0;i<10;i++)
printf("%d ",a[i]);
printf("\n");
inv(a,10);
printf("逆序后的数组为:\n");
for(i=0;i<10;i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}
void inv(int *x,int n)
{
int temp,*i,*j;
for(i=x;i<=x+(n-1)/2;i++,j--)
{
j=x+n-1; //请在改程序的时候保证j的运算步骤在循环体内部。(在循环体外的我会)
temp=*i;
*i=*j;
*j=temp;
}
return;
}
?主函数不改动,如果用数组名来做的话,就有两种写法:
?法一:
void inv(int x[],int n)
{
int temp,i,j;
for(i=0;i<=(n-1)/2;i++)
{
j=n-1-i; //下标值运算公式在循环体内。
temp=x[i];
x[i]=x[j];
x[j]=temp;
}
return;
}
法二:
void inv(int x[],int n)
{
int temp,i=0,j;
j=n-1-i; //下标值运算公式在循环体外。
for(;i<=(n-1)/2;i++,j--)
{
temp=x[i];
x[i]=x[j];
x[j]=temp;
}
return;
} 展开
1个回答
展开全部
void inv(int *x,int n)
{
int temp,*i,*j;
for(i=x, j=x+n-1; i<j; i++,j--)
{
// j=x+n-1;
//请在改程序的时候保证j的运算步骤在循环体内部。(在循环体外的我会)
temp=*i;
*i=*j;
*j=temp;
}
// return;
}
追问
可是把j的式子写在循环体的初始条件中,还是没把j的计算式子写到循环体里欸。。。
它和下面的程序是一回事:
void inv(int *x,int n)
{
int temp,*i,*j;
j=x+n-1; //在循环体外呢
for(i=x; i<j; i++,j--)
{
temp=*i;
*i=*j;
*j=temp;
}
return;
}
问题进行了补充:主函数不改动,如果用数组名来做的话,就有两种写法:
打开原问题,见刚刚对问题进行的补充。(字数不够在追问中写了。。。)
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询