科大C语言笔记-1
关于C语言:
1.计算机的数据在电脑中保存是以二进制的形式.
2.编译预处理不是C语言的一部分,不占运行时间,不要加分号
3.每个C语言程序写完后,都是先编译,后链接,最后运行。(.c--->.obj--->.exe)
4.记住预定义标识符可以做为用户标识符。
C语言只有八、十、十六进制,没有二进制。但是运行时候,所有的进制都要转换成二进制来进行处理
小数的合法写法:C语言小数点两边有一个是零的话,可以不用写。
1.0在C语言中可写成1.
0.1在C语言中可以写成.1
2.333e-1 就是合法的,且数据是2.333×10-1
e前e后必有数,e后必为整数
算术表达式:+,-,*,/,%
考试一定要注意:“/” 两边都是整型的话,结果就是一个整型。 3/2的结果就是1.
“/” 如果有一边是小数,那么结果就是小数。 3/2.0的结果就是0.5
“%”符号请一定要注意是余数, %符号两边要求是整数。不是整数就错了。[注意!!!]
赋值表达式:表达式数值是最左边的数值,a=b=5;该表达式为5,常量不可以赋值。
1、int x=y=10: 错啦,定义时,不可以连续赋值。
2、int x,y;
x=y=10; 对滴,定义完成后,可以连续赋值。
3、赋值的左边只能是一个变量。
4、int x=7.7;对滴,x就是7 //int 则截断小数部分
5、float y=7;对滴,x就是7.0000000 //float,则小数部分自动加0
字符数据的合法形式::
'1' 是字符占一个字节,"1"是字符串占两个字节(含有一个结束符号)。
'0' 的ASCII数值表示为48,'a' 的ASCII数值是97,'A'的ASCII数值是65。
一般考试表示单个字符错误的形式:'65' "1"
字符是可以进行算术运算的,记住: '0'-0=48
大写字母和小写字母转换的方法: 'A'+32='a' 相互之间一般是相差32。
字符是可以进行算术运算的,记住: '0'-0=48
大写字母和小写字母转换的方法: 'A'+32='a' 相互之间一般是相差32。
八进制转义字符: ‘\141’ 是合法的, 前导的0是不能写的。
十六进制转义字符:’\x6d’ 才是合法的,前导的0不能写,并且x是小写
格式说明 |
表示内容 |
格式说明 |
表示内容 |
%d |
整型 int |
%c |
字符 char |
%ld |
长整型 long int |
%s |
字符串 |
%f |
浮点型 float |
%o |
八进制 |
%lf |
double |
%#o |
带前导的八进制 |
%% |
输出一个百分号 |
%x |
十六进制 |
%5d |
%#x |
带前导的十六进制 |
printf(“%2d”,123 ); 第二部分有三位,大于指定的两位,原样输出123
printf(“%5d”,123 ); 第二部分有三位,小于指定的五位,左边补两个空格 123
printf(“%10f”,1.25 ); 小数要求补足6位的,没有六位的补0,。结果为 1.250000
printf(“%5.3f”,125 ); 小数三位,整个五位,结果为1.250(小数点算一位)//其实输出的是0.000
printf(“%3.1f”,1.25 );小数一位,整个三位,结果为1.3(要进行四舍五入)
scanf(“a=%d,b=%d”,&a,&b)
一定要记住是以第一部分的格式在终端输入数据。考试核心为:一模一样。
在黑色屏幕上面输入的为 a=12,b=34才可以把12和34正确给a和b 。有一点不同也不行。
2、scanf(“%d,%d”,x,y);这种写法绝对错误,scanf的第二个部分一定要是地址!
scanf(“%d,%d”,&x,&y);注意写成这样才可以!
二叉树的遍历是指按照某种顺序访问二叉树中的每个结点,使每个结点被访问一次且仅被访问一次。
通过一次完整的遍历,可使二叉树中结点信息由非线性排列变为某种意义上的线性序列。也就是说,遍历操作使非线性结构线性化。
二叉树:根结点、根结点的左子树和根结点的右子树三部分组成
DLR(称为先序遍历)、LDR(称为中序遍历)和LRD(称为后序遍历)
1 先序遍历二叉树的递归算法如下: 2 void PreOrder(BiTree bt) 3 {/*先序遍历二叉树bt*/ 4 if (bt==NULL) return; /*递归调用的结束条件*/ 5 Visite(bt->data); /*访问结点的数据域*/ 6 PreOrder(bt->lchild); /*先序递归遍历bt 的左子树*/ 7 PreOrder(bt->rchild); /*先序递归遍历bt 的右子树*/ 8 }
中序遍历二叉树的递归算法如下: void InOrder(BiTree bt) {/*中序遍历二叉树bt*/ if (bt==NULL) return; /*递归调用的结束条件*/ InOrder(bt->lchild); /*中序递归遍历bt 的左子树*/ Visite(bt->data); /*访问结点的数据域*/ InOrder(bt->rchild); /*中序递归遍历bt 的右子树*/ }
后序遍历二叉树的递归算法如下: void PostOrder(BiTree bt) {/*后序遍历二叉树bt*/ if (bt==NULL) return; /*递归调用的结束条件*/ PostOrder(bt->lchild); /*后序递归遍历bt 的左子树*/ PostOrder(bt->rchild); /*后序递归遍历bt 的右子树*/ Visite(bt->data); /*访问结点的数据域*/ }
层次遍历
所谓二叉树的层次遍历,是指从二叉树的第一层(根结点)开始,从上至下逐层遍历,在同一层中,则按从左到右的顺序对结点逐个访问
malloc() 函数 #include <stdlib.h>
其原型为:void* malloc (size_t size);
【参数说明】size 为需要分配的内存空间的大小,以字节(Byte)计
【函数说明】malloc() 在堆区分配一块指定大小的内存空间,用来存放数据。这块内存空间在函数执行完成后不会被初始化,它们的值是未知的。如果希望在分配内存的同时进行初始化,请使用 calloc() 函数
分配成功返回指向该内存的地址,失败则返回 NULL
由于申请内存空间时可能有也可能没有,所以需要自行判断是否申请成功,再进行后续操作。
函数的返回值类型是 void *,void 并不是说没有返回值或者返回空指针,而是返回的指针类型未知。所以在使用 malloc() 时通常需要进行强制类型转换,将 void 指针转换成我们希望的类型
char *ptr = (char *)malloc(10); // 分配10个字节的内存空间,用来存放字符