| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1747 人关注过本帖
标题:有一个分数序列,1/2,1/4,1/6,1/8……,求前n项的和,谁能帮我简化一下代 ...
只看楼主 加入收藏
跆拳勇士
Rank: 1
等 级:新手上路
帖 子:29
专家分:9
注 册:2017-7-21
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:2 
有一个分数序列,1/2,1/4,1/6,1/8……,求前n项的和,谁能帮我简化一下代码(for循环不改变)
#include<stdio.h>
int main()
{
    int i,n;
    float sum=0;
   
    printf("请输入所需要前n项和: ");
    scanf("%d",&n);
    n=2*n;
    for(i=2;i<=n;i+=2)
    {
        sum=sum+1.0/i;
    }
    printf("前%d项和为:%f\n",n/2,sum);
    return 0;
}
搜索更多相关主题的帖子: 分数 for 循环 改变 sum 
2017-07-21 23:41
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:7 
1+1/2+1/3+1/4+… 的一半呀
但前者没有求和公式(欧拉公式只是近似估计)
“算法上”是简化不了了,问题是怎样提高精度,但看你用float,估计精度你更不关心。
2017-07-22 00:15
lmlm1001
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:4
帖 子:107
专家分:550
注 册:2015-3-1
收藏
得分:7 
这似乎不象是来求帮助的。
如果是,请楼主斧正我的注释

#include<stdio.h>//无法简化
int main()//无法简化 参数可以改成(void)
{//无法简化
    int i,n;//无法简化
    float sum=0;//无法简化
    //可以删除
    printf(""请输入所需要前n项和: ");//本行和下一行可以简化成    printf("%*s", scanf("%d",&n), "请输入所需要前n项和: ");
    scanf("%d",&n);//同上
    n=2*n;//本行可以和下一行简化成    for( i = 2, n <<= 1; i <= n; i += 2 )但是楼主的要求是for循环不改变
    for(i=2;i<=n;i+=2)
    {//可以删除
        sum=sum+1.0/i;
    }//可以删除
    printf("前%d项和为:%f\n",n/2,sum);//可以和下一行简化成    return 0 * printf("前%d项和为:%f\n",n/2,sum);
    return 0;//同上
}无法简化
提示,代码精简有的时候可以提高执行的效率,却是以牺牲可读性为代价的,需要谨慎。
2017-07-22 21:03
快速回复:有一个分数序列,1/2,1/4,1/6,1/8……,求前n项的和,谁能帮我简化 ...
数据加载中...
 
   



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

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