ヒント

1.1つの値を受け取って,何けたの数か表示するだけの作業

値を1つキーボードから受け取る
その値が何けたの数か,桁数を数える作業を行う
桁数を表示する

「何けたの数か,桁数を数える作業」は次のように行えばよい

カウンタ変数=0
while (
与えられた変数>0) {
    カウンタ変数を1増やす
    与えられた変数=与えられた変数/10
}
(この時点でカウンタ変数には何回10で割ることができたか数えた値が入っている)
(すなわちこの値が桁数)

2.負の数を受け取るまで「1」の作業を繰り返す作業(まともに繰り返す)

値を1つキーボードから受け取る
その値が正なら次へ進み,負なら作業終了
その値が何けたの数か,桁数を数える作業を行う
桁数を表示する
値を1つキーボードから受け取る
その値が正なら次へ進み,負なら作業終了
その値が何けたの数か,桁数を数える作業を行う
桁数を表示する
値を1つキーボードから受け取る
その値が正なら次へ進み,負なら作業終了
その値が何けたの数か,桁数を数える作業を行う
桁数を表示する
値を1つキーボードから受け取る
その値が正なら次へ進み,負なら作業終了
その値が何けたの数か,桁数を数える作業を行う
桁数を表示する

         :

3.繰り返し処理部分の発見

「2.」では,同じ作業が繰り返されているのがわかる。
繰り返しの作業の一回分は

値を1つキーボードから受け取る
その値が正なら次へ進み,負なら作業終了
その値が何けたの数か,桁数を数える作業を行う
桁数を表示する

であるが,繰り返しの作業の始まりは,while文を使うので

その値が正なら次へ進み,負なら作業終了

にならなければならない。そうすると,「2.」の作業は,最初の1行が仲間はずれになり,

値を1つキーボードから受け取る

その値が正なら次へ進み,負なら作業終了
その値が何けたの数か,桁数を数える作業を行う
桁数を表示する
値を1つキーボードから受け取る

その値が正なら次へ進み,負なら作業終了
その値が何けたの数か,桁数を数える作業を行う
桁数を表示する
値を1つキーボードから受け取る

その値が正なら次へ進み,負なら作業終了
その値が何けたの数か,桁数を数える作業を行う
桁数を表示する
値を1つキーボードから受け取る

その値が正なら次へ進み,負なら作業終了
その値が何けたの数か,桁数を数える作業を行う
桁数を表示する
値を1つキーボードから受け取る
        :

のように繰り返し作業単位を考えなければならない。この作業は,while文を使うと
やはり,最初の1行が仲間外れになり,

値を1つキーボードから受け取る

while(その値が正だったら){
   その値が何けたの数か,桁数を数える作業を行う
   桁数を表示する
   値を1つキーボードから受け取る

になる。

4.プログラムとして構成
プログラムとして構成すると次のようになる。

値を1つキーボードから受け取る

while(その値が正だったら){

カウンタ変数=0
while (
与えられた変数>0) {
    カウンタ変数を1増やす
    与えられた変数=与えられた変数/10
}
(この時点でカウンタ変数には何回10で割ることができたか数えた値が入っている)
(すなわちこの値が桁数)

   桁数を表示する
   値を1つキーボードから受け取る