看课件的时候,没有真的很用心去听,有点急于求成,求量不求质,没有真正的思考,具体该如何解决的!
没有指定详细的计划,每天的收获很少,学习能力有待提高
第二章 数据计算实现与顺序结构程序设计
2.1 算术运算的C程序实现 + - * / %
2.2 关系运算的C程序实现 >、 >=、 <、 <=
2.3 逻辑运算的C程序实现 && || !
2.4 位运算的C程序实现 & | ^
2.5 几种很个别的运算 , () []
2.6 混合运算及数据类型转换
2.7 一个顺序结构程序实例
通过这一章学习,我们能够该知道:
- C程序中都可以实现什么计算
- 这些计算解决什么实际问题
- 用C程序实现这些计算的思维方式
- 简单计算问题的顺序结构程序设计
2.1 算术运算的C程序实现
算术运算-整数相除
算术运算-求余
算术运算-复合运算的作用
算术运算-自增与自减运算
数学算式的C语言表达-算术运算优先级
2.1算术运算(C程序中的算术表达)
程序设计语言的基本规则包括
- 常量:在程序运行期间,其值会发生变化的
- 变量:在程序运行期间,其值不变的量
- 运算符
- 表达式
函数
计算一元二次方程
讨论1:查看d的值是否>=0?
讨论2:如果a,b,c为整型,结果如何?
整数相除结果只取整数,小数部分丢失,造成后续运算结果错误(编辑器检查不出这个错误)(出现问题,但又不易查到)
1.0/3:浮点型与整型相除的时候,编译器会先把整数型转化为浮点型
讨论3:如果x1,x2为实型,结果如何?
关于实型和整形数据的在说明
基于计算机的计算思维的一个重要方面:
1. 计算机的基本存储原理
2. 存储资源的合理使用
3. 实说有效位:单精度7位
4. 实数不是精确数,将产生累计误差
整型
实型
字符型
字符串
超出表示范围的数机器如何处理?
实型数的分辨率:
最小正数:10-38 小于该数时处理为0 下溢
最大正数;10-38 大于该数时提示出错 上溢
- 实型数在计算机内部都按指数形式存放
- 实型数在运算器中都按双精度计算
- 内存的存储精度取决于对变量的定义
- 数的有效位限制在最后输出时是按存储结构和输出格式确定的
输出格式造成的计算错误
讨论:如果scanf()中使用了(“%4.2f“,&a);结果如何?
scanf()不可以指定数据格式 ”%4.2f”指定了将导致语言系统的不理解,造成原始数据错误。 注意:编译器的错误引导
有些错误编译器不告诉你,错了你都不知道你错啦
算数运算 – 小结
- 运算依赖正确的C语言表达式实现
- 整数相除可能得到实型结果,自动丢弃小数部分
- scanf()不可以指定数据格“%m.nf”(不允许规定精度,可以指定域宽)
求余运算
求余运算:a % b a除以b取余数
作用:能整除吗?
例如:一组数X中能被3整除的数有哪些?
判断方法:X%3为0吗?
main()
{
printf("%d,%d,%d,%d\n",13%2,-13%2,247%-58,-66%-15);
}
说明: 求余运算符的对象必须是整数 为什么?
得分
自增、自减运算
变量自身加(减)1(自增自减运算)
i++;++i 等价于 i = i+1
i–;–i 等价于 i = i -1
i=3;printf("%d",i++);
i=3;printf("%d",++i);
输出原来的值3,之后I的值变为4;
i 的值先变为4,之后再输出4;
- 求余多用于判断整除问题
- 自增自减于用于计数,控制循环
- 复合运算只是为了简化程序代码
关系运算的C程序实现
关系比较问题与C语言关系表达式
算数式 关系运算符 算数式
关系运算符 > >= < <= != ==
关系运算符的优先级高于赋值,低于算术
关系运算符的优先级低于算数运算
例子: a == x >= 90
比较运算符高于 恒等于运算符
例子: int i =2,j=7,a;
a=i+j%4!=0
a 的值?
算术运算符 的取模运算符的优先级高于 加法的优先级 算术运算的优先级高于关系运算符
a = 18>5>1<1<1/2
a的值?
我的理解是:
算数运算符的优先级高于关系运算符
1/2 == 0;
同级之间的关系运算符根据其结合方向
18>5吗? 假的 false 0
0>1 吗?假的 false 0
0 < 1吗?真的 ture 1
1 <0 吗?假的 false 0
a = 0;
a = 18 > 5 +1 <1 < 1/2
算术运算符的优先级高于比较运算符的
例子 x=10,y=2;表达式x-5<= x+y的值
答案:1真(true)