当前课程知识点:C语言程序设计(上) >  循环结构的程序设计(一) >  4.3 已知循环次数用for语句 >  4.3.2--循环的应用-求和

返回《C语言程序设计(上)》慕课在线视频课程列表

4.3.2--循环的应用-求和在线视频

4.3.2--循环的应用-求和

下一节:求和问题.c

返回《C语言程序设计(上)》慕课在线视频列表

4.3.2--循环的应用-求和课程教案、知识点、字幕

我们接下来看一下

for循环应用的一些实例

我们先看求和

这是最简单的

我们一直往下走

我们大家考虑

从宏观上讲这道题是不是

δ一个x

就是x是

1/2 2/3 3/4

那我们这个x每一次是在变的

但是这个变化是有规律的

1/2 2/3

我们看不管是分子还是分母

往后都增量1

那我们把这个放到循环里边

我们看循环题里边是不是第一件事情就是

要找这个x

而x又是有规律的

和计数器相关的

那么在找到了x

你就给它累加和就做这两件事

我们在编译环境下调一下这个程序

看一下结果

这样

不是0了 这是一个正确的结果

如果我们再给一个数

说是30

这个结构是这样

那我们现在说

我能不能把这道题变成

任意数的

这个数是任意项数求和

我们需要怎么做呢

如果是任意的项数求和

我们只要做一件事scanf

说你在这里边呢

你读进来一个n好不好

那我们这里边说

我百分号什么呢

百分号一个整型数n

然后

百分号d

然后呢

我要的是n

那你这块的这呢

就不要写30了 写成n

可不可以

那这个n呢

也是一个整型数

那scanf后边 别忘了给分号

那现在大家看 这个循环的次数

就是任意的 不一定是你给的常数次

是20次30次 我们看一下

那我现在给n 是刚才的20

它得到说 对20你求的和是这样

给一个50 它是这样求

那我们把

如果你从键盘上通过人机交互的方式

读进了这个n

这个程序就变成一个通用的程序

什么通用 任意项数求和

任意项数 这个数列是任意的

我们再来看一道例题 斐波那契数列

这个数列大家都知道

是这样的一个规律

我们看1 1 2 3

大家看到 5是2和3的和

8是3和5的和

也就说 中间的任一个数

这个数列里的任一个数

等于前边两项之和

那我们这个题目里边相当于要做什么呢

输入一个n

我要生成n项的这么一个数列

并且把生成的这个数列输出

以及把这些数列求和输出

那么看里边的核心是什么

生成当前这个数

并且要产生下一个前两个数

比如说我们要生成89的时候

我们把89生成了

我们还要把a1a2改变成

a1改变成34 a2改变成55

因为原来的a1是21 a2是34

是它俩生成的55

那我下一个要生成89的时候

a1变成了34 a2变成了55

这是我们循环题里要做的事

那我们把这个程序

直接拿过去 复制

复制到我们这个环境下

这里边已经有了

有了那我们直接看在这里边

前两个数列里边的前两个数a1a2

我们通过初始化的形式给它了

那s和t我们看是干嘛呢

t是在循环题里边

产生的当前这个数

那s呢

s是在求和的 s等于求累加和的

那我们在这个程序的里边

先读进了n就是你要多少项

我期望的是要n项我先读进来这个n

然后前两项我们先输出

因为前两项是已知的

都是1 a1a2是1

进入循环的入口从1开始

到小于等于n

每步增长1

在这里边我们看第一件事情

产生新的 当前新的数t

是前两个数之和

然后把新产生的这个数输出

把t输出

下边呢 求和

那下边这两项是做的什么呢

产生新的a1和a2

a1就是把a2放在a1里

把新的这个t放在a2里

产生了新的a1a2

已被这个for循环回去

在这下一个生成下一个新的t

所以这一块大家一定要注意

一个关键的环节就是

要产生新的a1和a2

然后当前这个数是前两个数之和

