赫斌老师C语言听课笔记
养成良好的习惯:
敲一段程序就按“Cltr+S”保存代码;
程序中间记得敲空格,否则不规范的书写会使大公司直接叫你走人!
变量的本质就是内存中一段存储空间。
操作系统接收键盘输入的数据都是当作字符来接收的,所以需要输入控制符来转换。
强制格式转换:(数据类型)(表达式)eg: (int)(5.2+4.4) 最终值是9
浮点数存错所带来的问题:(循环中更新的变量不能定义成浮点型)
(因为浮点数存的是近似值;例如:你存放的是5.5,但可能他存放的就是5.4999999……)float和double都不能保证可以精确的存储一个小数,但也有些数字可以(如1.0等之类的)eg:有一个浮点型变量x,如何判断x的值是否是零?
if(|x-0.000001|<=0.000001) if(x和一个非常小的值想减所得数字的绝对值)
是零; 是零;
else else
不是零; 不是零;
eg: float i = 99.9;
printf("%f\n", i); 在VC中的输出结果是:99.900002
&&运算符是左边为假,右边不执行;
||运算符是左边为真,右边不执行。
break:
break不能直接用于if,除非if属于循环内部的一个子句;详见可用代码中的例子
在多层循环中,break只能终止距离它最近的那个循环;详见可用代码中的例子continue:
用于跳过本次循环余下的语句;
转回去判断是否需要执行下次循环
数组:
1)为什么需要数组?
为了解决大量同类型数据的储存和使用问题,为了让模拟现实世界;
2)为n个变量连续分配储存空间;
所有的变量数据类型必须相同;
所有变量所占的字节大小必须相等;
3)只有在定义数组的同时才可以赋值,其他情况下整体赋值都是错误的;
不存在多维数组,因为内存是线性唯一的;
n维数组可以当作每个元素是n-1维数组的一维数组;
----------------------
对二维数组的排序
求每一行的最大值
判断矩阵是否对称
矩阵的相乘
-----------------------
函数:
1)void max(void) //第一个void表示该函数没有返回值,
{ } //第二个void表示函数不能接收数据;
2)int main(void) //括号中的void表示该主函数不能接收数据;
{return 10;} //int表示函数返回值是int类型的
如果return后的函数值类型不是int,则最终函数返回值的类型以int为准;
3)return终止的是函数;
如何在软件开发中合理的设计函数来解决实际问题?
一个函数的功能尽量独立,单一;
多学习,多模仿牛人的代码。
函数是C语言的基本单位。
全局变量:
在所有函数外部定义的变量叫全局变量;
全局变量适用范围:从定义开始位置到整个程序结束。
局部变量:
在一个函数内部定义的变量或者函数的形参都通称为局部变量;
局部变量适用范围:只能在本函数内部使用。
全局变量与局部变量命名冲突时:
在一个函数内部如果定义的局部变量的名字和全局变量的名字一样时,局部变量会屏蔽掉全局变量。
一个指针变量无论它指向的变量占几个字节,该指针变量值占四个字节。
一个变量的地址用该变量的首字节的地址来表示。
进制转化:
二进制到八进制:从左向右,三位一段,分别转化,不够三位的左补0;
八进制到二进制:将每一个八进制分别转化为三个二进制;eg:27->010 111
二进制到十六进制:从左向右,四位一段,分别转化,不够四位的左补0;
十六进制到二进制:将每一个十六进制分别转化为四个二进制;eg:2E->0010 1110
十进制到二进制:先将十进制转化为十六进制,再转化为二进制。
补码:(视频168)(通常需要用十六进制做中间转化的桥梁)
已知十进制求二进制:
求正整数的二进制:除2取余,直至商为零,余数倒叙排序;
求负整数的二进制:先求与该负整数相对应的正整数的二进制代码,
然后将所有位取反,末尾加1,不够位数时,左边补1;
求零的二进制:全是零
已知二进制求十进制:
如果首位是0,则表明是正整数,按普通方法来求;
如果首位是1,则表明是负整数,将所有位取反,
末尾加1,所的数字就是该负数的绝对值;
如果全是零,则对应的十进制数字就是零;
二进制全部为零的含义--0000000000000 的含义
1. 数值零
2. 字符串结束标记符'\0'
3. 空指针NULL
NULL本质也是零,而这个零不代表数字零,而表示的是内存单元的编号零;
(我们计算机规定了:以零为编号的存储单元的内容不可读,不可写)
想了解更多的计算机二级C语言资源,请关注百度贴吧“塔防海贼王吧”的友情贴吧的资源分享