C++二维数组 递归 找出负数个数和正数平均值 代码错误

#include <iostream>
#include <ctime>
#include <stdlib.h>
using namespace std;
    int s[10][10]={};
    int sumnum=0;
    int t=0;
    float av=0;
int nagnum()
{
    for(int i=0;i<10;i++)
    {
        for(int j=0;j<10;j++)
    {
        if(s[i][j]<0)
            sumnum+=1;
        else
            {if(s[i][j]>0)
            av=av+s[i][j]/100;
            }


    }
    }

    if(t==100)
        return sumnum;
    else
        {
            t++;
            return nagnum();
        }
}

int main()
{
    srand(int(time(0)));
    for(int i=0;i<10;i++)
    {for(int j=0;j<10;j++)
    {
       if(rand()%10>0.4)
       s[i][j]=rand()%100;
       else
       {
           s[i][j]=-rand()%100;
           if (s[i][j]==(-0))
            s[i][j]=0;
       }
        cout<<s[i][j]<<"  ";

    }
        cout<<endl;
    }
    cout<<nagnum()<<endl;
    cout<<av<<endl;
    return 0;
}

问题比较多啊,递归理解还不到位

#include <iostream>
#include <ctime>
#include <stdlib.h>
using namespace std;
int s[10][10]={};
int sumnum=0;
float av=0;
int nagnum(int i,int j)
{
	if(s[i][j]<0)
		sumnum+=1;
	else
	{
		if(s[i][j]>0)
			av+=s[i][j];
	}
	
	j++;
	if(j>= 10)
	{
		i++;
		j=0;
	}
	if(i>=10)
	{
		av = av/100.0;
		return sumnum;
	}
	return nagnum(i,j);
}
int main()
{
	srand(int(time(0)));
	for(int i=0;i<10;i++)
	{
		for(int j=0;j<10;j++)
	{
		if(rand()%10>0.4)
			s[i][j]=rand()%100;
		else
		{
			s[i][j]=-rand()%100;
			if (s[i][j]==(-0))
				s[i][j]=0;
		}
		cout<<s[i][j]<<"  ";
	}
	cout<<endl;
	}
	cout<<nagnum(0,0)<<endl;
	cout<<av<<endl;

	return 0;
}

 

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632