传奇烟价格表和图片:c++改错,请求高手

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/06 17:49:51
请问下题求正负零数个数究竟哪错,执行时老是出错

#include<iostream.h>
void fun(int[][3],int *,int *,int *); //不允许修改此行

void main(void)
{
int array[3][3];
int i,j,*m,*n,*k;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
cin>>array[i][j];
fun(array,m,n,k); //m,n,k分别存放正数,零,负数的个数

cout<<"Output:"<<*m<<','<<*n<<','<<*k<<endl;
}
void fun(int p[][3],int *p1,int *p2,int *p3)
{
int i,j,c;
for (i=0;i<3;i++)
for (j=0;j<3;j++)
{
c=(p[i][j]<=0);
switch(c)
{
case 0:
(*p1)++;break; //正数元素计数
case 1:
if(p[i][j]<0)
(*p3)++; //负数元素计数
else
(*p2)++; //0元素计数
}
}
}

int i,j,*m,*n,*k;
改为int m,n,k;

fun(array,m,n,k)
改为
fun(array,&m,&n,&k)

同上 理由:你那样传递的是值,当函数返回时,栈内内容已经清空,而mnk的内容没有发生人和改变 ,楼上的做法就是传址操作