哪位大神帮我看看这段程序,C语言的,错在哪里?

#include<stdio.h>
main()
{
int a[30];
int n,*p;
p=a;
for(n=0;n<30;n++)
{
*p=2*n+1;
p++;
}
for(n=0;n<30;n++)
{
printf("a[%d]=%d",n,*p);
if((n+1)%10==0)
printf("\n");
}
}
要求输出30个元素的数组,每个元素都是奇数;

循环 p++ 之后,p 就指向数组的末尾,你要想输出的话,要让 p 复位指向首元素
温馨提示:内容为网友见解,仅供参考
第1个回答  2014-07-17
第一个for 循环后,指针p已指向无效区域,所以还要再令p=a,第二个for循环时,要使指针移位,所以应写成printf("a[%d]=%d",n,*(p+n);
第2个回答  2014-07-17
printf("a[%d]=%d",n,*p);

这一句错了,在经过了上一个循环后p指向了a[30],也就是空的位置,运行到此处会报错,应改为
printf("a[%d]=%d",n,a[n]);
第3个回答  推荐于2016-06-04
#include<stdio.h>
main()
{
int a[30];
int n,*p;
p=a;
for(n=0;n<30;n++)
{
*p=2*n+1;
p++;
}
for(p=a,n=0;n<30;n++,p++)
{
printf("a[%d]=%d ",n,*p);
if((n+1)%10==0)
printf("\n");
}
}
改成这样就可以了,如果有问题可以追问本回答被提问者采纳
第4个回答  2014-07-17
if后面少了个{
相似回答