当前课程知识点:C语言程序设计(上) > 数据计算实现与顺序结构程序设计(一) > 2.1 算术运算的C程序实现 > 2.1.7 自增自减运算
接下来我们看
第二个程序设计里边特有的计算
自增自减运算
什么叫自增自减
变量自身加1或者减1
常量肯定不可以
是变量自身的加1和减1
怎么写 我们写成这样
这是自增量
i是什么 就是变量
变量减减 减减变量
这样写 实际上就等价于什么
比如说自增
就等价于说
i计数了一次
i自减了一次
等价于这这样一个运算
大家看
既然等价于就是说
我用这个式子完全实现的是这个结果
为什么要有它
大家回来看
从最简单的 字面上看的是
这个式子里边做了一次加法
做了一次赋值
然后
字符是有5个
而在i++里边只有三个
如果我是程序员的话
我每天都在录入
我肯定喜欢录i++
我不喜欢录i等于i加1
我不愿意敲5个 我愿意敲3个
另外从实现这个计算的角度上来说
这种计算在内存里
直叠去做这个计算
自增比i加1在赋值要快的多
按照这个
自增的说法 我们给大家几种
在程序里边常用的几种最简单的算法
我们看这种
两个数相加
送到第三个变量里
我们把它叫做加法
但是 同样是做加法
如果我是这样加
还送到t里边
这就不是一般的加法
是什么加法 累加
相当于我有个盒子
我不断的到这个盒子里边扔一个x
慢慢的这个盒子会装满
而前面的这个加法 就不是这样子了
a加b两个任意数相加
送到第三个变量里
永远都是两个任意数相加
送到第三个变量里
而这块不是这样
是说 一个变量
不断的给这个变量累加
这叫累加
第三个 如果我累加的不是x
比如说 这个累加的x
我们可以这样说 比如学生成绩
给全班的同学求平均分
我是怎么做
肯定是拿一个累加器
把全班同学的分数
这个人85那个人93那个人67
x是不一样的
这个加法是加什么
加的是一个等量的n
是个常量
比如说加5 在t里边加5加5加5
大家看 是不是这个步长是一样
就是5 5
就是从5 10 15 20这样子
加3加3这样子
这种 实际上我们是
按步长在计数
就不是叫累加了
这个算法通常实现的是
按步长在计数
如果我们把n变成1
是不是就是刚才这种形式
就是t 给t里边送的什么
永远在加1加1
跟时钟是一样的
i++跟时钟是一样的 这种算法
在程序控制里边
用的是非常多的
它可以记录到循环的次数
它就是一个计数器
就是一个时钟 所以
有必要把它做简单的一个专门的处理
按照加法往下推的话
比如说 大家看这个
这个非常像什么 非常像这个
这个叫累加 那这个叫累乘
就是给这个乘法器里边
拿上一次的结果再乘以一个新的数
送到这个乘法器里边
这几种
简单的算法
在程序设计里边是时常会用到的
这里边 再回到自增自减这块来说
i++与++i
这两个有什么不同
我们把它写在一行上
它都等价于
i加上1送到i里边
它两个有什么区别
还是有很重要的区别
也就是说
i里边的内容原来是哪个数
你取出来 你取的是那个数
用的是那个数
用完了这个数以后
我们再加1
++i不是这样
先给这里边增量 增量1
增量完了 再使用
也就是说 你使用的实际上是
增量以后的内容
所以
比如说
输出的i++
输出的是3还是4
按照i++输一定输出的是
它原来的内容
应该是3 输出的是3
输出完了以后 i里边是什么
i里边自动增量成4了
也就是说输出的是3 但是
内存里现在存的是4
对于下边的
++i就不同了
你输出的是什么
输出的是先增量
增量完了再输出
输出的是4
内存里的i也是4
所以 这两个对应的是
下边++i是
输出的值先变成4 把它输出
然后保存的和输出的是一样的
它的意思就相当于
这一定是对谁 对一个内存变量
我们这给了一个内存变量
这个内存变量
我们给它的名字是i
执行i++的时候
实际上你做了这么一件事
i++是说
你把这原来的3输出
然后 原来内存里的内容变成了4
而执行++i的时候
你本来先变成4
把4输出 里边呢
存的就是你输出的那个4
-1.1 计算机的问题求解方法
--讨论题:数学模型
-1.1 计算机的问题求解方法--作业
-1.2 C语言与C程序
--讨论题:运算符
-1.3 C语言处理系统与程序调试运行
--例程
-1.4 程序中的人机交互
--例程
--作业讨论区
-2.1 算术运算的C程序实现
--算术混合运算.c
-2.1 算术运算的C程序实现--作业
-2.2 关系运算的C程序实现
--bukao.c
--字符比较.c
--讨论题:比较大小
-2.2 关系运算的C程序实现--作业
-第二周作业--作业
-2.3 逻辑运算的C程序实现
--计算结合性
--闰年.c
--自动购票问题.c
-2.3 逻辑运算的C程序实现--作业
-2.4 位运算的C程序实现
--讨论题:位运算
-2.5 几种很个别的运算
--讨论题
--讨论题
-2.5 几种很个别的运算--作业
-2.6 混合运算及数据类型转换
--讨论题:数据类型
-2.7 顺序结构程序实例
--Video
--三角形面积.c
--讨论题:工业产值
-2.7 顺序结构程序实例--作业
-3.1 程序中的路径选择实现
--打印学生成绩.c
--一元二次方程.c
-3.1 程序中的路径选择实现--作业
-3.2 路径中的再选择——嵌套判断
--例程
--讨论题:程序改错
-3.2 路径中的再选择——嵌套判断--作业
-3.3 复杂判断问题的C程序设计
--3.3 多级选择
--银行存款.c
--讨论题:多级选择
-3.4 多分支问题的C程序设计
--加减乘除运算.c
-3.4 多分支问题的C程序设计--作业
-3.5 GOTO的适当使用
-3.6 选择结构的程序实例
--3.6 程序展示
--计算第几天.c
--讨论题:输出奇数
--讨论题:计算税金
-3.6 选择结构的程序实例--作业
-第四周作业--作业
-4.1 需要重复执行的程序
--求和.c
--打印学生成绩.c
--统计录入速度.c
--求平均数.c
-4.1 需要重复执行的程序--作业
-4.2 至少要执行一次的循环
--n的阶乘.c
--字符分类统计.c
-4.2 至少要执行一次的循环--作业
-4.3 已知循环次数用for语句
--求和问题.c
--数列求和.c
--讨论题:循环语句
-4.3 已知循环次数用for语句--作业
-4.4 循环控制——简单循环应用
--水仙花数.c
--讨论题:死循环
--讨论题:猜数字
-循环结构的程序设计(一)--4.4 循环控制——简单循环应用
-4.5 循环的嵌套
--讨论题:程序运行
-4.5 循环的嵌套--作业
-4.6 break与continue
--最大素数.c
-4.6 break与continue--作业
-4.7 循环的综合应用
--数的排列组合.c
--鸡兔同笼.c
--打印空心字符.c
--讨论题:打印图形
--讨论题:计算闰年
-第六周作业
-第六周作业--作业
-5.1 同类有序数据处理问题
-5.2 一维数组的定义和引用
--数组定义.c
--数组初始化.c
--反向输出.c
--讨论题:对称数
-5.2 一维数组的定义和引用--作业
-5.3 一维字符串数组
--讨论题:编程
-5.4 字符串处理函数
--字符串反向.c
--字符串函数
-5.5 二维数组的定义与使用
-5.6 二维数组的输入输出
-5.6 二维数组的输入输出--作业
-5.7 二维数组的应用
--转置矩阵.c
--讨论题:修改程序
-5.8 二维字符数组
--5.8 单词排序
--单词排序.c
-5.8 二维字符数组--作业
-5.9 数组综合应用
--统计成绩.c
--统计字符次数.c
--讨论题:洗牌
-本期课程结束语
--end
-第八周编程作业
-《C语言程序设计(上)》期末复习参考
--html
-《C语言程序设计(上)》期末复习参考答案
--html