复试C程序设计(谭浩强版)

目录

1.试述3种基本结构的特点

2.C语言中变量名只能包含数字,字母和下划线,且只能以字母和下划线开始

3.switch后面的表达式不能是浮点型,只能是整型和字符型;switch表达式后面不能加分号,可以没有default标号

4.从多层嵌套中退出不是只能使用break语句,也可以使用return或者程序自己执行完;在循环体内continue代表不执行该次循环中的剩余未执行语句,break代表直接跳出本层循环

5.二维数组的定义必须指定列数,可以不用指定行数

6.一个算法应该具有五个重要特征:①有穷性;②确切性;③输入性;④输出性;⑤可行性

7.形参的缺省存储类型

8.指针常量 和常量指针 指向常量的指针常量

9.高级语言经历的不同发展阶段

10.C语言的新特点

11.表示算法方法:

12.C语言三种基本结构:

13.数据有两种表现形式:

14.自增运算符和自减运算符

15.函数组成部分

16.break语句

17.C语言中没有字符串类型

18.’\0’代表ASCII码为0的字符

19.字符串比较规则

20.实参与形参

21.函数的返回值

22.函数不能嵌套定义但可以嵌套调用

23.指针

24.结构体

25.数据结构

26.结构化程序设计的方法

27.C语言有两种选择语句

28.关系运算符及其优先次序


1.试述3种基本结构的特点

①只有一个入口。

②只有一个出口。

③结构内的每一部分都有机会被执行到。即对每一个框来说,都应当有一条从入口到出口的路径通过它。

④结构内不存在“死循环”。

2.C语言中变量名只能包含数字,字母和下划线,且只能以字母和下划线开始

标识符只能包含数字,字母,下划线,且不能以数字开头(不能与关键字同名)

3.switch后面的表达式不能是浮点型,只能是整型和字符型;switch表达式后面不能加分号,可以没有default标号

4.从多层嵌套中退出不是只能使用break语句,也可以使用return或者程序自己执行完;在循环体内continue代表不执行该次循环中的剩余未执行语句,break代表直接跳出本层循环

5.二维数组的定义必须指定列数,可以不用指定行数

6.一个算法应该具有五个重要特征:①有穷性;②确切性;③输入性;④输出性;⑤可行性

(1)有穷性。一个算法必须总是在执行有穷步后结束,且每一步都必须在有穷时间内完成。

(2) 确定性。对千每种情况下所应执行的操作,在算法中都有确切的规定,不会产生二义性, 使算法的执行者或阅读者都能明确其含义及如何执行。

(3) 可行性。算法中的所有操作都可以通过已经实现的基本操作运算执行有限次来实现。

(4) 输入。一个算法有零个或多个输入。当用函数描述算法时,输入往往是通过形参表示的, 在它们被调用时,从主调函数获得输入值。

(5) 输出。一个算法有一个或多个输出,它们是算法进行信息加工后得到的结果,无输出的 算法没有任何意义。当用函数描述算法时,输出多用返回值或引用类型的形参表示。

7.形参的缺省存储类型

(1)c语言中形参或者说所有的变量,缺省的存储类别都是auto的

(2)C语言中的四种存储类别:auto(自动的)、static(静态的)、register(寄存器的)、extern(外部的)

注:所谓存储类型是指变量占用内存空间的方式,也称为存储方式。这4种类型 不允许重复定义 如: extern static int a=200;是错误的;只能指定一中存储类型;如;static int a =200;或者是 extern int a;

(3)变量的存储方式可分为静态存储”和“动态存储两种。

静态存储变量:在定义时候存储单元里一直保持不变;直到程序结束。

动态存储变量:在程序执行时候;使用他的时候才分配内存单元,使用完毕后立即释放,再使用在分配。

从以上分析可知,静态存储变量是一直存在的,而动态存储变量则时而存在时而消失。

