int d; //入力値
while(1){
//移動する数値を入力する
do {
d = -1;
printf("動かす数字を入力して下さい > ");
scanf("%d", &d);
while (getchar() != '\n') { }
if(d == 0) { r = 1; break; }

これで、d = -1; に何故-1が付くのかわかりません。
入門書に書いてある説明に依ると数値以外の文字や文字列が
入力されると、scanf関数の入力値を格納する変数には何も
入らないので、前に入力した値が入っている状態です。
なので、scanf関数を使う前に、入力値を格納する変数に
毎回数値-1を設定しておきましょう。

との事です。
>>scanf関数を使う前に、入力値を格納する変数に
毎回数値-1を設定しておきましょう。
何故、-1を設定しなければならないのでしょうか?

それと、>>前に入力した値が入っている状態です。
前に入ってるから、何故-1にするのかわかりません。

アドバイスを宜しくお願いします。