今日でた宿題は「100の階乗までを表示できる計算機をintの行列で表せ」というもので、
intの行列 kazu[MAX] にひとけたずつ数を入力し、大きな桁を表示できるようにするというものなのですが、
現状、
#include <stdio.h> #define MAX 200 void main(void) { int kazu[MAX]; int i,j,k,x,y; /*数値を0に固定*/ for (i = 0;i < MAX;i++){ kazu = 0; } kazu[0] = 1; printf("階乗を入力する\n"); scanf("%d",&x); for (i = 1;i < x + 1;i++){ /*その回の階乗分をかける*/ for (j = 0;j < MAX;j++){ kazu[j] = kazu[j]*i; } /*繰り上げ処理*/ for (j = 0;j < MAX;j++){ if (kazu[j] > 9){ kazu[j+1] = kazu[j+1] + kazu[j]/10; kazu[j] = kazu[j]%10; } } } printf("%d の階乗は ",x); for (i = y;i > 0;i--){ printf("%d",kazu); } printf(" です。"); }
といったところまで作ったのですが、桁数を求める方法が分からないので、答えにたどりつけません。
桁数を求められれば答えにたどりつけると思うのですが……
皆さん、お力をお貸しください。