提问 函数fun的是:不断从终端读入整数变量a大于0变量c小于0的个数当

提问

函数fun的是:不断从终端读入整数变量a大于0变量c小于0的个数当输入0时结束输入通过形参pa和pb传回主程序

void fun(int &pa, int &pb)
{
int a = 0, b = 0, c;
scanf("%d", &c);
while (c!=0)
{
if (c > 0)
a++;
else
b++;
fun(int &pa,int &pb);
}
pa = a;
pb = b;
} 这个程序对吗?

递归调用不对。 

另外,如果要递归 就不应该用while

用while就不要递归。 

递归代码参考如下:

void fun(int &pa, int &pb)
{
    int c;//直接用pa pb ä¸è¿‡ è¦æ±‚传入时,pa pb初始值必须为0.
    scanf("%d", &c);
    if (c > 0)
        pa++;
    else if(c<0)
        pb++;
    else return;
    fun(pa,pb);
}

不用递归 用while的方式。 

void fun(int &pa, int &pb)
{
    int c;
    pa=pb=0;//不用递归 å¯ä»¥ä¸è€ƒè™‘pa pb初始值。 
    scanf("%d", &c);
    while(c!=0)
    {
        if (c > 0)
            pa++;
        else 
            pb++;
        scanf("%d", &c);
    }
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-03-28
void fun(int *pa, int *pb)
{
int a = 0, b = 0, c;
scanf("%d", &c);
while (c!=0)
{
if (c > 0)
a++;
else
b++;
scanf("%d", &c);
}
*pa = a;
*pb = b;
}