829计算机程序简答题归纳

目录

1.函数传递时参数传值和传地址的区别

2.循环结构中break语句和continue语句的作用是什么,二者有何区别

3.指针编程的优点

4. C语言static的作用

5.高级语言和机器语言的特点

6.算法的特征

7.简述结构化程序设计的优缺点

8.一般标识符和关键字的区别

9.递归算法的优缺点

10.两种#include指令形式的区别

11.简述有几种循环形式,有什么区别

12.声明和定义的区别

13.全局变量的优点和缺点

14.C语言中有哪些存储类型

15.举例说明在C语言中如何定义符号常量,使用符号常量的优点

16. C语言中,变量为何要先定义后使用

17. 使用swicth的注意事项

18.什么是预编译,何时需要预编译

19.什么叫内存单元的地址?什么叫指针

20.友元函数与成员函数的区别

21.简述构造函数、析构函数的特点和用途

22.单一继承和多重继承的定义

23.简述经过公有继承和私有继承之后派生类中访问权限的变化

24.什么是 this 指针?它有什么作用

25.C++中静态成员有何作用?它的特点是什么

26.友元关系有何性质

27.多重继承时,构造函数和析构函数的执行顺序是如何实现的

28.谈谈你对C++三个特征的理解(简单描述一下)。 

29.指针和引用的区别

30.多态性的含义以及内容



1.函数传递时参数传值和传地址的区别

        值传递,在调用的函数中改变形参的值不会影响实参的值。如果是地址传递,实参的值会随形参的改变而改变。

2.循环结构中break语句和continue语句的作用是什么,二者有何区别

        1)reak可用于switch语句,表示跳出整个switch块,而continue则不能用于switch语句;

        2)它们都可用于循环语句的循环体,break用于立即退出当前循环,而continue仅跳过当次循内不执行continue语句后的其它语句,但下次循环还会执行。

3.指针编程的优点

        1)提高程序的编译效率和执行速度

        2)通过指针可使用主调函数和被调函数之间共享变量或数据结构,便于实现双向数据通信

        3) 可以实现动态的存储分配

        4)便于表示各种数据结构,编写高质量的程序

4. C语言static的作用

        1)在修饰变量的时候,static修饰的静态局部变量只执行一次,而且延长了局部变量的生命周期,直到程序运行结束以后才释放。

        2)static修饰全局变量的时候,这个全局变量只能在本文件中访问,不能在其它文件中访问,即便是extern外部声明也不可以。

        3)static修饰一个函数,则这个函数的只能在本文件中调用,不能被其他文件调用。static修饰的局部变量存放在全局数据区的静态变量区。初始化的时候自动初始化为0。

5.高级语言和机器语言的特点

        机器语言是计算机能直接运行的语言,就是二进制语言,机器指令的集合是计算机的机器语言,而高级语言则一定要依赖特定的操作系统的,例如java还要安装JVM和JRE就是java的运行环境。高级语言更接近于数学语言或人的语言,同时不依赖于计算机硬件,编出来的程序在所有机器上通用,而机器语言对计算机的硬件依赖性比较大,可读性差 。

6.算法的特征

        1)有穷性:算法的有穷性是指算法必须能在执行有限个步骤之后终止;

        2)确切性:算法的每一步骤必须有确切的定义;

        3)输入项:一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身定出了初始条件;

        4)输出项:一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法是毫无意义的;

        5)可行性:算法中执行的任何计算步骤都是可以被分解为基本的可执行的操作步,即每个计算步都可以在有限时间内完成(也称之为有效性)。

7.简述结构化程序设计的优缺点

        结构化程序设计方法也称传统方法,它采用结构化技术(结构化技术分析、结构化设计、结构化实现)来完成软件开发的各项任务,并使用适当的软件工具或软件工程环境来支持机构化技术的运用。

        1)优点

                ①整体思路清楚,目标明确。

                ②设计工作中阶段性非常强,有利于系统开发的总体管理和控制。

                ③在系统分析时可以诊断出原系统中存在的问题和结构上的缺陷。

        2)缺点

                ①用户要求难以在系统分析阶段准确定义,致使系统在交付使用时产生许多问题。

                ②用系统开发每个阶段的成果来进行控制,不能适应事物变化的要求。

                ③系统的开发周期长

8.一般标识符和关键字的区别

        1)标识符是在程序中使用的变量名、函数名、标号等统称为标识符。除库函数的函数名由系统定义外,其余都由用户自定义。C 规定,标识符只能是字母(A~Z,a~z)、数字(0~9)、下划线()组成的字符串,并且其第一个字符必须是字母或下划线;

        2)关键字是具有特定含义的、专门用来说明C语言的特定成分的一类单词。C语言的关键字都是用小写字母书写的,不能用大写字母书写。关键字不能用于变量名或函数名等其它场合,否则会出现编译错误,C语言定义了32个关键字。

9.递归算法的优缺点

        1)优点:结构清晰,可读性强,而且容易用数学归纳法来证明算法的正确性,因此它为设计算法、调试程序带来很大方便;

         2)缺点:递归算法的运行效率较低,无论是耗费的计算时间还是占用的存储空间都比非递归算法要多

