36

单选题 36 /101

In the main() function, after ModifyString(text) is called, what’s the value of ‘text’?
int FindSubString(char* pch){
    int   count  = 0;
    char  * p1   = pch;
    while (*p1 != '\0'){    
        if (*p1 == p1[1] - 1){
            p1++;
            count++;
        }else  {
            break;
        }
    }
    int count2 = count;
    while (*p1 != '\0'){
        if (*p1 == p1[1] + 1){
            p1++;
            count2--;
        }else  {
            break;
        }
    }
    if (count2 == 0)
        return(count);
    return(0);
}
void ModifyString(char* pText){
    char  * p1   = pText;
    char  * p2   = p1;
    while (*p1 != '\0'){
        int count = FindSubString(p1);
        if (count > 0){
            *p2++ = *p1;
            sprintf( p2, "%i", count );
            while (*p2 != '\0')  {
                p2++;
            }
            p1 += count + count + 1;
        }else  {
            *p2++ = *p1++;
        }
    }
}
void main(void){
    char text[32] = "XYBCDCBABABA";
    ModifyString(text);
    printf("%s\n", text);
}  

参考答案

XYBCDCBABABA
XYBCBCDA1BAA
XYBCDCBA1BAA
XYBCDDBA1BAB