读书人

小程序红色部分为什么错解决方案

发布时间: 2012-06-11 17:42:22 作者: rapoo

小程序,红色部分为什么错
#include<stdio.h>
void main()
{ int i,n;
int s[20],*p;
p=s;
printf("\ninput n:");
scanf("%d",&n);
printf("input the %d numbers:",n);
for(i=0;i<n;i++)
scanf("%d",p++);
printf("now:\n");
for(i=0;i<n;i++)
printf("%d ",*(p+i));
}





















































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































[解决办法]

+++

探讨
红色的地方没有错误。错误的地方是你没有把p重新设置为s的首地址而已。

C/C++ code

int main()
{
int i,n;
int s[20],*p;
p=s;
printf("\ninput n:");
scanf("%d",&n);
printf("input the %d numbers:",n);……

[解决办法]
方案一

我把你的程序求改了一下,又加了一个指针变量q,来记录数组的首地址
#include<stdio.h>
#include<stdlib.h>
int main()
{ int i,n;
int s[20],*p,*q;
p=q=s;
printf("\ninput n:");
scanf("%d",&n);
printf("input the %d numbers:",n);
for(i=0;i<n;i++)
scanf("%d",p++);
printf("now:\n");
for(i=0;i<n;i++)
printf("%d ",*q++);
system("pause");
return 0;
}
方案二
增加指针输出时*p++改成*--p也可以的
#include<stdio.h>
#include<stdlib.h>
int main()
{ int i,n;
int s[20],*p;
p=s;
printf("\ninput n:");
scanf("%d",&n);
printf("input the %d numbers:",n);
for(i=0;i<n;i++)
scanf("%d",p++);
printf("now:\n");
for(i=0;i<n;i++)
printf("%d ",*--p);
system("pause");
return 0;
}

读书人网 >C++

热点推荐