这是我们循环题里要做的事

跳出循环的时候输出s

那在循环题里边我们看输出的是谁

是这个t 每一个新的t

而进入循环之前

我们输出了前两个项

大家运行一下这个程序看一下

为了方便我们给这数列给小一点

给6吧

这是前两个数1 1

再下来2 3 5 8 13

没问题13是5和8的和

那5是2和3的和

我们说了刚才给的n是6

那我们这个数列是6项吗

8项 不是6项

那问题在哪呢

问题是在于 前边这两项已经有了

是已知的

那我们这个循环的初值

是不是一定从1开始呢

对这件事情来说 这个数列来说

这块应该改成3

那循环的次数是从3到小于等于n

它就没有问题了

就应该输出的是产生的新的数

然后再已知的前两个数

好了运行一下看 我们还给6

大家看 产生的

没有问题 和是18

那我们再运行一下给一个比较大的数

给一个30

我们看这个数列里边

这就比较

这个格式上

我们看这个数列排列下来这就容易混起来

把它再清楚的看一下

让它的输出前边 是给一个格式

这个前边我们也是给它一个格式

陪个域 让它每个隔得远一些

看一下还给30

这个没有对齐 但是数据隔开了

大家看到每一个数据是隔开了

而且这块我们想让它在新的一行上

让它换行

再运行一下

给30

我们现在看了前面这两个没有换行

下边的每一个都换了一个新的行

这是为什么呢

是因为我们在循环题里边给的数让它换行

这样是不是不是我们所要的

这个换行我们实际上是想说

你把s搁到另一个行上

再运行

大家看现在这里边的这个数据

是错位的

这就是我们大家说的

你每一个数据都给域是10

你产生的后边的数列的位数不一样了

这种情况下你怎么样能让它对整的

就是在你的屏幕上对整的好一些

斜杠t是一个好的方法

这个大家可以下去试一下

就说你使你的这个输出的数据看上去

每一列是对齐的比较好

那么是这个域这步域是绝对的

而这个斜杠t是一个相对的

是位数多了这个空格就会少

是这样的一个关系

大家可以把这个程序下去

把格式也调好看了

然后数列产生的位数

就是数列的个数可以不同

那我们要小心看一下

当你把这个n给的足够大的时候

这个数列还能不能正确的输出

如果不能 为什么

大家可以做一个考虑

C语言程序设计(上)课程列表:

从问题到C语言程序设计

-1.1 计算机的问题求解方法

--1.1.1--程序设计面向的问题

--1.1.2--关于计算

--1.1.3-1关于算法-算法的特征

--1.1.3-2关于算法——算法的表示

--1.1.3-3关于算法——算法的优化

--1.1.4-1-程序设计方法

--1.1.4-2-程序设计方法

--讨论题:数学模型

-1.1 计算机的问题求解方法--作业

-1.2 C语言与C程序

--1.2.1-1-C概述

--1.2.1-2-C概述

--1.2.2-C初步

--讨论题:运算符

-1.3 C语言处理系统与程序调试运行

--1.3.1C程序如何调试运行

--1.3.2常用C语言处理系统

--1.3.3DEVC++的使用-v1

--1.3.4C语言概貌小程序

--例程

-1.4 程序中的人机交互

--1.4 printf用法

--1.4.2 scanf的用法

--例程

--作业讨论区

数据计算实现与顺序结构程序设计(一)

-2.1 算术运算的C程序实现

--2.1.1 第二章

--2.1.2 C语言算术表达式概念

--2.1.3 算术运算的实现

--2.1.4 整数相除

--2.1.5 输入格式造成的计算错误

--2.1.6 求余运算

--2.1.7 自增自减运算

--2.1.8 复合运算

--fangcheng.c

--fangcheng-1.c

--fangcheng-2.c

--fangcheng-3.c

--fangcheng-4.c

--算术混合运算.c

--讨论题:自增自减符

--讨论题:程序输出结果

