タイトルの記録を行います--day51

PAT B1024

ああああああああこのタイトルカードの日は最終的にああ合格しました!

すべての最初の数ノート、

後者の場合、正のインデックス番号で、例えば、+ 0.01E + 03は、前部を除去するために、複数の0の前にあると考えることができる0

インデックスの数は、+ 02 + 1.23Eように、正確に小数点が除去されるべき時間の終わりを仕上げ、それは123の決定されない場合があります。

そして、負のインデックスの場合にも、0まで考慮しなければなりません

提出時に、独自のprintfを書く取り除くことに注意してください

する#include <stdio.hに> 
する#include < 文字列・H>
 int型のmain()
{ 
    char型 STR [ 100000 ]。
    一方、(scanf関数(" %sは"!、STR)= EOF)
    { 
        int型のE、シンボル1、シンボル2。
        INT LEN = STRLEN(STR)。
        もし(STR [ 0 ] == ' + ' 
            シンボル1 = 1 他の
            シンボル1 = 2 ;
        以下のためのint型私は=2、I <= len- 1 ; I ++ 
        { 
            場合(STR [I] == ' E ' 
            { 
                E = I。
                破ります; 
            } 
        } 
        もし(STR [E + 1 ] == ' + ' 
            シンボル2 = 1 他の
            シンボル2 = 2 ;
        int型アップ= E + 2 一方、(STR == [最大] ' 0 ' 
            アップ ++ ;
        int型のカウント= 1 ;
        int型 ANS = 0 ;
        int型の温度[ 10005 ];
        int型 tempnum = 0 ;
        一方、(アップ<= len- 1 
        { 
            TEMP [tempnum ++] =列str [最大] - ' 0 ' 
            アップ ++ ; 
        } 
        のためのint型 I = tempnum- 1 ; I> = 0 ; i-- 
        { 
            ANS+ =カウント*のTEMP [i]は、
            カウント *カウント= 10 ; 
        } 
        // のprintf( "シンボル1:%のD、E:%のD、シンボル2:%のD、ANS:%Dを\ n"、シンボル1、E、シンボル2、ANS)。
        もし(シンボル2の== 1 
        { 
            int型 =ゼロ1 もし((ANS + 3)< E)
            { 
                ためint型 I = 2 ; I <= 1 + ANS; I ++ 
                    STR [I] =列str [I + 1 ]。
                / * ため(INT I = E-1、I> ANS + 2; i--)
                    STR [I + 1] = STR [I]。* / 
                STR [ANS + 2 ] = ' " ;
                もし(STR [ 0 ] == ' - ' 
                    のprintf(" - " ;)
                一方、(STR [ゼロ] == ' 0 ' 
                    ゼロ ++ もし(STR [ゼロ] == ' ' 
                    ゼロ - 以下のための int型にゼロ=私を、私は電子を<;私は++ 
                printf(" %のC " 、STR [I])。
                printf(" \ nを" ); 
            } 
            そう であれば(ANS + 3 == E)
            { 
                ためint型 I = 2 ; I <= 1 + ANS; iが++ 
                    STR [I] = STR [I + 1 ]。
                // STR [ANS + 2] = ''; 
                もし(STR [ 0 ] == ' - ' 
                    のprintf(" - ");
                一方、(STR [ゼロ] == ' 0 ' 
                    ゼロ ++ もし(STR [ゼロ] == ' ' 
                    ゼロ - // のprintf( "ゼロ:%Dを\ n"、ゼロ)。以下のためにint型ゼロ= Iと、iはE-< 1 ; I ++ 
                のprintf(" %のC " 、STR [I])を、
                printf(" \ nを" ); 
            } 
            {
                
            
                以下のためにint型 I = 2 ; I <= E- 2、I ++ 
                    STR [I] =列str [I + 1 ]。
                以下のためにint型 I = E- 1、I <= ANS + 1 ; iが++ 
                    STRを[I] = ' 0 ' もし(STR [ 0 ] == ' - ' 
                    のprintf(" - " ;)
                一方、(STR [ゼロ] == ' 0 ' 
                    ゼロ ++ ;
                もし(STR [ゼロ] == ' ' 
                    ゼロ - int型、iが=のANS + <I =ゼロ1 ; iが++ 
                    のprintf(" %のC " 、STR [I])。
                printf(" \ nを" ); 
            } 
        } 
        { ためINT I = E- 1 + ANS; I> = ANS + 3 ; i-- 
                STR [I]
        
            = STR [I- ANS]。
            STR [ANS + 2 ] = STR [ 1 ]。
            STR [ 1 ] = ' 0 ' 
            STR [ 2 ] = ' " ;
            以下のためにint型 I = 1 ; I <= ans- 1 ; I ++ 
                STRの[ 2 + I] =の' 0 ' もし(STR [ 0 ] == ' - ' 
                のprintf(" -" );
             のためint型 I = 1、I <= E-; 1 ; + ANS iは++ 
                のprintf(" %のC "STR [I]); 
            のprintf(" の\ n " ); 
        } 
    } 
    戻り 0 ; 
}
コードの表示

 

おすすめ

転載: www.cnblogs.com/tingxilin/p/11469539.html