/* ==================
 ゾロ目チェック
777や333や22や9999だったらゾロ目。
１桁ではゾロ目と判定されない。

====[例]12345の場合====

１の位を記憶する。
1の位 = 12345 % 10(=5)

ステップ１
　10の位と1の位を比較。
　同じだったら次のステップへ。
　違っていたらゾロ目ではない。終了。
ステップ２
　100の位と1の位を比較。
　同じだったら次のステップへ。
　違っていたらゾロ目ではない。終了。
以下繰り返し。

1234 % 10 = 4・・・10の位（ここで1の位と10の位が等しくないのでゾロ目ではない。）
123 % 10 = 3・・・100の位
12 % 10 = 2・・・1000の位
1 % 10 = 1・・・10000の位
終了
=================== */

#include <stdio.h>
#include <stdlib.h>

int double_num(int); /* ゾロ目チェック関数（ゾロ目だと1を返す） */

int main(void)
{
 int num;
 char a[8];
 while(1){
  printf("自然数を入力して下さいゾロ。-1を入力すると終了だゾロ-->");
  num = atoi(fgets(a,8,stdin));
  /* ↑scanfでもOKだが、アルファベットを入力されると暴走するので。 */
  if(num == -1)
   break;
  if(double_num(num))
   puts("その数はゾロ目だゾロ。");
  else
   puts("その数はゾロ目ではないゾロ。");
 }
 return 0;
}

/* ゾロ目チェック（ゾロ目だと1を返す） */
int double_num(int num)
{
 int y;

 /* １桁の場合、ゾロ目ではないので終了 */
 if(!(num / 10))
  return 0;

 y = num % 10; /* １の位を記憶 */
 while(1){
  num /= 10; /* 10で割って桁を下げる。1234なら123になる。 */
  if(!num)break; /* 位が無くなると終了 */

  if(y != num % 10) /* １の位とXの位を比較。 */
   return 0; /* 違っていたら終了 */
 }
 return 1;
}