10.两种#include指令形式的区别

           谭浩强第四版参考P68 书上68

11.简述有几种循环形式,有什么区别

  1)while循环,while循环语句的基本语法:

while(表达式){

    循环体;//或者称为语句块

}

  2) dowhile循环语句的基本语法:

do{

    循环体;//或者称为语句块

}while(表达式);

        do…while循环和while循环最大的区别是:

        do…while循环先执行循环体,再判断表达式;while循环是先判断循环体,再执行。即:while里的循环体可能1次都不会被执行;do…while循环里面的循环体至少会被执行1次。

  3)for循环

for循环语句的基本语法for(表达式1;表达式2;表达式3){
     
    循环体;//或者称为语句块

}

        表达式2没写的话会进入死循环。就算表达式1、表达式3不写,也要记得写分号。表达式1、表达式3可以写任意语句,要用逗号隔开。

12.声明和定义的区别

        函数的声明与函数的定义形式上十分相似,但是二者有着本质上的不同。声明是不开辟内存的,仅仅告诉编译器,要声明的部分存在,要预留一点空间。定义则需要开辟内存。函数的定义函数的定义是一个完整的函数单元:包含函数类型、函数名、形参及形参类型、函数体等在程序中,函数的定义只能有一次函数首部与花括号间不加分号函数的声明:

        函数声明只是对编译系统的一个说明,函数声明是对定义的函数的返回值的类型说明,以通知系统在本函数中所调用的函数是什么类型。不包含函数体(或形参)。调用几次该函数就应在各个主调函数中做相应声明函数声明是一个说明语句,必须以分号结束

13.全局变量的优点和缺点

        优点:增加了函数间数据联系的渠道。

        缺点:

                1)过多的全局变量时函数之间的“耦合性”增加,不利于程序的移植;

                2)过多的全局变量使程序的可读性变差;

                3)外部变量可加强函数模块之间的数据联系,但又使这些函数依赖这些外部变量,因而使得这些函数的独立性降低;

                 4)从模块化程序设计的观点来看这是不利的,因此不是非用不可时,建议不要使用外部变量。 建议不在必要时不要使用全局变量,因为: 全局变量在程序的全部执行过程中都占用存储单元,而不是仅在需要时才开辟单元。

14.C语言中有哪些存储类型

     四种变量存储类型说明符如下:

        1)auto

        auto称为自动变量。局部变量是指在函数内部说明的变量(有时也称为自动变量)。用关键字auto行说明, auto省略时, 所有的非全程变量都被认为是局部变量, 所以auto实际上从来不用。

        2)static

        static称为静态变量。根据变量的类型可以分为静态局部变量和静态全程变量。

                静态局部变量:它与局部变量的区别在于: 在函数退出时, 这个变量始终存在, 但不能被其它函数使用, 当再次进入该函数时, 将保存上次的结果。其它与局部变量一样。

                静态全程变量:静态全程变量就是指只在定义它的源文件中可见而在其它源文件中不可见的变量。它与全程变量的区别是: 全程变量可以再说明为外部变量(extern), 被其它源文件使用,而静态全程变量却不能再被说明为外部的, 即只能被所在的源文件使用。

         3)extern

        extern称为外部变量。为了使变量除了在定义它的源文件中可以使用外, 还要被其它文件使用。因此, 必须将全程变量通知每一个程序模块文件, 此时可用extern来说明。

        4)register

        register称为寄存器变量。

15.举例说明在C语言中如何定义符号常量,使用符号常量的优点

        使用符号常量: 在程序运行过程中,其值不能被改变的量称为常量。

        常量分类:整型﹑实型﹑字符﹑字符串常量。

        符号常量:在C语言中允许程序中的常量定义为一个标识符,这个标识符称为符号常量。 带有名字的常量定义格式: #define <符号常量> <常量>

        例如:#define AGE 35 #define M 1.9734067e9

        优点: 1)简化书写格式、减少出错率;

                    2)定义符号常量可以提高程序的可读性,便于程序的调试和修改;

                    3)符号常量不同于变量,在其作用域内不能被改变和重新赋值;

                    4)习惯上人们把符号常量名用大写字母表示,变量用小写,以示区别。

16. C语言中,变量为何要先定义后使用

        程序中使用的各种变量都应预先加以说明,即先说明,后使用。对变量的说明可以包括三个方面:数据类型、存储类型、作用域 数据类型决定数据所占内存字节数,数值取值范围,在其上可进行的操作对变量先定义后使用的目的是:

         1)凡是未被事先定义的不做为变量名,这就能保证程序中变量名使用得正确,便于编译时发现错误,避免变量名使用时出错。

         2)每个变量被指定一确定类型,在编译时就能为其分配相应的存储单元。

         3)指定每一个变量属于一个类型,便于在编译时据此检查该变量所进行的运算是否合法。

