和数问题我这个问题出在哪?

合成31501


#include <iostream>
using namespace std;
int fun(int b[], int n)
{

    int k=0,s=0;
    for (int i = 0; i < n; i++)//判断和数的位数
    {
        if (b[i]>=0&&b[i] <= 9)
        {
            k++;
        }
        if (b[i] > 9&&b[i]<20)
        {
            int p = 0;
            int r = b[i];
            while (r)//判断b[i]的位数
            {
                r /= 10;
                p++;
            }
            k = k + p;
        }
    }
    int j = 0;
    do 
    {
        int q=1;
        if (b[j] < 9)
        {
            
            for (int i = 0; i < k - 1; i++)
            {
                q = q * 10;
            }
            s += b[j] * q;
            q--;
        }
        if (b[j] > 9 && b[j] < 20)
        {
            k--;
            for (int i = 0; i < k - 1; i++)
            {
                q = q * 10;
            }
            s += b[j] * q;
            k--;
        }
        j++;
    } while (j != n - 1);

        return s;
}
int main()
{
    int a[4] = { 3,15,0,1 };//31501
    cout<<fun(a, 4);

    return 0;
}

img


源代码38行修改
应该输入错误,检查不认真