--讨论题:程序运行结果

-2.1 算术运算的C程序实现--作业

-2.2 关系运算的C程序实现

--2.2.1 关系比较问题

--2.2.2 C语言关系表达式

--2.2.3关系运算优先级

--2.2.4 用关系运算做判断条件

--2.2.5 程序实例

--2.2.6 字符比较

--bukao.c

--pingshifen-1.c

--panduanzhengshu.c

--pingshifen-2.c

--字符比较.c

--讨论题:比较大小

--讨论题:程序的运行

-2.2 关系运算的C程序实现--作业

-第二周作业--作业

数据计算实现与顺序结构程序设计(二)

-2.3 逻辑运算的C程序实现

--2.3.1 逻辑运算问题~1

--2.3.2 逻辑运算表达式

--2.3.3 如何判断闰年

--2.3.4 逻辑运算优先级

--2.3.5 条件运算符

--计算结合性

--2.3.7 一个简单实例

--闰年.c

--自动购票问题.c

--讨论题:逻辑表达式

-2.3 逻辑运算的C程序实现--作业

-2.4 位运算的C程序实现

--2.4.1 什么是位运算

--2.4.2 位运算有哪些

--2.4.3 位运算怎么用

--讨论题:位运算

-2.5 几种很个别的运算

--2.5 几个很个别的运算

--讨论题

--讨论题

-2.5 几种很个别的运算--作业

-2.6 混合运算及数据类型转换

--2.6 混合运算及数据类型转换

--讨论题:数据类型

-2.7 顺序结构程序实例

--2.7.1 第一个程序:三角形

--Video

--三角形面积.c

--讨论题:工业产值

--讨论题:程序无效结果

-2.7 顺序结构程序实例--作业

选择结构的程序设计

-3.1 程序中的路径选择实现

--3.1.1_1 第三章

--3.1.1_2 神奇的if_else

--打印学生成绩.c

--一元二次方程.c

-3.1 程序中的路径选择实现--作业

-3.2 路径中的再选择——嵌套判断

--3.2.1_1 if语句的嵌套

--3.2.1_2三个数排序1029

--例程

--3.2.2 用户登录检查

--三个数排序_未优化.c

--三个数排序_优化.c

--讨论题:程序改错

-3.2 路径中的再选择——嵌套判断--作业

-3.3 复杂判断问题的C程序设计

--3.3 多级选择

--银行存款.c

--讨论题:多级选择

-3.4 多分支问题的C程序设计

--3.4.1 switch语句表达式

--3.4.2 加减乘除计算

--3.4.3 几类说明

--加减乘除运算.c

--讨论题:关于switch

-3.4 多分支问题的C程序设计--作业

-3.5 GOTO的适当使用

--3.5 GOTO的适当使用

-3.6 选择结构的程序实例

--3.6 程序展示

--计算第几天.c

--存款利息__switch实现.c

--讨论题:输出奇数

--讨论题:计算税金

-3.6 选择结构的程序实例--作业

-第四周作业--作业

循环结构的程序设计(一)

-4.1 需要重复执行的程序

--4.1.1----第四章~1

--4.1.2---while实现先判断后循环~1

--4.1.3----while循环的应用-录入速度~1

--求和.c

--打印学生成绩.c

--统计录入速度.c

--求平均数.c

-4.1 需要重复执行的程序--作业

-4.2 至少要执行一次的循环

--4.2.1至少要执行一次的循环

--4.2.2-do-while循环应用

--成绩录入_do while实现.c

--n的阶乘.c

--字符分类统计.c

--讨论题:关于while

-4.2 至少要执行一次的循环--作业

-4.3 已知循环次数用for语句

--4.3.1--用for语句控制循环次数

--4.3.2--循环的应用-求和

--求和问题.c

--斐波那契数列问题.c

--数列求和.c

--讨论题:循环语句的不同

--讨论题:循环语句

-4.3 已知循环次数用for语句--作业

