| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2918 人关注过本帖
标题:求1+2!+3!+4!+…+30!。 科学计数法,保留两位小数。为什么 不能ac啊
只看楼主 加入收藏
一户
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2013-12-19
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:21 
求1+2!+3!+4!+…+30!。 科学计数法,保留两位小数。为什么 不能ac啊
#include<stdio.h>
#include<math.h>
int main()
{
    int i,j,sum;
    unsigned t=0;
    float m;
    for(i=1; i<=30; i++)
    {
        sum=1;
        for(j=1; j<=i; j++)
            sum=sum*j;
        t=t+sum;
        m=t/pow(10,7);
    }
    printf("%0.2e",m);
}
搜索更多相关主题的帖子: include 
2013-12-19 16:19
so_love
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:7
帖 子:812
专家分:4151
注 册:2013-11-25
收藏
得分:3 
t是整形。t/pow 也就变整形了吧?

一花一世界、一叶一追寻、片片花叶落、情系何人身。
2013-12-19 16:22
so_love
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:7
帖 子:812
专家分:4151
注 册:2013-11-25
收藏
得分:0 
   m=t/pow(10,7);
这个也应该拿到括号外吧?》

一花一世界、一叶一追寻、片片花叶落、情系何人身。
2013-12-19 16:25
一户
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2013-12-19
收藏
得分:0 
回复 2楼 so_love
那怎么 改呢
2013-12-19 16:27
so_love
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:7
帖 子:812
专家分:4151
注 册:2013-11-25
收藏
得分:0 
不是很理解不是ac是什么意思?16进制么?  
#include<stdio.h>
#include<math.h>
int main()
{
    int i,j,sum;
    unsigned t=0;
    float m;
    for(i=1; i<=30; i++)
    {
        sum=1;
        for(j=1; j<=i; j++)
            sum=sum*j;
        t=t+sum;
           }
    m=t/pow(10,7);

    printf("%0.2e",m);
}
试试?

一花一世界、一叶一追寻、片片花叶落、情系何人身。
2013-12-19 16:30
犬虫门心本人
Rank: 2
等 级:论坛游民
帖 子:28
专家分:26
注 册:2013-12-19
收藏
得分:3 
呵呵呵呵,楼主,如果这是一道考试题的话,凑合着答也就可以了。
说实话,这道题本身有大问题啊!
int类型的数据,就算在VC下,其与long一致:4B补码,最大表示2147483647。
您先用计算机上的计算器算算30!有多少位?
超出int的表示范围了!
改用double类型吧。而且,你的算法也稍显复杂了:有必要每次都求阶乘么?请看下面的例子:
double s = 1;
int i;

for(i = 1; i <= 30; i++)
{
    s *= i;
}
在循环里,每次算出来的s的值,就是要求和的阶乘值啊。所以,可将程序改成:
#include<stdio.h>
#include<math.h>

int main()    // 您这个主函数没有return 整型表达式; 语句啊!可是你的函数头部却明确要求返回int的啊!
// 别听你们老师吓掰掰了,老老实实用void main()吧。这样不会出错的。
{
    int i;
    double sum = 1;
    double t = 0;

    for(i=1; i<=30; i++)
    {
        sum = sum * i;
        t += sum;
        m=t/pow(10,7); // 这是啥意思啊?题目有这样的要求么?
    }

    printf("%0.2e", t);
}
我搞不懂耶,1!+2!+ …… + 30!怎么可能是小数呢?有必要什么小数保留两位么?

[ 本帖最后由 犬虫门心本人 于 2013-12-19 16:37 编辑 ]
2013-12-19 16:35
so_love
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:7
帖 子:812
专家分:4151
注 册:2013-11-25
收藏
得分:0 
数值大的话 是不是还要考虑溢出问题?


大神呢???

一花一世界、一叶一追寻、片片花叶落、情系何人身。
2013-12-19 16:37
so_love
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:7
帖 子:812
专家分:4151
注 册:2013-11-25
收藏
得分:0 
回复 6楼 犬虫门心本人
用阶乘和除以10的7次幂

一花一世界、一叶一追寻、片片花叶落、情系何人身。
2013-12-19 16:42
一户
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2013-12-19
收藏
得分:0 
还是 错了 在 oj 在线评测系统上 不能被 Accepted
2013-12-19 16:47
犬虫门心本人
Rank: 2
等 级:论坛游民
帖 子:28
专家分:26
注 册:2013-12-19
收藏
得分:0 
你题目里面没有提到要除以10的7次方啊。
再有,你如果用int main()的话,最后好歹给个return 0;好不?
2013-12-19 16:49
快速回复:求1+2!+3!+4!+…+30!。 科学计数法,保留两位小数。为什么 不能ac啊
数据加载中...
 
   



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

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