C语言指针问题(选择题)

#include<stdio.h>#defineN5voidmain(){inta[N]int*p=awhile(p<a+N)scanf("%d",p++);while(... #include<stdio.h>
#define N 5
void main()
{int a[N]
int *p=a
while(p<a+N)
scanf("%d",p++);
while(p>a)
printf("%d",*(--p));
}
若输入 5 4 3 2 1 回车 则输出为
急用 最好能带上解释 谢谢了
展开
 我来答
厚雅逸I6
2009-12-15 · 超过31用户采纳过TA的回答
知道答主
回答量:82
采纳率:0%
帮助的人:0
展开全部
输入5 4 3 2 1,输出为1 2 3 4 5

原因嘛,大致如下:
int a[N]; //声明了一个包含5个元素的整形数组,因为N=5
int *p = a; //p是一个整形指针,在这一语句中,p指向数组a的第一个元素,即a[0]
while(p < a + N) //当p所指的对象(数据元素)不超过a+N时(即不越过a[4])
scanf("%d",p++) //接受输入,如“5 4 3 2 1”,则a[0]=5,a[1]=4...a[5]=1
while(p > a) //要注意,到达这条语句时,p已经指向a[5]了。
printf("%d ",*(--p)) //依次输出p所指向的内容,即输出“1 2 3 4 5”

不知道这样的解释是否可以。
david_lu_st
2009-12-15 · TA获得超过234个赞
知道小有建树答主
回答量:194
采纳率:0%
帮助的人:141万
展开全部
12345

按输入的逆序输出, 利用了指针的加减法
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
还俗小僧
2009-12-15
知道答主
回答量:9
采纳率:0%
帮助的人:0
展开全部
输出是12345
p=a就是把p放到a的第一个元素位置上
p<a+N的作用就是在写到a[N-1]的时候停止
p>a也差不多,在读完a[0]以后停止
合起来就是顺序读入,逆序输出
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式