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

【项目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/iprintf("%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)/iprintf("%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语言及程序设计 实践参考——个人所得税计算器switch语句版

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 返回:贺 ...

  2. C语言及程序设计 实践参考——定期存款利息计算器

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 返回:贺 ...

  3. C语言及程序设计 实践参考——个人所得税计算器if语句版

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 返回:贺 ...

  4. 法雷序列的c语言程序,程序设计实践(一).PDF

    程序设计实践(一) 程序设计实践(一): 风格.设计和实现 王新宇 2004.10.16 Outline 风格 原则 示例 设计和实践 马尔可夫链(Markov Chain) C, JAVA, C++ ...

  5. C语言课间程序设计实践报告

    <贪吃蛇>简介      玩家使用方向键操控一条长长的蛇不断吞下豆子,同时蛇身随着吞下的豆子不断变长,当蛇头撞到蛇身或障壁时游戏结束.贪吃蛇最初为人们所知的是诺基亚手机附带的一个小游戏,它 ...

  6. 《C++语言基础》实践参考——友元类

    返回:贺老师课程教学链接 [项目5-友元类] 定义下面两个类的成员函数(为体验友元类,实际上本例并不一定是一个好的设计,将两个类的合并为一个DateTime,日期.时间都处理更好) class Dat ...

  7. 《C++语言基础》实践参考——我的向量类

    返回:贺老师课程教学链接 项目要求 [项目4-我的向量类] 建立一个向量类MyVector,声明如下,请完成类的定义 class MyVector //定义向量类 { public:MyVector( ...

  8. 《C++语言基础》实践参考——考了语文数学的学生

    返回:贺老师课程教学链接 [项目4 - 考了语文数学的学生] 下面提供了类Stu的数据成员定义,和用于测试的main函数,参考如图的运行结果,完成类的定义,并用多文件形式组织程序 #include&l ...

  9. 《C++语言基础》实践参考——复数模板类

    返回:贺老师课程教学链接 [项目6-复数模板类]     阅读教材例10.1.该例实现了一个复数类,但是美中不足的是,复数类的实部和虚部都固定只能是double型的.可以通过模板类的技术手段,设计Co ...

最新文章

  1. 机器人3·15 | 赛迪「机器人国评中心」揭示机器人产品质量6大痛点!
  2. 在request.GET中捕获url参数
  3. 基础的互联网连接词汇—Vecloud微云
  4. 主动触发被动模式从而挟持无线客户端 – Passive Karma Attack
  5. 指标公式c语言源码下载,自用的一个不错的指标 (源码、附图、副图)
  6. Python 的变量作用域和 LEGB 原则
  7. Thinkphp5 请求报错
  8. Flink 1.11 Unaligned Checkpoint 解析
  9. 一套适合入门的Oracle学习视频
  10. TMUX Cheat Table:和那些妖艳贱货不一样的 TMUX 教程
  11. (4.3)符号表和符号解析
  12. stm32 F40x CCM数据区的使用
  13. 第9周 Python计算生态概览
  14. Datagridview 相关
  15. 5种方法快速定位对方IP
  16. 喜讯 | 经纬恒润荣获一汽红旗 “攻坚克难·旗志奖”
  17. Apple 公司账号续费流程
  18. 如何在计算机上注销一个用户登录,如何取消Microsoft账户登录电脑
  19. Qt的下载与安装说明(超全!)
  20. NRF905 无线模块实验

热门文章

  1. SQLServer Date
  2. 5-510寝室课后习题4.35
  3. 手把手带你撸一个cli工具
  4. 关于Jenkins部署代码权限三种方案
  5. 【GZAdmin】开源BS demo快速搭建
  6. Oracle笔记 十、PL/SQL存储过程
  7. javascript——三元操作符
  8. phoenix 开发API系列(二)phoenix 各类 api 实现方式
  9. 有助于改善性能的技巧(1)
  10. 让win7系统高速运行的优化技巧