###前提・実現したいこと
1!〜53!を計算してそれらを右揃えで出力するプログラムをC言語で作成したいのですが、無限ループのエラーが発生してしまいます。
原因がわからないので、どうしてエラーが発生するのかと、その解決方法を教えていただきたいです。
エラーメッセージは以下のとおりです。
###発生している問題・エラーメッセージ
エラーメッセージ 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004274883284060025564298013753389399649690343788366813724672000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004274883284060025564298013753389399649690343788366813724672000000000000
###該当のソースコード
c
1#include<stdio.h> 2 3void set(int process[],int size,int init_value); 4void kaijou(int process[],int); 5void print(int process[],int); 6 7int main(void){ 8 int process[20],k; 9 set(process,70,1); 10 kaijou(process,53); 11 print(process,53); 12} 13 14void set(int process[],int size,int init_value){ 15 int i; 16 17 for(i=1;i < size;i++){ 18 process[i]=0; 19 } 20 process[0]=init_value; 21} 22 23void kaijou(int process[],int n){ 24 int i,s,a,count,k; 25 count=0; 26 27 for(i=1;i<=n;i++){ 28 a=0; 29 for(s=0;s<=count;s++){ 30 process[s]=process[s]*i+a; 31 a=0; 32 if((process[s]/10000)!=0){ 33 a = process[s]/10000; 34 process[s]=process[s]%10000; 35 } 36 } 37 if(a!=0){ 38 process[s]=a; 39 count++; 40 } 41 } 42} 43 44void print(int process[], int n){ 45 int i,s,count; 46 47 for(i=1;i<=n;i++) { 48 for(s=0;s<=count;s++){ 49 if(s==count){ 50 printf("%d!=%*d",i,70-4*count,process[count]); 51 }else{ 52 for(s=count-1;s>=0;s--) 53 printf("%04d",process[s]); 54 } 55 printf("\n"); 56 } 57 } 58} 59
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。