★【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;
}
展开
 我来答
丿艾瑞灬莉娅
2018-08-09 · TA获得超过916个赞
知道小有建树答主
回答量:926
采纳率:78%
帮助的人:430万
展开全部
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;
}
问题进行了补充:主函数不改动,如果用数组名来做的话,就有两种写法:
打开原问题,见刚刚对问题进行的补充。(字数不够在追问中写了。。。)
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式