/*--------------------------------------------------------- 功能:用指针实现一维数组的输入,并统计其中偶数和奇数的个数。 ----------------------------------------------------------*/ #include<stdio.h> void main() { int a[20],i,nl,even=0,odd=0,*p=a; printf("请输入整数的个数"); scanf("%d",&nl); printf("本程序输入的整数个数是:%d\n", nl); for(i=0;i<nl;i++) /**************ERROR***************/ scanf("%d",*(p+i)); /*等价于scanf("%d", &a[i]); */ for(i=0;i<nl;i++,p++) { /**************ERROR***************/ if(p%2==0) even++; else odd++; } printf("本程序输入的整数中有%d个偶数和%d个奇数", even,odd); }
时间: 2023-07-23 22:20:36 浏览: 93
在第13行和第16行中,scanf函数的参数应该是&p[i],而不是*(p+i),因为scanf函数需要传入一个指向变量地址的指针,而&p[i]是a数组中第i个元素的地址,与*(p+i)是不同的。同时,在第19行中,应该用*p代替p,因为p是一个指针,需要使用*p来访问它所指向的变量。修改后的代码如下:
```
/*---------------------------------------------------------
功能:用指针实现一维数组的输入,并统计其中偶数和奇数的个数。
----------------------------------------------------------*/
#include<stdio.h>
void main()
{
int a[20],i,nl,even=0,odd=0,*p=a;
printf("请输入整数的个数");
scanf("%d",&nl);
printf("本程序输入的整数个数是:%d\n", nl);
for(i=0;i<nl;i++)
scanf("%d",&p[i]); /*等价于scanf("%d", &a[i]); */
for(i=0;i<nl;i++,p++)
{
if(*p%2==0) even++;
else odd++;
}
printf("本程序输入的整数中有%d个偶数和%d个奇数", even,odd);
}
```
阅读全文