返回:贺老师课程教学链接  项目要求

【项目1:分数的累加】
编程序。输出1/3-3/5+5/7-7/9…+19/21的结果
提示:假设直接解决上面的问题有困难。能够设计一条“由易到难”的路线,逐渐解决当中要解决的问题,让自己的思路明朗起来。
(1)1+2+...+20  ——这个应该会
(2)1+1/2+1/3+…+1/20  ——分数的累加,注意两个整型相除。商也为整型。而显然求和结果应该是小数
(3)1/2+2/3+3/4+…+19/20  ——分子不全是1了,找找规律。稍加修改就好了
(4)1/2-2/3+3/4-…+19/20   ——要累加的值一正一负倒腾,用pow(-1,i)是个效率非常低的做法,不推荐使用。

技巧:专门设置一个变量s表示累加项的符号,取值随着循环,每次乘以-1。从而在+1、-1之间变化。循环加求和的累加要用累加的项(i/(i+1))乘以这个表示符号的s。
(5)1/3-3/5+5/7-7/9…+19/21  ——这是我们的目标。

品品这样的思路。一口吃不成胖子,学会一口一口吃饭。用心编程,再大的障碍,也会一个一个地排除。

[參考解答]

(1)1+2+...+20  ——这个应该会

//用for循环完毕,其它循环自行完毕
#include <stdio.h>
int main( )
{
int sum=0,i;
for(i=1; i<=20; ++i)
sum+=i;
printf("%f\n", sum);
return 0;
}

(2)1+1/2+1/3+…+1/20  ——分数的累加,注意两个整型相除,商也为整型。而显然求和结果应该是小数

//用for循环完毕,其它循环自行完毕
#include <stdio.h>
int main( )
{
int i;
double sum=0; //注意结果将为小数
for(i=1; i<=20; ++i)
sum=sum+1.0/i; //注意是1.0/i,而不能是1/i
printf("%f\n", sum);
return 0;
}

(3)1/2+2/3+3/4+…+19/20  ——分子不全是1了,该找找规律了。也不是从1開始加了

#include <stdio.h>
int main( )
{
int i;
double sum=0;
for(i=2; i<=20; ++i)
sum=sum+(double)(i-1)/i; //注意是(double)(i-1)/i;,而不能是(i-1)/i
printf("%f\n", sum);
return 0;
}

(4)1/2-2/3+3/4-…+19/20   ——要累加的值一正一负倒腾。用pow(-1,i)是个效率非常低的做法,不推荐使用。技巧:专门设置一个变量s表示累加项的符号,取值随着循环,每次乘以-1,从而在+1、-1之间变化,循环加求和的累加要用累加的项(i/(i+1))乘以这个表示符号的s。

#include <stdio.h>
int main( )
{
int i,s=1;
double sum=0;
for(i=2; i<=20; ++i)
{
sum=sum+s*(double)(i-1)/i; //用s乘以被加的分数,考虑了待加项的符号
s=-s; //-是一目的负号运算符,获得s的相反数,以此将循环中在+1和-1间交替
}
printf("%f\n", sum);
return 0;
}

思考:将循环体内的两条语句换一下会如何?一定要换,须要进行如何的调整?

(5)1/3-3/5+5/7-7/9…+19/21  ——这是我们的目标。品品这样的思路。一口吃不成胖子,学会一口一口吃饭。用心编程,再大的障碍,也会一个一个地排除。

#include <stdio.h>
int main( )
{
int i,s=1;
double sum=0;
for(i=1; i<=10; ++i) //i和以下加数是相关的
{
sum=sum+s*(double)(2*i-1)/(2*i+1); //按循环变量变化规律。相邻的两个奇数将相除
s=-s;
}
printf("%f\n", sum);
return 0;
}

思考:假设for循环这样写,程序该如何改?

#include <stdio.h>
int main( )
{
int i,s=1;
double sum=0;
for(i=1; i<=19; i+=2)
{
sum=sum+s*____________________; //使相邻的两个奇数将相除
s=-s;
}
printf("%f\n", sum);
return 0;
}

