大一第一学期期末C语言程序设计笔记(四)

1、语句

switch后面括弧内的表达式和case后的常量表达式,可以是整型表达式或字符型表达式。 

每一个case的常量表达式的值必须互不相同,否则就会出现相互矛盾的现象(对表达式的同一个值,有两种或多种执行方案)。

default是可选的。当所有case中常量表达式的值都没有与表达式的值匹配时,如果switch中有default就执行default后面的语句。如无default则一条语句也不执行。

2、数组

注意: C语言对数组不作越界检查,使用时要注意

一维数组:数组必须先定义,后使用

  只能逐个引用数组元素,不能一次引用整个数组

  数组元素表示形式:数组名[下标]  (其中:下标可以是常量或整型表达式)

  数组不初始化,其元素值为随机数

      对static数组元素不赋初值,系统会自动赋以0值

  只给部分数组元素赋初值 

  当全部数组元素赋初值时,可不指定数组长度

3、选择排序

排序过程:

(1)首先通过n-1次比较,从n个数中找出最小的, 将它与第一个数

         交换第一趟选择排序,结果最小的数被安置在第一个元素位置上

2)再通过n-2次比较,从剩余的n-1个数中找出关键字次小的记录,

        将它与第二个数交换第二趟选择排序

3)重复上述过程,共经过n-1趟排序后,排序结束

 

 

4、冒泡排序

 

 

 

 

 

5、字符串

 

 

 

 

 

 

 

 

 

 

6输入字符串长度<数组维数>

 

 

 

 

 

 

 

 

 

 

7字符串输入函数gets

格式:gets(字符数组)

功能:从键盘输入一以回车结束的字符串放入字符数组中,

           并自动加‘\0’

说明:输入串长度应小于字符数组维数

8、字符串输出函数puts

格式:puts(字符数组)

功能:向显示器输出字符串(输出完,换行)

说明:字符数组必须以‘\0’结束

9、字符串比较函数strcmp

格式:strcmp(字符串1,字符串2)

功能:比较两个字符串

比较规则:对两串从左向右逐个字符比较(ASCII码),

                    直到遇到不同字符或‘\0’为止

返值:返回int型整数,a. 若字符串1< 字符串2, 返回负整数

                                        b. 若字符串1> 字符串2, 返回正整数

                                        c. 若字符串1== 字符串2, 返回零

说明:字符串比较不能用“==”,必须用strcmp

10、字符串长度函数strlen

格式:strlen(字符数组)

功能:计算字符串长度

返值:返回字符串实际长度,不包括‘\0’在内

11、字符串连接函数strcat

格式:strcat(字符数组1,字符数组2)

功能:把字符数组2连到字符数组1后面

返值:返回字符数组1的首地址

说明:字符数组1必须足够大

            ‚连接前,两串均以‘\0’结束;连接后,串1的‘\0’取消,

               新串最后加‘\0’

12、字符串拷贝函数strcpy

格式:strcpy(字符数组1,字符串2)

功能:将字符串2,拷贝到字符数组1中去

返值:返回字符数组1的首地址

说明:字符数组1必须足够大

        ‚拷贝时‘\0’一同拷贝,不能使用赋值语句为一个字符数组赋值

 

1、注意:必须有且只能有一个名为main的主函数

C程序的执行总是main函数开始,在main中结束

函数不能嵌套定义,可以嵌套调用

2、使用库函数应注意:

1、函数功能

2、函数参数的数目和顺序,及各参数意义和类型

3、函数返回值意义和类型

4、需要使用的包含文件

3函数的返回值

返回语句

形式:return(表达式);return   表达式;return;

功能:使程序控制从被调用函数返回到调用函数中,同时把返值带给调用函数

说明:函数中可有多个return语句

  若无return语句,遇}时,自动返回调用函数

  若函数类型与return语句中表达式值的类型不一致,按前者为准,自动转换------函数调用转换

4、函数名(实参表)

说明:实参与形参个数相等类型一致按顺序一一对应

  实参表求值顺序,因系统而定

5、函数说明

对被调用函数要求:必须是已存在的函数

库函数:  #include <*.h>

用户自定义函数函数类型说明

函数说明

一般形式:函数类型 函数名(形参类型  [形参名],.. );函数类型 函数名();

