《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层.通过这些 ...
随机推荐
- Rxjava2.0 链式请求异常处理
使用Rxjava2.0的过程中,难免会遇到链式请求,而链式请求一般都是第一个抛异常,那么后面的请求都是不会走的.现在来讨论一下链式请求的一种异常处理方法.例如: 一个登录-->通过登录返回的to ...
- Android秒级编译工具Freeline
Freeline 是 Android 平台上的秒级编译方案,Instant Run 的替代品,由蚂蚁聚宝Android 团队开发,它可以充分利用缓存文件,在几秒钟内迅速地对代码的改动进行编译并部署到设 ...
- 【试水CAS-4.0.3】第01节_CAS服务端搭建及导入源代码到MyEclipse
完整版见https://jadyer.github.io/2015/07/16/sso-cas-server-demo/ /** * @see ---------------------------- ...
- python学习准备阶段(环境配置)python解释器的选择
pycharm提示No Python interpreter configgured for the project ####### 1 点击configure python interpreter ...
- async -- await 解决数据异步获取
在React组件中,也比较一下 Promise 和 Async/Await 的方法异同. 传统地使用 Promise : import React, { Component } from 'react ...
- 批量将代码中的 get_XXX 替换成 XXX
使用 sed 只需要一个命令: sed -s -i 's/set_\([A-Za-z0-9_]*\)/\1 = /g' ` find . -name '*.cs' | xargs grep -l se ...
- JS判断字符串变量是否含有某个字串的实现方法
JS判断字符串变量是否含有某个字串的实现方法 varCts = "bblText"; if(Cts.indexOf("Text") > 0 ){ aler ...
- 使用Parallel实现简单的并行操作
using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using S ...
- win 7 下vim的使用
1.gVim74.exe ftp://ftp.vim.org/pub/vim/pc/gvim74.exe 2.vimcdoc-1.9.0-setup.exe 中文说明文档 http://211.147 ...
- Effective Java-第4章
第4章 类和接口 类和接口是Java程序设计语言的核心,它们也是Java语言的基本抽象单元.Java语言提供了许多强大的基本元素,供程序员用来设计类和接口. 13. 使类和成员的可访问性最小化 要区别 ...