« Prouvez offre de sécurité » Cinquième question: remplacer les espaces

// question du visage 5: remplacer les espaces
 // Titre: S'il vous plaît mettre en œuvre une fonction, chacun des espaces dans la chaîne de remplacement comme « 20% ». Par exemple, entrez "Nous sommes heureux.",
 // sortie "We% 20are% 20happy." . 

#include <cstdio> 
#include <CString> / * la capacité totale du tableau de caractères de longueur est supérieure ou égale à la longueur réelle de str * / vide de ReplaceBlank ( omble str [], int longueur) 
{ // Robustesse test null longueur de pointeur est inférieur à 1. 2. 0 IF (STR == nullptr une longueur || <= 0 )
         retour ; // idées principales: la première fois la complexité est O (n) recherche de l' espace, puis après le début de la fin de chaîne déplacer. int Number = 0 ; // nombre de places int true_length =



    
    

    
    
    0 ; // longueur réelle 
    int I = 0 ;
     le tout (! STR [I] = ' \ 0 ' ) // à la fin de 
    {
         IF (STR [I] == '  ' ) // trouver des espaces 
            ++ Nombre;

         ++ true_length;
         ++ I; 
    } 
    // printf ( "le numéro de l' espace:% d \ n-", numéro); 

    // test de robustesse après le remplacement de longueur dépassé comme 
    IF (* Numéro true_length + 2 > longueur)
         retour ; 

    // true_length de '\ 0'
    pour ( int I = true_length, I> = 0 ; Inc. (www.i-levelmedia.com)) // traversant la queue et remplacé 
    {
         IF (STR [I] == '  ' ) // trouver de l' espace pour commencer à remplacer 
        { 
            STR [I + * Numéro 2 - 0 ] = ' 0 ' ; 
            STR [I + Nombre * 2 - 1. ] = ' 2 ' ; 
            STR [I + Nombre * 2 - 2 ] = ' % ' ;
            --number; // commencer oublié d'écrire, perplexe 

            SI (nombre == 0 ) // efficacité 
                PAUSE ; 
        } 
        else 
        { 
            // mouvement non vide sur 
            STR [Number * I + 2 ] = STR [I] ; 
        } 
    } 
}

Analyse: La liste des nouvelles et établies indice des relations directes, ou un nouvel indice.

// ====================测试代码==================== 
vide Test ( const  ombles * TESTNAME, ombles str [], int longueur, const  ombles attendu []) 
{ 
    si (TESTNAME =! nullptr) 
        printf ( " % s commence: " , TESTNAME); 

    ReplaceBlank (str, longueur); 

    si (expected == nullptr && str == nullptr) 
        printf ( " passé \ n. " );
    d' autre  si (== prévu nullptr && str! = nullptr) 
        printf ( "a échoué \ n. " ),
     d' autre  si (strcmp (str, attendu) == 0 ) 
        printf ( " passé \ n. " ),
     d' autre 
        printf ( " échoué \ n. " ); 
} 

// 空格在句子中间
vide Test1 () 
{ 
    const  int longueur = 100 ; 

    ombles str [longueur] = " Bonjour tout le monde " ; 
    test ( " Test1 " , str, longueur, " bonjour% 20World " ); 
}

// espaces au début de la phrase 
vide Test2 () 
{ 
    const  int longueur = 100 ; 

    ombles STR [longueur] = " HelloWorld " , 
    le test ( " Test2 " , STR, longueur, " % 20helloworld " ); 
} 

// espaces à la fin de la phrase 
annuler la Test3 () 
{ 
    const  int longueur = 100 ; 

    carbonisation STR [longueur] = " HelloWorld " , 
    le test ( " le Test3 " , STR, la longueur," HelloWorld% 20 est " ); 
} 

// consécutifs deux espaces 
vides Test4 () 
{ 
    const  int longueur = 100 ; 

    ombles STR [longueur] = " Bonjour tout le monde " , 
    le test ( " Test4 " , STR, longueur, " Bonjour% % 20World 20 est " ); 
} 

// nullptr entrant un 
vide doit être effectué Test5 () 
{ 
    test ( " Test5 doit être menée " , nullptr a, 0 , nullptr a); 
} 

// chaîne entrante est vide 
videTest6 () 
{ 
    const  int longueur = 100 ; 

    ombles STR [longueur] = "" ; 
    le test ( " test6 " , STR, longueur, "" ); 
} 

// contenu entrant à une chaîne vide 
vide test7 () 
{ 
    const  int longueur = 100 ; 

    carbonisation STR [longueur] = "  " ; 
    le test ( " test7 " , STR, longueur, " % 20 est " ); 
} 

// chaîne passée sans espace 
vide  test8 ()
{
     Const  int longueur = 100 ; 

    ombles STR [longueur] = " HelloWorld " , 
    le test ( " test8 " , STR, longueur, " HelloWorld " ); 
} 

// chaîne passée tous les espaces 
vides test9 () 
{ 
    const  int = longueur 100 ; 

    carbonisation STR [longueur] = "    " ; 
    le test ( " test9 " , STR, longueur, " %% 20 est 20 est 20 est% " ); 
} 

intprincipal ( int argc, ombles * argv []) 
{ 
    Test1 (); 
    Test2 (); 
    Test3 (); 
    Test4 (); 
    Test5 (); 
    Test6 (); 
    Test7 (); 
    Test8 (); 
    Test9 (); 

    retourner  0 ; 
}
Code d'essai

 

Je suppose que tu aimes

Origine www.cnblogs.com/ZSY-blog/p/12508025.html
conseillé
Classement