| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 690 人关注过本帖
标题:求教帮我看看一个程序
只看楼主 加入收藏
天妒E
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2014-12-27
结帖率:0
收藏
已结贴  问题点数:20 回复次数:5 
求教帮我看看一个程序
用for循环语句编程求1!+2!+…+20!
程序提示:
定义int型变量sum,p
赋初始值p=1;sum=0;
输入n的值
for (i=1;i<=20,i++)
{
    p=p*i;
  sum=sum+p;
}
输出sum

是这样写的吗?
#include<stdio.h>
int mian()
{
    int sum,p;
    p=1,sum=0;
    for(i=1;i<=20,i++)
        {
    p=p*i;
  sum=sum+p;
}
    return=0
}
2014-12-27 16:00
衣冠禽兽
Rank: 1
等 级:新手上路
帖 子:4
专家分:4
注 册:2014-12-25
收藏
得分:4 
for(int i=1,sum=0;i<=20;i++)
{   
    for(int j=1,p=1;j<=i;j++)
        p=p*j;
    sum=sum+p;
}
2014-12-28 13:23
hao341202
Rank: 2
来 自:上海
等 级:论坛游民
威 望:1
帖 子:18
专家分:46
注 册:2014-12-23
收藏
得分:4 
程序代码:
#include<iostream>
using namespace std;
int main()
{
    double sum=0,p;
    for (int i = 0; i < 20; i++)
    {
        p = 1;
        for (int a = 1; a < i + 2; a++)
           p *= a;
        sum += p;
    }
    cout << sum << endl;
    system("pause");
    return 0;
}


[ 本帖最后由 hao341202 于 2014-12-28 18:18 编辑 ]
2014-12-28 18:17
stop1204
Rank: 9Rank: 9Rank: 9
来 自:福建省
等 级:贵宾
威 望:22
帖 子:295
专家分:1151
注 册:2013-9-8
收藏
得分:4 
程序代码:
#include "stdio.h"
int main()
{
    int p = 1, sum = 0, n = 20;// 你说的输入N的值,是指20吗
    for (int i = 0; i < n; ++i)
        sum += (p++);
    printf("%d", sum);
    return 0;
}

hl928452957@gmail点com

2014-12-29 17:45
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:4 
楼主的算法是正确的,但你用int,就得确保int能容纳得下结果值而不溢出。
我不能说你用int属于错误,在ILP64数据模型的编译器上int有64bits,肯定是可以的;但在其它数据模型下就溢出了,所以,你用int的话,我只能说你的代码不具有可移植性。

3楼用double,double有52bits的尾数,加上隐含的1个尾数,一共有53个有效bits。
但结果 2561327494111820313 至少需要 62bits 的有效位。
运行3楼的代码,输出是 2561327494111820300
正确应当输出 2561327494111820313

回正题,你代码中用#include<stdio.h>,这是头是C独有的,因此我认为你需要的是C代码。(但你为什么不去C板块?)
一个标准(严格遵循C标准的可移植代码)的C代码如下:
程序代码:
#include <stdio.h>
#include <stdint.h>
#include <inttypes.h>

int main()
{
    const unsigned n = 20;

    uint64_t sum = 0;
    uint64_t f = 1;
    for( unsigned i=1; i!=n+1; ++i )
    {
        f *= i;
        sum += f;
    }
    printf( "%"PRIu64"\n", sum ); // 2561327494111820313

    return 0;
}



[ 本帖最后由 rjsp 于 2014-12-30 14:37 编辑 ]
2014-12-30 09:08
菜鸡一只
Rank: 1
等 级:新手上路
帖 子:23
专家分:4
注 册:2014-12-31
收藏
得分:4 
是return 0不是return =0;其他代码是正确的!
2015-01-02 08:47
快速回复:求教帮我看看一个程序
数据加载中...
 
   



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

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