PTA的题,请问我写的这段代码哪里错了?我觉得思路是对的,但是想了几个小时都想不通

img

#include <bits/stdc++.h> 
using namespace std;
int main()
{
    int weishu=0,shuzi=0,n,t,m;
    double e;
    cin>>n;
    t=n;
    if(n<0) n=(-1)*n;
    while(n>0)
    {
        weishu++;
        n=n/10;
    }
    n=t;
    if(n<0) n=(-1)*n;
    if(weishu>1)
    {
        while(n>0)
    {
        m=n%10;
        if(m==2) shuzi++;
        n=n/10;
    }
    n=t;
    e=shuzi/weishu*100;
    if(n<0) 
    {
        e=e*1.5;
        if(n%2==0) e=e*2;
    }
    cout<<setiosflags(ios::fixed)<<setprecision(2)<<e<<"%"<<endl;
    }
    if(weishu==1) 
    {
        if(n==2) cout<<100.00<<"%"<<endl;
        else if(n==-2) cout<<300.00<<"%"<<endl;
        else cout<<0.00<<"%"<<endl;
    }
    return 0;
}

img