Advertisement

阶乘计算升级版(算了一下午终于搞对了)

阅读量:
复制代码
    #include <stdio.h>
    void Print_Factorial ( const int N );
    int main()
    {
    int N;
    	
    scanf("%d", &N);
    Print_Factorial(N);
    return 0;
    }
    /*先写写思路
    1.ans是答案数组,因为要不断的计算,答案数组还要继续转换成另一个int数组。 
    2.然后再把int数组里的每个数的值存到新的数组里。 
    */
    #include <string.h>
    void Print_Factorial ( const int N ){
    	char ans[10000];
    	int size=1,i,j,t=0; 
    	ans[0]='1',ans[1]='\0';
    	if(N<0){
    		printf("Invalid input");
    		return;
    	}
    	/*copy是从各位到个位开始存的*/
    	for(i=1;i<=N;i++){
    		char copy[10000];
    		int k=0;
    		for(j=0;j<size;j++){
    			t=t+((ans[j]-'0')*i);/*算每一位与i的成绩*/
    			copy[k++]=t%10+'0';/*将答案保存在copy这个字符数组里*/ 
    			t/=10;
    		}
    		if(t){
    			while(t){
    				copy[k++]=t%10+'0';
    				t/=10;
    			}
    		}
    		copy[k]='\0';
    		size=strlen(copy);
    		strcpy(ans,copy);/*将答案重新更新到ans里*/;
    		t=0; 
    	}
    	for(i=size-1;i>=0;i--){
    		printf("%c",ans[i]);
    	}
    }

全部评论 (0)

还没有任何评论哟~