
关于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”程序就会结束输入,转而运行下一步循环输出,请高手帮我回答下。
按照一楼的说法 修改后的确是正确的,但是书上确实只是用“<”而不是用“<=”,难道书出错了? 展开
#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”程序就会结束输入,转而运行下一步循环输出,请高手帮我回答下。
按照一楼的说法 修改后的确是正确的,但是书上确实只是用“<”而不是用“<=”,难道书出错了? 展开
4个回答
展开全部
#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");
}
}
改了 应该是这样 可以运行 输入的时候用空格隔开
不好意思 刚才有点问题 没注意 现在可以了
#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");
}
}
改了 应该是这样 可以运行 输入的时候用空格隔开
不好意思 刚才有点问题 没注意 现在可以了
展开全部
照上面那位朋友说的做.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
循环条件:for(p=&a[0][0];p<&a[M-1][N];p++)
二维数组int a[M][N]的下标上界是a[M-1][N-1],而a[M-1][N]就刚好越界,所以,可以做为本程序的循环条件
二维数组int a[M][N]的下标上界是a[M-1][N-1],而a[M-1][N]就刚好越界,所以,可以做为本程序的循环条件
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
p<&a[M-1][N-1];
把<改为<=
把<改为<=
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询