17. 使用swicth的注意事项

        1)每个case 语句的结尾不要忘了加break,否则将导致多个分支重叠(除非有意使多个分支重叠)。 
        2)不要忘记最后那个default 分支。即使程序真的不需要default 处理,也应该保留语句 default : break; 这样做并非多此一举,而是为了防止别人误以为你忘了default 处理。

        3) 在使用switch语句时,不管case分支中有几条语句,都是用”{}”将其括起来。

18.什么是预编译,何时需要预编译

        预编译又称为预处理,是做些代码文本的替换工作。处理#开头的指令,比如拷贝#include包含的文件代码,#define宏定义的替换,条件编译等,就是为编译做的预备工作的阶段,主要处理#开始的预编译指令,预编译指令指示了在程序正式编译前就由编译器进行的操作,可以放在程序中的任何位置。
        C编译系统在对程序进行通常的编译之前,先进行预处理。

        C提供的预处理功能主要有以下三种:

                1)宏定义 

                2)文件包含 

                3)条件编译

19.什么叫内存单元的地址?什么叫指针

        在计算机内部的存储器中,每一个字节单元,都有一个编号,称为地址。内存单元的编号,称为内存单元的地址。 在C++语言中,内存单元的地址称为指针。

20.友元函数与成员函数的区别

        成员函数是类定义的一部分,通过特定的对象来调用。成员函数可以隐式访问调用对象的成员,而无须使用成员操作符。友元函数不是类的组成部分,因此被称为直接函数调用。友元函数不能隐式访问类成员,而必须将成员操作符用于作为参数传递的对象。友元函数不能被继承。

21.简述构造函数、析构函数的特点和用途

    1) 构造函数特点:函数名和类名相同;公有访问属性;无函数返回类型;对象被创建之后自动调用;可以重载;可在类内或类外定义构造函数作用:初始化对象;

    2) 析构函数特点:名字特别加~;没有参数;不能重载;对象生存期时,系统自动调用;析构函数作用:在对象生存期结束之后自动执行清理工作。

22.单一继承和多重继承的定义

        1) 单一继承:一个类只从一个基类派生;

        2) 多重继承:一个类从多个基类派生。

23.简述经过公有继承和私有继承之后派生类中访问权限的变化

·公有继承之后public protected权限保持不变,private变为不可访问,私有继承之后public protected均变为private,private变为不可访问。

24.什么是 this 指针?它有什么作用

        一个类成员函数中,有时希望引用调用它的对象,对此,C++采用隐含的 this 指针来实现。 this 指针是一个系统预定义的特殊指针,指向当前对象,表示当前对象的地址。系统用 this 指针明确指出成员函数当前操作的数据成员所属的对象。实际上,当一个对象调用其成员函数时,编译器先将该对象的地址赋给 this 指针,然后调用成员函数,这样成员函数对对象的数据成员进行操作时,就隐含使用了this 指针。一般而言,通常不直接使用 this 指针来引用对象成员,但在某些少数情况下,可以使用 this 指针,如重载某些运算符以实现对象的连续赋值等。

25.C++中静态成员有何作用?它的特点是什么

        C++提供了静态成员,用以解决同一个类的不同对象之间数据成员和函数共享问题。静态成员的特点是:不管这个类创建了多少对象,其静态成员在内存中只保留一份副本,这个副本为该类的所有对象所共享。面向对象方法中还有 类属性(class attribute)的概念,类属性是描述类的所有对象的共同特征的一个数据项,对于任何对象实例,它的属性值是相同的,C++通过静态数据成员来实现类属性。

26.友元关系有何性质

        1)友元关系是不能传递的,不能被继承。如 B 类是 A 类的友元,C 类是 B 类的友元,C 类和 A 类之间,如果没有声明,就没有任何友元关系,不能进行数据共享。

        2)友元关系是单向的,不具交换性。如果声明 B 类是 A 类的友元,B 类的成员函数就可以访问 A 类的私有和保护数据,但 A 类的成员函数却不能访问 B 类的私有和保护数据。

27.多重继承时,构造函数和析构函数的执行顺序是如何实现的

        多继承时,构造函数的执行顺序是:先执行基类的构造函数,再执行对象成员构造函数,最后执行派生类的构造函数。在多个基类之间则严格按照派生类声明时从左到右的顺序来执行各基类的构造函数,而析构函数的执行顺序则正好与构造函数的执行顺序相反。

28.谈谈你对C++三个特征的理解(简单描述一下)。 

  c++三个特点:  
          封装:把对象的属性和服务结合成一个独立的系统单位,并尽可能隐蔽对象的实现细节。  
          继承:特殊类的对象拥有一般类的全部属性和服务。  
          多态:不同的对象对相同界面的接口表现出不同的行为

29.指针和引用的区别

        1)指针:指针是一个变量,只不过这个变量存储的是一个地址,指向内存的一个存储单元;引用的底层是const指针,引用同样占据一块内存

        2)引用不可以为空,当被创建的时候,必须初始化,而指针可以是空值,可以在任何时候被初始化。

30.多态性的含义以及内容

        多态性是指当不同的对象收到相同的消息时产生不同的动作。包括静态联编和动态联编。静态联编是编译时的多态性,通过重载机制实现。动态联编时运行时的多态性通过继承以及虚函数来实现。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值