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 ; }