c语言实现从键盘任意输入20个整数,统计非负数个数,计算非负数之和

为什么程序运行错误
void main()
{
int n[21]={0},a=0,i=0,b=0; //a为统计非负数个数,b为统计非负数和
for(i=0;i<20;i++)
{
scanf("%d",n[i]);
if (n[i]>=0)
{
a++;
b+=n[i];
}

}
printf("%d %d",&a,&b);
system("pause");

}

第1个回答  2013-07-15
scanf("%d",n[i]);应当
该为scanf("%d",&n[i]);
这是初学者常犯错误之一,scanf后面的参数应当是地址
printf("%d %d",&a,&b); 应改为
printf("%d %d",a,b);
这个有点犯的不应该,printf后面的参数不是地址本回答被提问者采纳
第2个回答  2013-07-15
scanf("%d",&n[i]);
printf("%d %d",a,b);
以上为明显错误来源
隐藏错误:当输入非数字、空白或正负号时scanf工作异常
第3个回答  2013-07-15
scanf语句错误
改为 scanf("%d",&n[i]);
printf语句错误
改为 printf("%d %d",a,b);
第4个回答  2013-07-15
scanf("%d",n[i]);这句是取值。。。得有取值符号

改成scanf("%d",&n[i]);

printf("%d %d",&a,&b);这句是输出,去掉取值符号

改成printf("%d %d",a,b);
第5个回答  2013-07-15
最后,printf ()的()里直接用a b 呀,干嘛用了&
把&去掉吧。
还有,干嘛定义了个n[21],20个数,定义n[20 ]就对了嘛。
相似回答