关于c语言一个菜鸟问题,望高手指点,在线等!!!!

大家来帮我看看这个程序:#defineM4#defineN5main(){inta[M][N],i,*p;for(p=&a[M][N];p<&a[M-1][N-1];p+... 大家来帮我看看这个程序:
#define M 4
#define N 5
main()
{
int a[M][N],i,*p;
for(p=&a[M][N];p<&a[M-1][N-1];p++)
scanf("%d",p);
i=0;
for(p=&a[M][N];p<&a[M-1][N-1];p++)
{
printf("%d",*p);
i++;
if(i%N==0)printf("\n");
}
}
这是书上的一个例子,实现的是用指针法输入、输出而为数组中的所有元素;但是在运行中我发现;明明定义的是一个拥有20个元素的数组,为什么输入的时候只输入19个元素?加入输入“1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19”程序就会结束输入,转而运行下一步循环输出,请高手帮我回答下。
按照一楼的说法 修改后的确是正确的,但是书上确实只是用“<”而不是用“<=”,难道书出错了?
展开
 我来答
undergrowth
2009-12-22 · TA获得超过1513个赞
知道小有建树答主
回答量:879
采纳率:0%
帮助的人:1283万
展开全部
#define M 4
#define N 5
main()
{
int a[M][N],i,*p;
for(p=&a[0][0];p<=&a[M-1][N-1];p++)
scanf("%d",p);
i=0;
for(p=&a[0][0];p<=&a[M-1][N-1];p++)
{
printf("%d ",*p);
i++;
if(i%N==0)printf("\n");
}
}

改了 应该是这样 可以运行 输入的时候用空格隔开
不好意思 刚才有点问题 没注意 现在可以了
骑自行车的攻城狮
2009-12-22 · TA获得超过1246个赞
知道小有建树答主
回答量:546
采纳率:100%
帮助的人:348万
展开全部
照上面那位朋友说的做.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
surybai
2009-12-22 · TA获得超过440个赞
知道答主
回答量:265
采纳率:0%
帮助的人:246万
展开全部
循环条件:for(p=&a[0][0];p<&a[M-1][N];p++)
二维数组int a[M][N]的下标上界是a[M-1][N-1],而a[M-1][N]就刚好越界,所以,可以做为本程序的循环条件
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
雷菡0JU
2009-12-28
知道答主
回答量:10
采纳率:0%
帮助的人:6.2万
展开全部
p<&a[M-1][N-1];

把<改为<=
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式