(4)

  • auto:定义的整形变量a的存储方式是自动存储的,也就是说动态的分配存储空间和释放存储空间
  • static:定义的整形变量a的存储方式是静态存储的,静态局部变量是放在静态存储区内分配存储单元的,在整个程序运行期间都不释放,跟全局变量一样长期占用内存
  • register:对于一些频繁使用的变量,程序在执行的过程中,每次用到这些变量的时候,都要从内存取出来,运算完了之后还要写到内存中去,循环执行的次数越多,花费的时间就越多,为提高效率,C++允许将局部变量放在CPU的寄存器上,需要用到时直接从寄存器上取出参加运算,就不用再到内存中取(当今的优化编译系统能够识别使用频繁的变量,从而自动将这些变量放在寄存器中,而不需要设定为register。因此,用register声明变量是不必要的)
  • extern:全局变量的作用域只限于从定义那一行开始,到文件最后一行,终究只限于所在源文件中。如若想在其他源文件引用其他源文件的全局变量,则要在其他源文件声明该变量是extern的(来自外部的,其他源文件的),这样扩大了全局变量的作用域

静态全局变量:只能在其所在文件模块中的函数中使用,其他文件模块中的函数不能访问

       局部变量:只能在定义该变量的函数体内使用

      静态局部变量:在函数内定义,但当函数退出后,静态局部变量始终存在,其占用的内存单元不 会被释放,直到程序结束时才被释放。退出函数后尽管该静态局部变量还存在,但是不能使用它,如果再次调用定义该静态局部变量的函数,它又可以继续使用,而且保存了上次调用之后留下的值。

(5)c语言中每一个变量和函数都有两个属性,数据类型和数据的存储类别

(6)动态存储区存放以下数据(1)函数形式参数,在调用函数时给形参分配存储空间。(2)函数中定义的没有用关键字static声明的变量,即自动变量。(3)函数调用时的现场保护和返回地址等。

8.指针常量 和常量指针 指向常量的指针常量

常量指针:常量的值即存储单元的值不可以修改;地址可以修改。

指针常量:指针地址不可以修改;指针指向的存储单元可以被修改。  

指向常量的指针常量:地址和存储单元的值都不可以被修改。

9.高级语言经历的不同发展阶段

(1)非结构化的语言:编程风格随意,符合语法规则即可,无严格规范要求,程序流程可随意跳转,缺点难以阅读和维护。

(2)结构化语言有良好特性的基本结构(顺序结构,分支结构,循环结构),优点程序结构清晰,益于编写,阅读和维护。

(3)面向对象的语言:C++,JAVA,C#等。易于处理规模较大程序

10.C语言的新特点

表现在具有多种数据类型(如字符,数值,数组,结构体和指针等),可降低用它所写的软件对硬件平台的依赖程度,使之具有可移植性

(1)语言简洁,紧凑,使用方便,灵活。(2)运算符丰富。(3)数据类型丰富,(4)具有结构化的控制语句(5)语法限制不太严格,程序设计自由度大。(6)C语言允许直接访问物理地址,能进行位操作,既具有高级语言的功能,又具有低级语言的许多功能,这种双重性,使它既是成功的系统描述语言,又是通用的程序设计语言。(7)可移植性好。(8)生成目标代码质量高,程序执行效率高

11.表示算法方法:

自然语言,传统流程图,结构化流程图,伪代码等

12.C语言三种基本结构:

顺序结构,选择结构,循环结构。

13.数据有两种表现形式:

常量和变量

常量分为(1)整型常量,如:1000

只有整型(包括字符型)数据可以加signed或unsigned修饰符,实型数据不能加

对无符号整型数据用“%u”格式输出

(2)实型常量,十进制小数形式,由数字和小数点组成,或指数形式如 12.34e3(代表12.34*10的三次方),但e或E之前必须有数字,且E或e后面必须为整数

(3)字符常量可分为普通字符:用单撇号括起来的一个字符,‘a’,‘b’,单撇号只是一个界限符,字符常量只能是一个字符,不包括单撇号。转义字符,意思是将""后面的字符转换成另外的意义,字符串常量。

(4)符号常量这种用一个符号名代表一个常量的,即为符号常量。
变量必须先定义后使用。

