求问一道C++题目

inta[10]={0,1,2,3,4,5,6,7,8,9};int*p,*q;p=&a[0];q=&a[9];for(inti=0;i<4;i++,p++,q--){*... int a[10] = {0,1,2,3,4,5,6,7,8,9};
int *p, *q;
p = &a[0];
q = &a[9];
for(int i=0;i<4;i++,p++,q--){
*p = *q;
}
for(int i=0;i<10;i++)
cout << a[i] << ' ';
cout << endl;

这个输出为什么是 9 8 7 6 4 5 6 7 8 9, 而不是4 5 6 7 8 9 9 8 7 6
最好能从头解释一下,我看看自己思路对不对。谢了!!
请重点解释一下这部
for(int i=0;i<4;i++,p++,q--){
*p = *q;
}
展开
 我来答
百度网友c48f0a65
2010-11-30 · TA获得超过900个赞
知道小有建树答主
回答量:380
采纳率:0%
帮助的人:390万
展开全部
为什么会输出4 5 6 7 8 9 9 8 7 6呢
int a[10] = {0,1,2,3,4,5,6,7,8,9};//定义一整型数组并初始化
int *p, *q;//定义两个整型指针
p = &a[0];//p指向a[0]
q = &a[9];//q指向a[9]
for(int i=0;i<4;i++,p++,q--){//循环
*p = *q;//a[9赋给]a[0],a[8]赋给a[1]以此类推到a[6]赋给a[3],a[1],a[2],a[3],a[4]变为9876,a[9],a[8],a[7],a[6]不变
}
for(int i=0;i<10;i++)//循环输出数组
cout << a[i] << ' ';
cout << endl;
allpublic_use
2010-11-30 · TA获得超过268个赞
知道小有建树答主
回答量:566
采纳率:0%
帮助的人:217万
展开全部
*p = *q;
这里for以后
a={9,8,7,6,5,4,5,6,7,8,9}

如果要输出4 5 6 7 8 9 9 8 7 6
for(int i=0;i<6;i++)
cout << a[i] << ' ';
for(int i=9;i>5;i--)
cout << a[i] << ' ';
cout << endl;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
凌云走过
2010-11-30 · 超过28用户采纳过TA的回答
知道答主
回答量:131
采纳率:0%
帮助的人:59.9万
展开全部
这个是这样的:
循环里进行了四次循环,分别是给*p赋新值,并且有p++,因此改变值的只有a[0]-a[3]四个值,后边的没变,值还是 4 5 6 7 8 9
前四个值是这样的,a[0]=a[9]=9,a[1]=a[8]=8,a[2]=a[7]=7,a[3]=a[6]=6,
再输出a数组里的值的时候,结果就是9876456789了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
司琅0Iid5b
2010-11-30 · TA获得超过802个赞
知道小有建树答主
回答量:319
采纳率:0%
帮助的人:613万
展开全部
你好,首先
int *p, *q;
p = &a[0];
q = &a[9];
声明了两个整形指针,分别指向数组的第一个元素,和最后一个元素;
for(int i=0;i<4;i++,p++,q--){
*p = *q;
}
这里面,变量i的作用是控制循环次数,这里就是循环4次,每次循环,指针p想后移一个元素,指针q向前移动一个元素,
*p = *q的意思就是变q指向元素的值赋给p指向元素的值。
第一次循环:将9赋值为元素0,这样,序列变成:9,1,2,3,4,5,6,7,8,9;
第二次循环:将8赋值为元素1,这样,序列变成:9,8,2,3,4,5,6,7,8,9;
第三次循环:将7赋值为元素2,这样,序列变成:9,8,7,3,4,5,6,7,8,9;
第四次循环:将6赋值为元素3,这样,序列变成:9,8,7,6,4,5,6,7,8,9;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
魔影·纷飞
2010-11-30
知道答主
回答量:2
采纳率:0%
帮助的人:0
展开全部
for(int i=0;i<4;i++,p++,q--)
{*p = *q;}
初始数列是:0,1,2,3,4,5,6,7,8,9
执行程序:将q指针指向的数赋值p指针所指的数,然后p++(后移),q--(前移)
i从零到3,总共4次赋值。即:9赋值0,8赋值1,7赋值2,6赋值3
所以,结果是9 8 7 6 4 5 6 7 8 9
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友ee69660
2010-11-30 · TA获得超过137个赞
知道答主
回答量:58
采纳率:0%
帮助的人:0
展开全部
如果你想在循环里实现交换的话,少了个中间变了。你现在的语句实现的功能是把a9 a8 a7 a6分别赋给a0 a1 a2 a3,但你没有把a0 a1 a2 a3赋给a9 a8 a7 a6,所以输出的是第一个结果。要实现交换功能可另设Int b。 第一个循环里的语句改成b=*p;*p=*q;*q=b;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式