/*
* 必要な最小数のおもりを求めるプログラム
*/

#include<stdio.h> /* 標準ライブラリに関する情報を取り込む */

/*
* main() 関数の定義
*/

int main(){

/* 変数の宣言 */

int G; /*** 重さ ***/

int weight_1 = 0; /*** 1gのおもりの数 ***/

int weight_10 = 0; /*** 10gのおもりの数 ***/

int weight_25 = 0; /*** 25gのおもりの数 ***/

do{
printf("重さを入力してください\n"); /*** 重さの入力 ***/
scanf("%d", &G);
}while( G == 0 );

if(G < 10){ /*** Gが一桁なら ***/
weight_1 += G; /*** 全て1gのおもりにする ***/
G = 0;
}

while(G%5 > 0){ /*** Gが5の倍数でないならば ***/
G -= 1; /*** Gから1を引いて ***/
weight_1++; /*** 1gのおもりを増やす ***/
}


while((G > 40)||(G = 25)){ /*** Gが40以上、または25ならば ***/
G -= 25; /*** Gから25を引いて ***/
weight_25++; /*** 25gのおもりを増やす ***/
}


while(G >= 10){ /*** Gが10以上なら ***/
G -= 10; /*** Gから10を引いて ***/
weight_10++; /*** 10gのおもりを増やす ***/
}


printf("%dgは25gのおもり%d個、10gのおもり%d個、1gのおもり%d個で表せる",G,weight_25,weight_10,weight_1); /*** 結果を表示 ***/


return 0; /*** 0を返す ***/

}

ここまで書いてコンパイルした結果、エラーが出なかったので実行したら数値の入力で止まってしまうんです。
どこをどう修正したらいいんでしょうか?
エラーを吐き出してくれないのでどこをどう直していいんだが分かりません・・・。