作用:告诉编译系统函数类型、参数个数及类型,以便检验

  函数定义函数说明不同

函数说明位置:程序的数据说明部分(函数内或外)

下列情况下,可不作函数说明

1若函数返值是charint型,系统自动按int型处理int型函数可不作函数说明

2被调用函数定义出现在主调函数之前

3有些系统(Borland C++)要求函数说明指出函数返值类型和形参类型,并且对void 和 int 型函数也要进行函数说明

6、实参与形参

实参必须有确定的值

形参必须指定类型

形参与实参类型一致,个数相同

若形参与实参类型不一致,自动按形参类型转换———函数调用转换

形参在函数被调用前不占内存;函数调用时为形参分配内存;调用结束,内存释放

7、参数传递方式

1值传递方式

方式:函数调用时,为形参分配单元,并将实参的值复制到形参中;

  调用结束,形参单元被释放,实参单元仍保留并维持原值

特点:形参与实参占用不同的内存单元单向传递

2)地址传递

方式:函数调用时,将数据的存储地址作为参数传递给形参

特点:形参与实参占用同样的存储单元双向传递

  实参和形参必须是地址常量或变量

8函数的嵌套与递归调用

C规定:函数定义不可嵌套,但可以嵌套调用函数

说明C编译系统对递归函数的自调用次数没有限制

  每调用函数一次,在内存堆栈区分配空间,用于存放函数变量、返回值等信息,  所以递归次数过多,可能引起堆栈溢出

递归问题处理的条件

  1可以把一个问题转化为一个新的问题,而这个新问题的解决方法与原问题的解法相同,只是处理的对象有所不同,但它们也只是有规律的递增或递减。

2可以通过转化过程使问题得到简化。

3必定有一个明确的结束条件,否则递归将会无休止地进行下去。也就是说必须要有某个终止递归的条件。

9、数组作为函数参数

1)数组元素作函数实参——值传递

2)数组名作函数参数

地址传递

在主调函数与被调函数分别定义数组,且类型应一致

形参数组大小(多维数组第一维)可不指定

形参数组名是地址变量

10、变量的存储属性

堆区(自由存储区)在运行的时候调用程序(C中的malloc)分配内存,可以在任何时候决定分配内存及分配的大小,用户自己负责在何时释放内存(如用free)。堆中的所有东西都是匿名的,这样不能按名字访问,而只能通过指针访问。 

栈区:存放自动变量。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元由编译器自动释放,超出其作用域外的操作没有 定义。栈内存分配运算内置于处理器的指令集中,效率很高,但分配的内存容量有限。栈存放函数的参数值,局部变量的值等。 

代码区:存放函数体的二进制代码 

静态数据区:内存在程序启动的时候才被分配,而且可能直到程序开始执行的时候才被初始化,如函数中的静态变量就是在程序第一次执行到定义该变量的代码时才被初始化。所分配的内存在程序的整个运行期间都存在,如全局变量,static变量等。 

11变量的存储类型

auto   -----自动型

register-----寄存器型

static  ------静态型

extern  -----外部型

12局部变量--内部变量

定义:在函数内定义只在本函数内有效

说明:

main中定义的变量只在main中有效

不同函数中同名变量,占不同内存单元

形参属于局部变量

可定义在复合语句中有效的变量

局部变量可用存储类型auto     register    static 默认为auto

13、全局变量--外部变量

定义:在函数外定义,可为本文件所有函数共用

有效范围:从定义变量的位置开始到本源文件结束,及有extern说明的其它源文件

  若外部变量与局部变量同名,则外部变量被屏蔽

外部变量可用存储类型缺省    static

外部变量说明:  extern    数据类型    变量表;

外部变量定义与外部变量说明不同

14、静态存储:程序运行期间分配固定存储空间

    动态存储:程序运行期间根据需要动态分配存储空间

    静态变量:从程序开始执行到程序结束

    动态变量:从包含该变量定义的函数开始执行至函数执行结束

15、

 

 

 

 

 

 

 

 

 

 

 

 

 

局部变量默认为auto

register型变量个数受限,且不能为long, double, float

局部static变量具有全局寿命局部可见性

局部static变量具有可继承性

extern不是变量定义,可扩展外部变量作用域

 

 

转载于:https://www.cnblogs.com/Cigare-mayi/p/3525212.html

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值