14.自增运算符和自减运算符

只能用于变量,而不能用于常量或表达式,如:5++或(a+b)++都是不合法的。

15.函数组成部分

一个函数包含声明部分和执行部分

16.break语句

只能用于循环语句和switch语句之中,而不能单独使用。

有时并不希望终止整个循环的操作,而只希望提前结束本次循环,而接着执行下次循环,这时可以用continue语句

17.C语言中没有字符串类型

字符串是存放在字符型数组中的。

18.’\0’代表ASCII码为0的字符

从ASCII码表中可以查到,ASCII码为0的字符不是一个可以显示的字符,而是一个空操作符,即他什么也不做,用它来作为字符串结束标志,不会产生附加的操作或增加有效字符,只起一个供辨别的标志

strlen函数—测字符串长度的函数,函数值为字符串中的实际长度(不包括’\0’在内)

19.字符串比较规则

将两个字符串自左至右逐个字符相比较(按ASCII码值大小比较),直到出现不同的字符或遇到’\0’为止

20.实参与形参

在定义函数中指定的形参,在未出现函数调用时,他们并不占内存中的存储单元,在发生函数调用时,函数的形参被临时分配内存单元。调用结束时,形参单元被释放

注意

  • 实参单元仍保留并维持原值,没有改变,如果在执行一个被调用函数时,形参的值发生改变,不会改变主调函数的实参的值,因为实参和形参是两个不同的存储单元。
  • 实参向形参的数据传递是“值传递”,单向传递,只能由实参的值传递给形参,而不能由形参传给实参。实参和形参在内存中占有不同的存储单元,实参无法得到形参的值
  • 数组元素可以用作函数实参,不能用作形参,因为形参是在函数被调用时临时分配存储单元的
  • 用数组元素作实参时,向形参变量传递的是数组元素的值,而用数组名作函数实参时,向形参(数组名或指针变量) 传递的是数组首元素的地址

C语言编译系统并不检查形参数组大小

21.函数的返回值

通过函数中的return语句获得的,

注意:在定义函数时要指定函数的类型,在函数定义时指定的函数类型一般应该和return语句中的表达式类型一致,即函数类型决定返回值的类型,对于不带回值的函数,应当用定义函数为“void 类型”

22.函数不能嵌套定义但可以嵌套调用

.C语言特点之一就是允许函数递归调用

在调用一个函数的过程中又出现直接或间接地调用该函数本身,称为函数的递归调用。程序中不应出现无终止的递归调用,而只应出现有限次数的、有终止的递归调用,这可以用if语句来控制,只有在某一条件成立时才继续执行递归调用;否则就不再继续

23.指针

1)指针是一个地址,而指针变量是存放地址的变量

2)怎样引用指针变量:(1)&:取地址运算符,&a是变量a的地址。(2)星号:指针运算符或称间接运算符,P代表指针变量p指向的对象

3)指针类型的作用是将一个变量的地址传送到另一个函数中

4)在一定条件下允许对指针进行加和减的运算,p+1并不是将p的值加1,而是加一个数组元素所占的字节数

24.结构体

数组只能存放同一类型的数据,但有时为了存放不同类型数据,C语言就允许建立结构体:由不同类型数据组成的组合型的数据结构

25.数据结构

对数据的描述,在程序中用到的数据及其组织形式。

算法:计算机对数据的操作

26.结构化程序设计的方法

1.自顶向下

2.逐步细化

3.模块化设计,高内聚,低耦合

4.结构化设计(面向对象思想)

27.C语言有两种选择语句

if语句,用来实现两个分支的选择结构 ;

switch语句,用来实现多分支的选择结构

28.关系运算符及其优先次序

<、>、>=、<=4种关系运算符的优先级别相同,==、!=2种也相同。前4种高于后2种。

关系运算符的优先级低于算术运算符。

关系运算符的优先级高于赋值运算符。

优先次序:!(非)→&&(与)→‖(或),

即“!”为三者中最高的; 逻辑运算符中的“&&”和“‖”低于关系运算符,“!”高于算术运算符
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值