《C语言及程序设计》实践參考——分数的累加
【项目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语言及程序设计》实践參考——分数的累加的更多相关文章
- 《C++语言基础》实践參考——数组作数据成员
返回:贺老师课程教学链接 [项目5 - 数组作数据成员]阅读教材P255例8.4.注意到类中的数据成员能够是数组.设计一个工资类(Salary),当中类的数据成员例如以下: class Salary ...
- C++实践參考——二进制文件浏览器
[项目-二进制文件浏览器] (1)做一个相似BinaryViewer的查看二进制文件的程序.输入文件名称后,能够以16进制和ASCII对比的方式列出该文件的内容.能够參考下图: 提示:循环中,一次读入 ...
- C++项目參考解答:累加求圆周率
[项目-累加求圆周率] 用例如以下公式求π的近似值(计算直到最后一项的绝对值小于10−5) π4=1−13+15−17+... [參考解答] #include <iostream> usi ...
- 《C语言及程序设计初步》网络课程主页
题记 CSDN要开在线教育频道,向我发出邀请,看能否开些课程. 我近日一直在关注着翻转课堂,试图在传统课堂中引入新的元素,这须要资源建设的积累.没有时间表的工作,非常难把握. 为CSDN做在线课程,为 ...
- C语言及程序设计[套餐]课程主页
课程链接:http://edu.csdn.net/combo/detail/30,提供全部的视频和课件下载. 三部分的课程主页.提供了为每一课时配套的自測.演示样例下载,以及程序阅读.程序填空.实践项 ...
- 【算法】C语言趣味程序设计编程百例精解
C语言趣味程序设计编程百例精解 C/C++语言经典.实用.趣味程序设计编程百例精解(1) https://wenku.baidu.com/view/b9f683c08bd63186bcebbc3c. ...
- 2014秋C++第5周项目1參考-见识刚開始学习的人常见错误
课程主页在http://blog.csdn.net/sxhelijian/article/details/39152703,实践要求见http://blog.csdn.net/sxhelijian/a ...
- ANTLR4权威參考手冊(一)
写在前面的话: 此文档是对伟大的Terence Parr的著作<the definitive antlr4 reference>的翻译本.致敬!欢迎转载,请注明原地址,请尊重劳动成果.翻译 ...
- 学习笔记之TCP/IP协议分层与OSI參考模型
1.协议的分层 ISO在制定标准化OSI之前,对网络体系结构相关的问题进行了充分的讨论, 终于提出了作为通信协议设计指标的OSI參考模型.这一模型将通信协议中必要 的功能分成了7层.通过这些 ...
随机推荐
- vue - v-text 和 v-html
1.官方有了{{data}}绑定数据了,为啥还要v-text 因为网络问题,可以我们会卡到看“{{}}”,很尴尬吧!!! => 因此推荐用v-text 2. v-html是啥? 能吃吗 , v- ...
- 算法笔记_054:Prim算法(Java)
目录 1 问题描述 2 解决方案 2.1 贪心法 1 问题描述 何为Prim算法? 此处引用网友博客中一段介绍(PS:个人感觉网友的这篇博客对于Prim算法讲解的很清楚,本文与之相区别的地方在于具 ...
- 优秀运维人员20道必会iptables面试题(转载)
(一)企业面试口试题 1.详述iptales工作流程以及规则过滤顺序? 2.iptables有几个表以及每个表有几个链? 3.iptables的几个表以及每个表对应链的作用,对应企业应用场景? 4.画 ...
- 08-hibernate注解-多对多双向外键关联
多对多双向外键 双方持有对方的集合对象 其中一方设置: //教师类 @ManyToMany(mappedBy="teachers") //mappedby表示教师交给学生来控制 ...
- 使用SQL命令查看MYSQL数据库大小
mysql> mysql> use information_schema ; /*切换到information_schema数据下*/ Database changed mysql> ...
- 深入理解linux系统的目录结构
对于每一个Linux学习者来说,了解Linux文件系统的目录结构,是学好Linux的至关重要的一步.,深入了解linux文件目录结构的标准和每个目录的详细功能,对于我们用好linux系统只管重要,下面 ...
- 大规模分布式数据处理平台Hadoop的介绍 一种可靠、高效、可伸缩的处理方案
http://www.nowamagic.net/librarys/veda/detail/1767 Hadoop是什么 Hadoop原来是Apache Lucene下的一个子项目,它最初是从Nutc ...
- 动态添加easyui 控件
jquery提供了append,appendTo方法,可以动态添加静态的html文本,在easyui中,要动态添加easyui控件要怎么做呢,下面就来介绍动态添加easyui控件. 使用方法:和添加静 ...
- 转:浅析VO、DTO、DO、PO的概念、区别和用处
原文链接 概念: VO(View Object):视图对象,用于展示层,它的作用是把某个指定页面(或组件)的所有数据封装起来. DTO(Data Transfer Object):数据传输对象,这个概 ...
- POI操作Excel导入和导出
Apache的POI组件是Java操作Microsoft Office办公套件的强大API,当中对Word,Excel和PowperPoint都有支持,当然使用较多的还是Excel.由于Word和Po ...