zoukankan      html  css  js  c++  java
  • 求小于一个数n的所有数的阶乘

    /*求给定一个数N,<=N的所有数的阶乘,输出!
    由于计算量过大时,计算机不能再处理那些庞大的数据,所以要依靠数组来实现所有数字的乘法与加法
    */

    View Code
    #include<stdio.h>
    int main()
    {
    int n;
    while(scanf("%d",&n) != EOF)
    {
    printf("0! = 1\n");//对于所有给定的数,先输出0的阶乘
    if(n > 0)//如果N > 0,则首先输出1的阶乘
    printf("1! = 1\n");
    int data,i;
    //首先定义一个变量data,又来标记所有小于N的数
    for(data = 2;data <= n; data++)
    {
    //首先定义一个数组用来存放数据
    int a[1000] = {1};
    //然后定义一些数据处理过程中用到的变量
    int temp,top = 0,j,carry = 0,i,k = 0;
    for(i = 2;i <= data; i++)
    {
    for(j = 0;j <= k; j++)
    {
    temp = a[j]*i+carry;//对于数组中的每一个元素,都必须做一次乘法然后加上上一次操作十进制所进的数carry;
    a[j] = temp%10;//每一个单元只存放临时变量temp的个位数据
    carry = temp/10;//计算临时变量temp的十进制数据
    }
    //下面的操作就是把carry中剩余的数据放到数组中
    while(carry)
    {
    k++;
    a[k] = carry%10;
    carry /= 10;
    }
    }
    printf("%d! = ",data);
    for(i = k;i >= 0; i--)
    {
    printf("%d",a[i]);
    }
    printf("\n");
    //输出数组中的数据进行循环操作
    }
    printf("\n");
    }
    return 0;
    }
  • 相关阅读:
    Android虚拟机 修改IMEI
    Android 真机调试缺少sqlite3
    DouBan FM API
    MySQL 常用命令[不断更新中]
    通过QRCode生成二维码与解码
    Ant 批量打包Android Umeng多渠道版本
    Centos服务器常用配置集合
    MTU详解
    openvswitch-with-conntrack_nat
    NAT介绍及NAT设备类型
  • 原文地址:https://www.cnblogs.com/SDUTYST/p/2423699.html
Copyright © 2011-2022 走看看