模板里的static想重置成零怎么办

img

img


下面是我的错误,别被气到
#include
#include
using namespace std;
template
T Average(T x)
{
static T ave = 0;
ave+= x;
return ave;
}

int main()
{
int a; double b; string s; int n; int sum1=0; double sum2=0;
while(cin>>s>>n)
{
if (s == "0") { for (int i = 0; i < n;i++)
{
cin >> a; sum1=Average(a);

    }
    cout << sum1 / n << endl;
    }
    if (s == "1") {
        for (int i = 0; i < n; i++)
        {
            cin >> b;sum2= Average(b);
        }
        cout <<fixed<<setprecision(2)<< sum2 / n << endl;
    }
}

}

T Average(T x)函数中添加一个变量,根据这个变量来决定是否把ave置0
如下:

#include <iostream>
#include <iomanip>
using namespace std;
template <typename T>
T Average(T x,int flag=0) //添加一个默认参数
{
    static T ave = 0;
    if (flag == 1) //根据参数设置ave的值
    {
        ave = 0;
        return 0;
    }
    ave += x;
    return ave;
}
int main()
{
    int a; double b; string s; int n; int sum1 = 0; double sum2 = 0;
    while (cin >> s >> n)
    {
        Average(0, 1); //在这里重置ave
        if (s == "0") {
            for (int i = 0; i < n; i++)
            {
                cin >> a; 
                sum1 = Average(a);

            }
            cout << sum1 / n << endl;
        }
        if (s == "1") {
            for (int i = 0; i < n; i++)
            {
                cin >> b; sum2 = Average(b);
            }
            cout << fixed << setprecision(2) << sum2 / n << endl;
        }
    }
}

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632