输出90到屏幕上并计算出要表示它需要多少个整型数及最高整型数的值。#include stdio.h #include stdlib.h #define N 90 //求N! #define ZX 10000000 //最小的8位数 #define DASHU struct shu DASHU { size_t gs; // 数组中当前元素的个数 int *kt; // 指向用于存放数据的连续内存空间中开始的那个“int”数据 }; void tuichu ( void ) ; void cheng ( DASHU * , int ); void jinwei ( DASHU * ) ; void shuchu ( DASHU ) ; int main(void) { DASHU dashu; int i; dashu.kt(int*)malloc(sizeof(int)); // 申请第一个int if(dashu.ktNULL) tuichu(); dashu.gs(size_t)1; *dashu.kt1; // 初始值为1 for(i1;iN;i) cheng(dashu, i); shuchu(dashu); free(dashu.kt); // 不再使用一定要释放 getchar(); return 0; } void tuichu ( void ) { printf(抱歉空间不够); getchar(); exit(1); // 程序退出执行 } //乘以n void cheng ( DASHU * ds, int n ) { int i; for ( i 0 ; i ds - gs ; i ) { ds-kt[i]*n; } jinwei(ds); } //进位 void jinwei(DASHU *ds) { int i; for(i0; i ds-gs-1; i) { ds-kt[i1]ds-kt[i]/ZX; ds-kt[i]%ZX; } //增加空间 if(ds-kt[ds-gs-1]ZX) // 最高int数的值超过ZX { ds-ktrealloc(ds-kt,sizeof(int)*(ds-gs1)); if(ds-ktNULL) tuichu(); ds-kt[ds-gs]ds-kt[ds-gs-1]/ZX; ds-kt[ds-gs-1]%ZX; ds-gs; } } // 输出 void shuchu ( DASHU ds ) { int i ds.gs - 1 ; // 从高位开始输出 printf(%d %d\n,(int)ds.gs, ds.kt[i]); // 输出存放阶乘的整型数的个数及最高的7位十进制数 /* 输出完整的阶乘 */ printf(%d,ds.kt[i--]); while ( i0 ) printf(%07d,ds.kt[i--]); //需要输出7位且0是必要的 putchar(\n); }输出结果20 1485711485715964481761497309522733620825737885569961284688766942216863704985393094065876545992131370884059645617234469978112000000000000000000000