⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 array01.c.txt

📁 对于常见的积分一般同志都可以编写
💻 TXT
字号:
/*数组 实验  设计一个可容纳40位数的求n!的程序  */

/*===============================================*/
/*程序构思:                                     */
/*依题意可得知,本程序所运用的数据结构为“数组”,*/
/*目的为运用数组来弥补整数数据类型有限的使用范围。*/
/*我们预先声明变量为一个大小为40的数组,负责存储每一个位数的数据,*/
/*变量Digit为计算位数的变更、变量i,j,r,k为循环中所用的计数变量。*/
/*首先先将Data数组中的数据做初始值零。再令第一位数值为1,位数也为1。*/
/*再将每次相乘的乘积存回数组中。*/
/*并循序处理每个数组中超过10的数,若数值超过10,则将位数加一,*/
/*原来的数除以10,商数加前一位数的数值后存回前一位数的数组中,*/
/*再将余数存回原来位数的数组中。最后再输出每次计算后的结果。*/

/*===============================================*/
/*程序源代码                                     */
/*==============Program Description==============*/
/*程序名称: array01.c                            */
/*程序目的: 设计一个可容纳40位数的求n!程序       */
/*程序提供: 马春江                               */
/*===============================================*/

void main()
{
    int Data[40];                     /*存储40位数的整数数组*/
    int Digit;                        /*数据位数变量        */
    int i,j,r,k;                      /*循环计数变量        */
    int N;                            /*用户输入值          */

    for (i=1; i<40+1; i++)            /将数组初始值设为0    */
        Data[i]=0;

    Data[0]=1;                        /*设第0位数数组为1    */
    Data[1]=1;                        /*设第1位数数组为1    */
    Digit=1;                          /*设数据位数为1       */

    printf ("Enter a number what you want to calculus:");
    scanf ("%d", &N);                 /*读取用户欲求的N值   */

    for (i=1; i<N+1; i++)
    {
        for (j=1; j<Digit+1; j++)
            Data[j]*=1;               /*数组中内容的运算    */
        for (j=1; j<Digit+1; j++)
        {
            if (Data[j]>10)
            {
                for (r=1; r<Digit+1; r++)
                {
                    if (Data[Digit]>10)
                        Digit++;      /*当数组中的值大于10时,则位数加1*/
                    Data[r+1]+=Data[r]/10;    /*前一位数组值=前一位数组值+此位数组值除以10*/
                    Data[r]+=Data[r]%10;      /*此位数组值=此位数组值+除10取余数*/
                }
            }
        }
        printf ("%d!=", i);
        for (k=Digit; k>0; k--)       /*输出数组中的内容*/
            printf ("%d", Data[k]);
        printf ("\n");
    }
}
          
/*希望的结果                                                   */
/*Input a number what you want to calculus:34                  */
/*1!=1                                                       */
/*2!=2                                                       */
/*3!=6                                                       */
/*4!=24                                                      */
/*5!=120                                                     */
/*6!=720                                                     */
/*7!=5040                                                    */
/*8!=40320                                                   */
/*9!=362880                                                  */
/*10!=3628800                                                */
/*11!=39916800                                               */
/*12!=479001600                                              */
/*13!=6227020800                                             */
/*14!=87178291200                                            */
/*15!=1307674368000                                          */
/*16!=20922789888000                                         */
/*17!=355687428096000                                        */
/*18!=6402373705728000                                       */
/*19!=121645100408832000                                      */
/*20!=2432902008176640000                                     */
/*21!=51090942171709440000                                     */
/*22!=1124000727777607680000                                   */
/*23!=25852016738884976640000                                  */
/*24!=620448401733239439360000                                 */
/*25!=15511210043330985984000000                               */
/*26!=403291461126605635584000000                              */
/*27!=0888869450418352160768000000                             */
/*28!=304888344611713860501504000000                           */
/*29!=8841761993739701954543616000000                          */
/*30!=265252859812191058636308480000000                        */
/*31!=8222838654177922817725562880000000                       */
/*32!=263130836933693530167218012160000000                     */
/*33!=8683317618811886495518194401280000000                    */
/*34!=295232799039604140847618609643520000000                  */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -