科大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个字节的内存空间,用来存放字符

 

posted @ 2016-05-20 09:26  M_Lion  阅读(139)  评论(0编辑  收藏  举报