1.排序R 2.匹配I的数据,并过滤相同的R值


int main()
{
    int I[200];
    int R[200];
    int ISize = 0;
    int RSize = 0;
    int index = 1;
    int result[500];
    int Rpre = 0;

    scanf("%d", &ISize);
    for(int i = 0; i < ISize; i++)
    {
        scanf("%d", &I[i]);
    }
    scanf("%d",&RSize);
    for(int i = 0; i < RSize; i++)
    {
        scanf("%d", &R[i]);
    }
    
    /* 由小到大排序 */
    for(int i = 0; i < RSize; i++)
    {
        for(int j = i+1; j < RSize; j++)
        {
            if(R[j] < R[i])
            {
                int temp = R[i];
                R[i] = R[j];
                R[j] = temp;
            }
        }
    }
    
    /* 查找满足条件的数据 */
    for(int i = 0; i < RSize; i++)
    {
        int Rdata = R[i];
        int num = 0;
        
        /* 相同的R 不再重复查询 */
        if(Rdata == Rpre)
        {
            continue;
        }
        /* 预留两个位置为 R数值 和匹配I的个数 */
        index += 2;
        
        /* 通过取模比较每一位数 */
        for(int j = 0; j < ISize; j++)
        {
            int Idata = I[j];
            while(Idata)
            {
                int flag = 0;
                int Imod = Idata % 10;
                int Rmod = Rdata % 10;
                if(Imod == Rmod)
                {
                    flag = 1;
                    int Rdiv = Rdata / 10;
                    int Idiv = Idata / 10;
                    while(Rdiv)
                    {
                        if(Rdiv % 10 != Idiv % 10)
                        {
                            flag = 0;
                        }
                        Rdiv = Rdiv / 10;
                        Idiv = Idiv / 10;
                    }
                }
                
                if(flag)
                {
//                     printf("R = %d, I = %d \n", R[i], I[j]);
                    /* 匹配到数据,存入结果数组 */
                    num++;
                    result[index++] = j;
                    result[index++] = I[j];
                    
                    break;
                }else
                {
                    Idata /= 10;
                }
            }
        }
        
        if(num > 0)        //存储R和匹配到的I个数
        {
            result[index - 2*num - 2] = R[i];
            result[index - 2*num -1] = num;
        }
        else                //未匹配到任何一个I,则回退预留的位置
        {
            index -= 2;
        }
        Rpre = R[i];
    }
    
    if(index > 1)
    {
        result[0] = index - 1;
    }
    
    for(int i = 0; i < index; i++)
    {
        printf("%d ", result[i]);
    }
    
    return 0;
}