C/C++报数问题,输出这个数字的发音应该念成哪几个字

来个小伙伴帮我看看,指点指点我。
题目描述:
给定一个整数,请你输出这个数字的发音应该念成哪几个字。
输入格式:
第一行包含一个整数n(1≤n≤200)表示测试用例的个数。其后的n行中,每行包含有一个整数k(0≤k<100000)。
输出格式:
每个测试用例的输出单独占一行,输出整数k的发音对应的文字。0-9还是以数字形式输出,十百千万分别用它们的拼音的第一个字母的大写表示,即为S、B、Q、W。
输入样例:
5
0
10
203
1008
12345
输出样例:
0
1S
2B03
1Q08
1W2Q3B4S5

从个位数开始,按10进制 向高位遍历n上面的数字,同时记录位权(可以用0,1,2,3,4...,分别表示个、十(S)、百(B)、千(Q)、万(W)...)。
由于整数k范围[0, 100000)(十万),也就不用考虑十万、百万、千万,这样的位权重叠问题。
个位数(第一次)直接输出数字,碰到0也直接输出数字;
如果是非0,非个位数,直接输出位权对应字母。
e.g.

int n;
string weigth = "0SBQW";
cin >> n;
while (n-- > 0) {
  int k, i = 0;
  cin >> k;
  if (k < 0 || k >= 100000) { cout << k << endl; continue; }

  while (k) {
    int digit = k % 10;
    if (digit != 0 && i != 0) {
      cout << digit << weigth[i];
    }
    k /= 10;
    i++;
  }
  cout << endl;
}