-4.4 循环控制——简单循环应用

--4.4.1-循环的应用-找数-水仙花数

--4.4.2--循环的应用-求素数

--水仙花数.c

--讨论题:死循环

--讨论题:continue和break

--讨论题:猜数字

-循环结构的程序设计(一)--4.4 循环控制——简单循环应用

循环结构的程序设计(二)

-4.5 循环的嵌套

--4.5.1 循环的嵌套——九九乘法表

--4.5.2 循环的嵌套——打印三角形

--打印九九乘法表.c

--打印实心三角图案.c

--打印空心三角图案.c

--讨论题:程序运行

-4.5 循环的嵌套--作业

-4.6 break与continue

--4.6 循环中断与继续循环——break再讨论

--最大素数.c

--求正数个数及平均数.c

-4.6 break与continue--作业

-4.7 循环的综合应用

--4.7.1 数的排列组合问题

--4.7.2 循环综合应用——穷举算法

--4.7.3 循环综合应用——满足条件的数

--4.7.4 循环综合应用——求最后三位数

--4.7.5 循环综合应用——打印空心图案

--数的排列组合.c

--数的排列组合优化.c

--鸡兔同笼.c

--找满足条件的数.c

--输出14的13次方的最后三位数.c

--打印空心字符.c

--讨论题:打印图形

--讨论题:打印空心图形

--讨论题:计算闰年

-第六周作业

--虚拟实验:循环程序设计实验

-第六周作业--作业

数组(一)

-5.1 同类有序数据处理问题

--5.1.0 数组开篇

--5.1.1 同类有序数据存储问题

--讨论题:下标变量与下标

-5.2 一维数组的定义和引用

--5.2.1_1 数组的定义~1

--5.2.1_2 数组的初始化

--5.2.2 一维数组的输入输出

--5.2.3 一维数组的应用1--成绩排序(选择法)~2

--5.2.4 一维数组的应用2--Fibonacci数列

--数组定义.c

--数组初始化.c

--输出大于平均值的数.c

--反向输出.c

--选择法_成绩排序.c

--求斐波那契数列前n项.c

--讨论题:对称数

--讨论题:关于'\0'

-5.2 一维数组的定义和引用--作业

-5.3 一维字符串数组

--5.3 一维字符串数组11.24~1

--用函数测试字符串长度.c

--讨论题:编程

-5.4 字符串处理函数

--5.4 字符数组的输入与输出

--字符串反向.c

--字符串函数

--讨论题:程序如何运行

--讨论题:黑色星期五

数组(二)

-5.5 二维数组的定义与使用

--5.5 二维数组定义

--二维数组的定义与初始化.c

-5.6 二维数组的输入输出

--5.6 二维数组的输入与输出

--二位数组输出_矩阵输出.c

--讨论题:随机数据存储

-5.6 二维数组的输入输出--作业

-5.7 二维数组的应用‍

--5.7.1二维数组的应用-转置矩阵

--5.7.2 用一维数组方式引用二维数组元素

--转置矩阵.c

--找二维数组最大数.c

--讨论题:修改程序

--讨论题:关于随机数函数 rand()

-5.8 二维字符数组

--5.8 单词排序

--单词排序.c

--讨论题:回文字符串

-5.8 二维字符数组--作业

-5.9 数组综合应用

--5.9.1 应用1——学生成绩统计

--统计成绩.c

--5.9.2 应用2——删除重复字符

--删除串中的重复字符串

--5.9.3 应用3——统计字符

--5.9_4数组的应用4--矩阵相乘

--统计字符次数.c

--讨论题:洗牌

-本期课程结束语

--end

-第八周编程作业

--虚拟实验:冒泡排序算法程序设计实验

期末复习

-《C语言程序设计(上)》期末复习参考

--html

期末复习答案

-《C语言程序设计(上)》期末复习参考答案

--html

4.3.2--循环的应用-求和笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。