>>489
計算方法自体は結構まとも。
ただし、実用化するなら、実装は関数にした方がいい。
データも、生の int の配列よりも、struct や typedef で名前付けし、実装は隠蔽
した方がいい。
それにより、固定長だけではなく、malloc() を駆使して可変長も実装できる。
C++ であれば class にするべき。

出力ロジックが冗長なのは、桁名を配列にすれば解決する。
void PrintNumber(int Num[], int size)
{
  const char * const ColNames[] = { "", "万", "億", "兆", "京", "垓", "穰", "溝", "澗", "正", "載", "極", "恒河沙", "阿僧祇", "那由他", "不可思議", "無量大数" };
  const int NumOfColNames = sizeof(ColNames) / sizeof(const char *);
  char *s = "";
  int i;
  for(i = size - 1; i > 0; i--)
    if(Num[i]) break;
  if(i < 0)
    { puts("0"); return; }
  for(; i >= NumOfColNames; i--)
    if(Num[i]) { printf("%s%d単位%d", s, Num[i], i); s = " "; }
  for(; i >= 0; i--)
    if(Num[i]) { printf("%s%d%s", s, Num[i], ColNames[i]); s = " "; }
  putchar('\n');
}