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 回车 则输出为
急用 最好能带上解释 谢谢了 展开
#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 回车 则输出为
急用 最好能带上解释 谢谢了 展开
3个回答
展开全部
输入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”
不知道这样的解释是否可以。
原因嘛,大致如下:
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”
不知道这样的解释是否可以。
展开全部
12345
按输入的逆序输出, 利用了指针的加减法
按输入的逆序输出, 利用了指针的加减法
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
输出是12345
p=a就是把p放到a的第一个元素位置上
p<a+N的作用就是在写到a[N-1]的时候停止
p>a也差不多,在读完a[0]以后停止
合起来就是顺序读入,逆序输出
p=a就是把p放到a的第一个元素位置上
p<a+N的作用就是在写到a[N-1]的时候停止
p>a也差不多,在读完a[0]以后停止
合起来就是顺序读入,逆序输出
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询