c++输入整数输出对应中文题目怎么解

题目来源杭电oj1002

Problem Description
给出在[0, 100]范围内的整数数字,你能把对应的中文写出来吗?
Input
第一行输入一个T (T <= 20),后面每行一个数字,题目保证数字是[0, 100]。
Output
第一行输入一个T (T <= 20),后面每行一个数字,题目保证数字是[0, 100]。
Sample Input
5
1
22
3
4
100
Sample Output

二十二

环境:vs2019

一百

预期结果:请帮忙解一下这题,如果能附加注释是最好的了,谢谢,新手上路


int main()
{
    int i[5];       //将数的每一位数取出来存放到数组里 
    int b = 0;      //第一个数存放的标志位 
    int c = 0;
    scanf("%d",&c); //输入有几个数 
    int j[10];      //最多10个 
    for(int n = 0; n<c; n++)
    scanf("%d",&j[n]);//循环输入数据 
    int m = 0;
    while(m<c)        //将输入的数据依次处理 
    {
        while(j[m])
        {
            i[b] = j[m]%10; //先将每个数字最后一个数拿出来 
            j[m] = j[m]/10; //给数除十 
            if(j[m])
            b++;            //计算数据存放位置 
        }
        for(; b>=0; b--)    //将每个数据进行输出 
        {
            if(b)            
            {
                switch(i[b])//用switch语句判断数字输出结果 
                {
                    case 1:printf("十");break;
                    case 2:printf("二十");break;
                    case 3:printf("三十");break;
                    case 4:printf("四十");break;
                    case 5:printf("五十");break;
                    case 6:printf("六十");break;
                    case 7:printf("七十");break;
                    case 8:printf("八十");break;
                    case 9:printf("九十");break;
                }
            }
            else 
            {
                switch(i[b])
                {
                    case 1:printf("一");break;
                    case 2:printf("二");break;
                    case 3:printf("三");break;
                    case 4:printf("四");break;
                    case 5:printf("五");break;
                    case 6:printf("六");break;
                    case 7:printf("七");break;
                    case 8:printf("八");break;
                    case 9:printf("九");break;
                }
            }
        }
        m++;     //处理下一个数字 
        b = 0;
        printf("\n");   //输出后换行 
    }
    
    return 0;
}