《C语言及程序设计》实践參考——分数的累加的更多相关文章

  1. 《C++语言基础》实践參考——数组作数据成员

    返回:贺老师课程教学链接 [项目5 - 数组作数据成员]阅读教材P255例8.4.注意到类中的数据成员能够是数组.设计一个工资类(Salary),当中类的数据成员例如以下: class Salary ...

  2. C++实践參考——二进制文件浏览器

    [项目-二进制文件浏览器] (1)做一个相似BinaryViewer的查看二进制文件的程序.输入文件名称后,能够以16进制和ASCII对比的方式列出该文件的内容.能够參考下图: 提示:循环中,一次读入 ...

  3. C++项目參考解答:累加求圆周率

    [项目-累加求圆周率] 用例如以下公式求π的近似值(计算直到最后一项的绝对值小于10−5) π4=1−13+15−17+... [參考解答] #include <iostream> usi ...

  4. 《C语言及程序设计初步》网络课程主页

    题记 CSDN要开在线教育频道,向我发出邀请,看能否开些课程. 我近日一直在关注着翻转课堂,试图在传统课堂中引入新的元素,这须要资源建设的积累.没有时间表的工作,非常难把握. 为CSDN做在线课程,为 ...

  5. C语言及程序设计[套餐]课程主页

    课程链接:http://edu.csdn.net/combo/detail/30,提供全部的视频和课件下载. 三部分的课程主页.提供了为每一课时配套的自測.演示样例下载,以及程序阅读.程序填空.实践项 ...

  6. 【算法】C语言趣味程序设计编程百例精解

    C语言趣味程序设计编程百例精解 C/C++语言经典.实用.趣味程序设计编程百例精解(1)  https://wenku.baidu.com/view/b9f683c08bd63186bcebbc3c. ...

  7. 2014秋C++第5周项目1參考-见识刚開始学习的人常见错误

    课程主页在http://blog.csdn.net/sxhelijian/article/details/39152703,实践要求见http://blog.csdn.net/sxhelijian/a ...

  8. ANTLR4权威參考手冊(一)

    写在前面的话: 此文档是对伟大的Terence Parr的著作<the definitive antlr4 reference>的翻译本.致敬!欢迎转载,请注明原地址,请尊重劳动成果.翻译 ...

  9. 学习笔记之TCP/IP协议分层与OSI參考模型

    1.协议的分层      ISO在制定标准化OSI之前,对网络体系结构相关的问题进行了充分的讨论, 终于提出了作为通信协议设计指标的OSI參考模型.这一模型将通信协议中必要 的功能分成了7层.通过这些 ...

随机推荐

  1. vue - utils for extract-text-webpack-plugin

    描述:将包或包中的文本提取到单独的文件中, 点击查看官网详情: https://www.npmjs.com/package/extract-text-webpack-plugin

  2. WebDriver API——第3部分Action Chains

    The ActionChains implementation, class selenium.webdriver.common.action_chains.ActionChains(driver) ...

  3. windows下ACE安装使用教程(转)

    ACE简介:ACE是一个跨平台的用于并发通信的C++框架.它提供了丰富的C++封装器和框架组件.使用ACE,开发者可以开发出高性能,实时的通信服务和应用.ACE利用进程间通信,事件分离,动态链接和并发 ...

  4. Cannot make a static reference to the non-static method的解决方法

    报错原因:在一个类中写了一个public String getContent()方法和一个main()方法,getContent()方法中包含了getClass()方法,在main()方法中直接调用了 ...

  5. Android实战技巧之三十八:Handler使用中可能引发的内存泄漏

    问题描写叙述 曾几何时,我们用原来的办法使用Handler时会有以下一段温馨的提示: This Handler class should be static or leaks might occur ...

  6. STL源码剖析(迭代器)

    在STL中,容器跟算法是分开设计的,算法是通过迭代器来对容器进行操作的. 在算法运用迭代器的时候,可能会用到其相应的型别,例如返回值为容器中元素的型别,又或者说根据迭代器的类型来选择更好的算法等等. ...

  7. 09-hibernate单表操作(1)

    1,单一主键 2,基本类型 3,对象类型 4,组件属性 5,单表操作 单一主键 常用生成策略: assigned 有程序员生成(手工) native 由数据库底层,如果是mysql是increment ...

  8. (转)职责链设计模式(Chain of Responsibility)

    Chain of Responsibility定义Chain of Responsibility(CoR) 是用一系列类(classes)试图处理一个请求request,这些类之间是一个松散的耦合,唯 ...

  9. 带有key参数的函数filter,map,max,min

    内置函数———filter def is_not_empty(s): return s and len(s.strip()) > 0 filter(is_not_empty, ['test', ...

  10. python内置函数、匿名函数、递归

    python3--内置函数 内置函数: 截止到python 3.6.2 版本,现在python一共提供了68个内置函数:即python提供给你直接可以拿来使用的所有函数.   内置函数  (点击函数查 ...