c语言,用指针。输入20个整数并存入数组,以每行5个数打印出来,并打印输出其中偶数的和。

这样做为什么运行总是有问题。。错误出在哪?
2024-11-15 22:23:46
推荐回答(2个)
回答(1):

错误在:while((*p++=getchar())!='a');

此时,当对数组输入数字时,存入数组中的是你输入数字的ASCII值。所以你无法得到正确答案。因为你定义的数组是整型,输入时却用字符型输入 。

我给你改一下:

# include
# include

int main(void)
{

int a[30],*p=a,*q=a,sum=0;

printf("请输入数字,以0结束!\n");

do
{
scanf("%d",&*p);
} while (*(p++)!=0);

for(p=&a[0]; *p!=0; p++)
{
if((p-q)==5)
{
printf("\n");
q=p;
}

printf("%d ",*p);
if(*p%2==0)
sum += *p;
}
printf("\n");
printf("偶数之和为:");

printf("sum = %d",sum);

system("pause");
return 0;
}

回答(2):

while循环就错了
getchar获得的是字符,而你想要的是整型。
比如在你的程序我打了1,那就是49,因为它会把字符转换成ascill码值放入数组中