プログラムの説明をお願いします!
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1319406053 の回答を参考にして、入力されたnに対するn!を求めるプログラムを作りました。(0<=n<10000)
実行して出力できたのですが、情けない話ですがプログラムがどう動いているのかがさっぱりわかりません。
どなたか解説をお願いします。
#include <stdio.h>
int main(void) {
int c[10000];
int i, j, t, n;
for (i=0; i<9999; i++) {
c[i] = 0;
}
c[9999]=1;
scanf("%d", &n);
for (i=1; i<=n; i++) {
t=0;
for (j=9999;j>=0; j--){
c[j] = c[j] * i + t;
t = c[j] /10000;
c[j] %= 10000;
}
}
for (i=0; i<10000; i++) { /* (1) */
if (c[i] > 0) {
break;
}
}
printf("%d", c[i++]);
for(i=i; i<10000; i++) {
printf("%04d", c[i]); /* (2) */
printf("\n");
return 0;
}
特に、
(1)ここの繰り返しは何をやっているのでしょうか?
(2)なぜ4ケタ0詰めにするのでしょうか?
よろしくお願いします。
補足
strlenで単語の長さをはかり、その長さを格納する配列を用意し、文字を格納。ひとつ先の要素をnullとする。みたいなかんじですか? strlen(buf)がなにを意味しているのか(どのような動きなのか)理解があいまいなので、詳しい流れを教えていただけませんか? 何度も申し訳ありません