| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 523 人关注过本帖
标题:二维数组计算处 N! 怎么前面对,后面有问题啊?
只看楼主 加入收藏
yaojiali920
Rank: 2
等 级:论坛游民
帖 子:33
专家分:14
注 册:2014-2-18
结帖率:100%
收藏
已结贴  问题点数:6 回复次数:3 
二维数组计算处 N! 怎么前面对,后面有问题啊?
#include<stdio.h>
void main()
{
    int Data[100];                      /*存储40位数的整数数组*/
    int Digit;                          /*数据位数变量        */
    int i,j,r,k;                        /*循环计数变量        */
    int N;                              /*用户输入值          */

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

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

    printf("请输入一个整数:");
    scanf("%d",&N);                 /*读取用户欲求的N值   */

    for(i=1;i<N+1;i++)
    {
        for(j=1;j<Digit+1;j++)
            Data[j]*=i;               /*数组中内容的运算    */
        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+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");
    }
}         


//27!=10888869450418352160768000000
这以后就错了
搜索更多相关主题的帖子: include 用户 
2014-03-30 19:57
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:6 
你的算法重复了很多步骤,循环层数太多

把 if (Data[Digit] > 10) Digit++; 改成

  if (Data[Digit] >= 10) Digit++;


[fly]存在即是合理[/fly]
2014-03-31 13:41
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 
程序代码:
#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

int main(void)
{
    int i, j, n;
    int data[128] = {1, 1};

    scanf("%d", &n);

    for (i = 1;i <= n;i += 1)
    {
        //阶乘
        for (j = 1;j <= data[0];j += 1)
            data[j] *= i;

        //进位处理
        for (j = 1;j < data[0];j += 1)
        {
            data[j + 1] += data[j] / 10;
            data[j]     %= 10;
        }
        while (10 <= data[data[0]])
        {
            data[data[0] + 1]  = data[data[0]] / 10;
            data[data[0]++]   %= 10;
        }

        //输出结果
        printf("%03d! = ", i);
        for (j = data[0];j > 0;j -= 1)
            printf("%d", data[j]);
        printf("\n");
    }

    return 0;
}


[fly]存在即是合理[/fly]
2014-03-31 13:56
yaojiali920
Rank: 2
等 级:论坛游民
帖 子:33
专家分:14
注 册:2014-2-18
收藏
得分:0 
,我晕!学习了,谢谢
2014-04-01 12:25
快速回复:二维数组计算处 N! 怎么前面对,后面有问题啊?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018517 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved