| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1224 人关注过本帖
标题:100!的精确值是多少?编好程序后,测试没有输出?请大侠们帮忙看看
取消只看楼主 加入收藏
powerfrank
Rank: 2
等 级:论坛游民
帖 子:31
专家分:37
注 册:2018-4-25
结帖率:80%
收藏
已结贴  问题点数:15 回复次数:2 
100!的精确值是多少?编好程序后,测试没有输出?请大侠们帮忙看看
100!的精确值是多少?

#include <stdio.h>
#include <stdlib.h>

#define BAI 100
#define WU 5
#define SW 100000
#define W 10000
#define Q 1000
#define S 10

void js_jie ( int [] , int , int  ) ; //计算阶

void sc_jieguo ( int [] , int ) ; //输出结果

int pdws ( int[] , int ) ; //判断元素的数值位数

int main ()
{
    int jieguo[BAI] , i = BAI , n = BAI ;

    //计算并显示 阶 的结果;
    js_jie(jieguo , i , n );

    sc_jieguo ( jieguo , i ) ;

    system ( "pause" ) ;

    return 0 ;
}

void js_jie ( int jieguo[] ,  int i , int n )
{
    int  y ;

    for ( i = 0 ; i < n ; i ++ )
    {
        jieguo[i] = 0 ;
    }

    jieguo[0] = 1 ;

    for ( int x = 1 ; x <= n ; x ++ )
    {   
        //判断数组元素存放数值最大的i值
        for ( i = x-1 ; i >= 0 ; i -- )
        {
            //确定i值后进行计算,把i赋值给y做记号
            if ( jieguo[i] > 0 )
            {
                y = i ;
                int y1=0 , y2=0 ;
                //从i=0的数组元素开始进行计算,直到i=y+1
                for ( i = 0 ; i <= y+1 ; i ++ )
                {
                    y1 = ( jieguo[i] * x + y2 ) % SW ;
                    y2 = jieguo[i] * x / SW ;
                }
            }
        }

    }

    return ;

}

void sc_jieguo ( int p[] , int i )
{
    int x ;
    for ( x = i ; x >= 0 ; x --) //找出
    {
        if ( p[x] > 0 ) break ;
    }

    //计算后输出

    printf("100!的精确值是%d",p[x]);
   
    for ( int y = x - 1 ; y >= 0 ; y -- )
    {
        switch( pdws(p , y) )
        {
        case 5 :break;
        case 4 :printf("0") ;break;
        case 3 :printf("00") ;break;
        case 2 :printf("000") ;break;
        case 1 :printf("0000") ;break;
        }

        printf("%d",p[y]);   
    }

    printf("\n");
}

int pdws ( int p[] , int n )
{
    int i ;

    i = ( p[n]/W > 0 ) ? WU : ( ( p[n]/Q > 0 ) ? ( WU - 1 ) : ( (p[n]/BAI > 0 ) ? ( WU - 2 ) : ( p[n]/S > 0 ? ( WU - 3 ) : ( WU - 4 ) ))) ;

    return i ;
}
搜索更多相关主题的帖子: define int for break printf 
2018-12-12 16:45
powerfrank
Rank: 2
等 级:论坛游民
帖 子:31
专家分:37
注 册:2018-4-25
收藏
得分:0 
回复 4楼 rjsp
非常感谢!
我早上重新查了下发现有好几个错误,改了下,现在代码可以用了。哈哈。

#include <stdio.h>
#include <stdlib.h>

#define BAI 100
#define SW 100000

void js_jie ( int [] , int , int  ) ; //计算阶并把结果存放在一维数组里面

void sc_jieguo ( int [] , int ) ; //输出结果

int main ()
{
    int jieguo[BAI] , i = BAI , n = BAI ;

    //计算并显示 阶 的结果;
    js_jie(jieguo , i , n );

    sc_jieguo ( jieguo , i ) ;

    system ( "pause" ) ;

    return 0 ;
}

void js_jie ( int jieguo[] ,  int i , int n )
{
    int  y ;

    for ( i = 0 ; i < n ; i ++ )
    {
        jieguo[i] = 0 ;
    }

    jieguo[0] = 1 ;

    for ( int x = 1 ; x <= n ; x ++ )
    {   
        //判断数组元素存放数值最大的i值
        for ( i = x-1 ; i >= 0 ; i -- )
        {
            //确定i值后进行计算,把i赋值给y做记号
            if ( jieguo[i] > 0 )
            {
                y = i ;
                int y1=0 , y2=0 ;
                //从i=0的数组元素开始进行计算,直到i=y+1
                for ( int j = 0 ; j <= y+1 ; j ++ )
                {
                    y1 = ( jieguo[j] * x + y2 ) % SW ;
                    y2 = ( jieguo[j] * x + y2 ) / SW ;      //错误修正
                    jieguo[j] = y1 ;   // 错误修正
                }

                break ;   // 错误修正
            }
        }

    }

    return ;

}

void sc_jieguo ( int p[] , int i )
{
    int x ;
    for ( x = i ; x >= 0 ; x --) //找出存放结果最高位的数组元素
    {
        if ( p[x] > 0 ) break ;
    }

    //计算后输出

    printf("100!的精确值是%d",p[x]);
   
    for ( int y = x - 1 ; y >= 0 ; y -- )
    {
        printf("%05d",p[y]);     //错误修正
    }

    printf("\n");
}

[此贴子已经被作者于2018-12-13 10:48编辑过]

2018-12-13 10:39
powerfrank
Rank: 2
等 级:论坛游民
帖 子:31
专家分:37
注 册:2018-4-25
收藏
得分:0 
回复 5楼 powerfrank
93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000
2018-12-13 10:44
快速回复:100!的精确值是多少?编好程序后,测试没有输出?请大侠们帮忙看看
数据加载中...
 
   



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

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