c++各种概念题 ()
- 格式:docx
- 大小:10.40 KB
- 文档页数:2
第一单元(1-5章)基本概念练习题一、单选选择(直接在正确的选项上打勾,每题)1、下面关于C语言特点的描述,不正确的是( )。
DA、C语言兼有高级语言和低级语言的双重特点,执行效率高B、C语言既可以用来编写应用程序,又可以用来编写系统软件C、C语言是一种结构式模块化程序设计语言D、C语言的可移植性较差2、C语言规定,在一个源程序中,main函数的位置( )。
BA、必须在最开始B、可以任意C、必须在最后D、必须在系统调用的库函数的后面3、下列说法中正确的是( )。
CA、C程序书写时,不区分大小写字母B、C程序书写时,一行只能写一个语句C、C程序书写时,一个语句可分成几行书写D、C程序书写时每行必须有行号4、C语言编译程序的首要工作是( )。
AA、检查C语言程序的语法错误B、检查C语言程序的逻辑错误C、检查程序的完整性D、生成目标文件5、C语言程序经过连接以后生成的文件名的后缀为( )。
CA、.cB、.objC、.exeD、.cpp6、以下关于算法的说法中,错误的是( )。
DA、一个算法应包含有限个步骤B、在计算机上实现的算法是用来处理数据对象的C、算法的目的是为了求解D、算法中指定的操作,不能通过已经实现的基本运算执行有限次后实现7、算法是指为解决某个特定问题而采取的确定且有限的步骤,下面不属于算法的五个特性之一的是( )。
CA、确定性B、有穷性C、零个或多个输出D、零个或多个输入8、以下不属于结构化程序设计三种基本结构之一的是( )。
BA、顺序B、递归C、循环D、选择9、下列数据中,不合法的C语言实型数据是( )。
CA、0.123B、123e3C、2.1e3.5D、789.010、若变量a、i已正确定义,且i已正确赋值,以下属于合法的C语句是( )。
A、a==1B、++i;C、a=a++=5;D、a=int(i);11、已有定义int a=6; 则执行语句a+=a-=a*a;后,a的值为( )。
c基础知识试题及答案一、选择题(每题2分,共10分)1. C语言中,用于定义变量的关键字是:A. varB. letC. intD. define答案:C2. 下列哪个选项是C语言中的合法标识符?A. 2variableB. variable2C. variable-2D. variable!答案:B3. 在C语言中,以下哪个是正确的字符串字面量?A. "Hello World"B. 'Hello World'C. "Hello World'"D. 'Hello World'答案:A4. C语言中,用于计算两个整数之和的运算符是:A. +B. -C. *D. /答案:A5. C语言中,哪个关键字用于定义函数?A. functionB. defineC. funcD. int答案:D二、填空题(每题3分,共15分)1. C语言的标准输入输出库是 ________.h。
答案:stdio2. 在C语言中,用于定义一个整型变量的关键字是 ________。
答案:int3. C语言中,用于定义一个浮点型变量的关键字是 ________。
答案:float 或 double4. 在C语言中,用于定义一个字符型变量的关键字是 ________。
答案:char5. C语言中,用于定义一个布尔型变量的关键字是 ________。
答案:_Bool 或 bool(在C99标准之后)三、简答题(每题5分,共20分)1. 请简述C语言中数组的定义方式。
答案:在C语言中,数组是通过指定元素类型和元素数量来定义的。
例如,定义一个整型数组可以写作:int array[10]; 这表示定义了一个可以存储10个整型元素的数组。
2. 请解释C语言中的指针是什么。
答案:C语言中的指针是一种特殊的变量,它存储的是另一个变量的内存地址。
通过指针,程序可以直接访问和操作内存中的数据。
C++概念题汇总1. C中static有什么作用?(1)隐藏。
当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性,故使用static在不同的文件中定义同名函数和同名变量,而不必担心命名冲突。
(2)static的第二个作用是保持变量内容的持久。
存储在静态数据区的变量会在程序刚开始运行时就完成初始化,也是唯一的一次初始化。
共有两种变量存储在静态存储区:全局变量和static变量。
(3)static的第三个作用是默认初始化为0。
其实全局变量也具备这一属性,因为全局变量也存储在静态数据区。
在静态数据区,内存中所有的字节默认值都是0x00,某些时候这一特点可以减少程序员的工作量。
2.C++中const有什么用?不要一听到const就说是常量,这样给考官一种在和一个外行交谈的感觉。
应该说const 修饰的内容不可改变就行了,定义常量只是一种使用方式而已,还有const数据成员,const 参数, const返回值, const成员函数等, 被const修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。
3. C与C++各自是如何定义常量的?有什么不同?C中是使用宏#define定义, C++使用更好的const来定义。
区别:1)const是有数据类型的常量,而宏常量没有,编译器可以对前者进行静态类型安全检查,对后者仅是字符替换,没有类型安全检查,而且在字符替换时可能会产生意料不到的错误(边际效应)。
2)有些编译器可以对const常量进行调试,不能对宏调试。
4. 既然C++中有更好的const为什么还要使用宏?const无法代替宏作为卫哨来防止文件的重复包含。
5. C++中引用和指针的区别?引用是对象的别名, 操作引用就是操作这个对象, 必须在创建的同时有效得初始化(引用一个有效的对象, 不可为NULL), 初始化完毕就再也不可改变, 引用具有指针的效率, 又具有变量使用的方便性和直观性, 在语言层面上引用和对象的用法一样, 在二进制层面上引用一般都是通过指针来实现的, 只是编译器帮我们完成了转换. 之所以使用引用是为了用适当的工具做恰如其分的事, 体现了最小特权原则.6. 说一说C与C++的内存分配方式?1)从静态存储区域分配。
2、下列叙述中错误的是_______。
(标准答案:A)(A)一个C语言程序只能实现一种算法(B)一个C函数可以单独作为一个C程序文件存在(C)C程序可以由一个或多个函数组成(D)C程序可以由多个程序文件组成4、以下叙述中错误的是_____________。
(标准答案:A)(A)C语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令(B)C语言源程序经编译后生成后缀为.obj的目标程序(C)用C语言编写的程序称为源程序,它以ASCII代码形式存放在一个文本文件中(D)C程序经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件13、以下叙述中错误的是A(A)使用三种基本结构构成的程序只能解决简单问题(B)C语言是一种结构化程序设计语言(C)结构化程序由顺序、分支、循环三种基本结构组成(D)结构化程序设计提倡模块化的设计方法18、以下关于结构化程序设计的叙述中正确的是(A)一个结构化程序必须同时由顺序、分支、循环三种结构组成(B)有三种基本结构构成的程序只能解决小规模的问题(C)在C语言中,程序的模块化是利用函数实现的(D)结构化程序使用goto语句会很便捷标准答案:C19、对于一个正常运行的C程序,以下叙述中正确的是C(A)程序的执行总是从main函数开始,在程序的最后一个函数中结束(B)程序的执行总是从程序的第一个函数开始,在main函数结束(C)程序的执行总是从main函数开始(D)程序的执行总是从程序的第一个函数开始,在程序的最后一个函数中结束33、以下选项中关于程序模块化的叙述错误的是(A)把程序分成若干相对独立的模块,可便于编码和测试(B)可采用自顶向下、逐步细化的设计方法把若干独立模块组装成所要求的程序(C)把采用分成若干相对独立、功能单一的模块,可便于重复使用这些模块(D)可采用自顶向上、逐步细化的设计方法把若干独立模块组装成所要求的程序标准答案:D34、以下叙述中正确的是(A)C程序中的注释只能出现在程序的开始位置和语句的后面(B)C程序书写格式严格,要求一行内只能写一个语句(C)用C语言编写的程序只能放在一个程序文件中(D)C程序书写格式自由,一个语句可以写在多行上标准答案:D36、以下关于C语言数据类型使用的叙述中错误的是(A)若只处理“真”和“假”两种逻辑值,应使用逻辑类型(B)若要保存带有多位小数的数据,可使用双精度类型(C)整数类型表示的自然数是准确无误差的(D)若要处理“人员信息”等含有不同类型的相关数据,应自定义结构体类型38、以下叙述中错误的是(A)C程序在运行过程中所有计算都以二进制方式进行(B)C程序在运行过程中所有计算都以十进制方式进行(C)C程序中字符变量存放的是字符的ASCII值(D)所有C程序都需要编译链接无误后才能运行标准答案:B39、以下关于C语言的叙述中正确的是(A)C语言中的注释不可以夹在变量名或关键字的中间(B)C语言中的变量可以再使用之前的任何位置定义(C)在C语言算数表达式的书写中,运算符两侧的运算数类型必须一致(D)C语言的数值常量中夹带空格不影响常量值的正确表示标准答案:A43、下列叙述中错误的是A(A)一个C语言程序只能实现一种算法(B)一个C函数可以单独作为一个C程序文件存在(C)C程序可以由一个或多个函数组成(D)C程序可以由多个程序文件组成52、我们所写的每条C语句,经过编译最终都将转换成二进制的机器指令,关于转换以下说法错误的是D (A)一条C语句可能会被转换成零条机器指令(B)某种类型和格式的C语句被转换成机器指令的条数是固定的(C)一条C语句可能会被转换成多条机器指令(D)一条C语句对应转换成一条机器指令标准答案:D53、关于C语言的符号常量,以下叙述中正确的是(A)符号常量在整个程序中其中都不会被重新定义(B)符号常量的符号名是标识符,但必须大写(C)符号常量的符号名必须是常量(D)符号常量是指在程序中通过宏定义用一个符号名来代表一个常量标准答案:D57、关于算法,以下叙述中错误的是(A)一个算法对于某个输入的循环次数是可以事先估计出来的(B)同一个算法对于相同的输入必须得出相同的结果(C)某个算法可能会没有输入(D)任何算法都能转换成计算机高级语言的程序,并在有限时间内运行完毕标准答案:D58、关于C语言的变量,以下叙述中错误的是(A)由三条下划线构成的符号名是合法的变量名(B)所谓变量是指在程序运行过程中其值可以被改变的量(C)程序中用到的所有变量都必须先定义后才能使用(D)变量所占的存储单元地址可以随时改变74、以下叙述中正确的是(A)空语句就是指程序中的空行(B)花括号对{}只能用来表示函数的开头和结尾,不能用于其他目的(C)复合语句在语法上包含多条语句,其中不能定义局部变量(D)当用scanf从键盘输入数据时,每行数据在没有按下回车键(Enter键)前,可以任意修改标准答案:D75、以下叙述中正确的是(A)程序必须包含所有三种基本结构才能成为一种算法(B)如果算法非常复杂,则需要使用三种基本结构之外的语句结构,才能准确表达(C)只有简单算法才能在有限的操作步骤之后结束(D)我们所写的每条C语句,经过编译最终都将转换成二进制的机器指令标准答案:D76、以下叙述中正确的是(A)在C语言程序设计中,所有函数必须保存在一个源文件中(B)结构化程序必须包含所有的三种基本结构,缺一不可(C)只要包含了三种基本结构的算法就是结构化程序(D)在算法设计时,可以把复杂任务分解成一些简单的子任务标准答案:D77、以下叙述中正确的是(A)预定义的标识符是C语言关键字的一种,不能另作他用(B)只能在函数体内定义函数,其他地方不允许定义变量(C)常量的类型不能从字面形式上区分,需要根据类型名来决定(D)整型常量和实型常量都是数值型常量标准答案:D78、以下叙述中正确的是(A)八进制数的开头要使用英文字母o,否则不能与十进制区分开(B)英文大写字母X和英文小写字母x都可以作为二进制数字的开头字符(C)在C程序中的八进制和十进制,可以是否点数(D)整型变量可以分为int型、short型、long型、unsigned型四种标准答案:D79、以下叙述中正确的是(A)C语言程序总是从main函数开始执行(B)C语言程序所调用的函数必须放在main函数的前面(C)C语言程序中main函数必须放在程序开始位置(D)C语言程序总是从最前面的函数开始执行96、以下叙述中正确的是(A)在使用scanf函数输入整型或实数时,输入数据之间只能用空格来分隔(B)在scanf函数中的格式控制字符串是为了输入数据用的,不会输出到屏幕上(C)使用printf函数无法输入百分号%(D)在printf函数中,各个输出项只能是变量标准答案:B97、以下叙述中正确的是(A)复合语句也被称为语句块,它至少要包含两条语句(B)在scanf函数的格式中,必须有与输出项一一对应的格式转换说明(C)scanf函数中的字符串,是提示程序员的。
c的考试题及答案一、选择题(每题2分,共10分)1. C语言中,以下哪个关键字用于声明一个函数?A. intB. returnC. voidD. function答案:C2. 在C语言中,哪个运算符用于计算两个数的和?A. +B. -C. *D. /答案:A3. 下列哪个选项是C语言中的合法标识符?A. 2variableB. variable2C. variable-nameD. variable name答案:B4. C语言中,用于定义一个整型变量的关键字是?A. intB. floatC. doubleD. char答案:A5. 在C语言中,哪个函数用于计算字符串的长度?A. strlen()B. length()C. size()D. sizeof()答案:A二、填空题(每题2分,共10分)1. 在C语言中,一个基本的程序结构由______、函数和______组成。
答案:函数定义、函数调用2. C语言中,用于定义一个字符型变量的关键字是______。
答案:char3. 在C语言中,用于声明一个无返回值函数的关键字是______。
答案:void4. C语言中,用于声明一个浮点型变量的关键字是______。
答案:float5. C语言中,用于声明一个双精度浮点型变量的关键字是______。
答案:double三、简答题(每题5分,共10分)1. 请简述C语言中数组的声明方式。
答案:在C语言中,数组的声明方式为:类型名数组名[数组大小];其中类型名表示数组中元素的类型,数组名是数组的标识符,数组大小表示数组中元素的数量。
2. 请解释C语言中指针的概念。
答案:C语言中的指针是一种特殊的变量,它存储的不是普通的数据值,而是另一个变量的内存地址。
指针可以用来间接访问和操作内存中的数据,增强了程序的灵活性和效率。
四、编程题(每题15分,共30分)1. 编写一个C语言程序,计算并输出100以内所有偶数的和。
C语言必考100题本文将为您提供C语言必考100题,以帮助您更好地掌握C语言的知识点和技巧。
以下是一些常见的C语言题目,涵盖了各种难度级别和相关概念。
1. 编写一个程序,实现将两个整数进行交换的功能。
2. 编写一个程序,计算并输出斐波那契数列的前n个数。
3. 编写一个程序,判断一个给定的年份是否为闰年。
4. 编写一个程序,将一个字符串反转输出。
5. 编写一个程序,统计一个字符串中某个字符的出现次数。
6. 编写一个程序,实现冒泡排序算法对一个整型数组进行排序。
7. 编写一个程序,计算一个整型数组中的最大值和最小值。
8. 编写一个程序,将一个二维数组进行转置。
9. 编写一个程序,实现插入排序算法对一个整型数组进行排序。
10. 编写一个程序,判断一个字符串是否为回文。
11. 编写一个程序,计算并输出给定数的阶乘。
12. 编写一个程序,计算一个数的平方根。
13. 编写一个程序,实现选择排序算法对一个整型数组进行排序。
14. 编写一个程序,判断一个数是否为素数。
15. 编写一个程序,计算并输出两个数的最大公约数和最小公倍数。
16. 编写一个程序,将一个字符串中的大写字母转换为小写字母。
17. 编写一个程序,将一个字符串中的小写字母转换为大写字母。
18. 编写一个程序,实现快速排序算法对一个整型数组进行排序。
19. 编写一个程序,计算并输出给定范围内的所有素数。
20. 编写一个程序,将一个字符串中的数字字符替换为'*'。
21. 编写一个程序,计算并输出指定数的二进制表示。
22. 编写一个程序,实现二分查找算法在一个有序数组中查找指定元素。
23. 编写一个程序,实现字符数组的复制。
24. 编写一个程序,实现字符数组的连接。
25. 编写一个程序,计算并输出指定矩阵的转置矩阵。
26. 编写一个程序,实现数组的逆序输出。
27. 编写一个程序,计算并输出斐波那契数列的第n个数。
28. 编写一个程序,判断一个字符串是否为有效的IP地址。
c语言第二章试题库及答案详解C语言作为一门经典的编程语言,其试题库及答案详解对于学习者来说至关重要。
以下是C语言第二章的试题库及答案详解,内容涵盖了基本的C语言概念、数据类型、运算符和表达式等。
一、选择题1. 在C语言中,以下哪个是合法的整型常量?- A. 2023- B. 0x1A3F- C. 2023.0- D. '2023'答案: A, B2. 以下哪个选项表示的是C语言中的浮点型常量?- A. 3.14159- B. 2.5e2- C. 0.314E-2- D. All of the above答案: D3. 在C语言中,哪个运算符用于计算两个数的乘积?- A. +- B. -- C. *- D. /答案: C二、填空题1. 在C语言中,基本数据类型包括______、______、______和______。
- 答案:整型(int),字符型(char),浮点型(float),双精度型(double)2. 赋值语句的一般形式是______。
- 答案:变量名 = 表达式3. 表达式 `5 + (fl + 2) * 3 / 2` 的正确计算顺序是先计算______,然后是______,最后是______。
- 答案:括号内的表达式,乘除,加减三、简答题1. 请简述C语言中的变量声明和变量初始化的区别。
- 答案:变量声明是指告诉编译器变量的类型和名称,但不赋予其具体的值。
而变量初始化是在声明的同时赋予变量一个初始值。
2. 解释C语言中的运算符优先级及其对表达式求值的影响。
- 答案:运算符优先级决定了在没有括号的情况下,表达式中各个运算符的执行顺序。
例如,乘法和除法的优先级高于加法和减法,因此在没有括号的情况下,乘除运算会先于加减运算执行。
四、编程题1. 编写一个C语言程序,计算并输出1到10的整数之和。
```c#include <stdio.h>int main() {int sum = 0, i;for(i = 1; i <= 10; i++) {sum += i;}printf("The sum of integers from 1 to 10 is: %d\n", sum);return 0;}```2. 编写一个C语言程序,实现两个浮点数的加法,并输出结果。
C++典型概念与习题一、基本概念1.在类体内定义的成员函数默认为内联函数,在类体外定义的成员函数只有用inline修饰的才可能成为内联函数。
类体外定义类的成员函数的形式。
2.当同名的全局变量和局部变量相冲突时,可以用作用域运算符来访问全局变量3.类的静态成员是该类的所有对象所共享的成员,类可以没有静态成员。
4.如果没有显式定义构造函数,系统将隐式定义缺省的构造函数及拷贝构造函数;5.如果只显式定义了拷贝构造函数,系统仍然不隐式定义缺省的构造函数;6.如果显式定义了构造函数但没有显式定义拷贝构造函数,系统将隐式定义拷贝构造函数。
7.通过指针访问对象成员的形式8.逗号运算符的使用(优先级)9.正确理解while、do…while循环10.正确理解break,continue语句的功能11.正确理解类成员的访问特性12.理解运算符重载的概念及特点(哪些特性能改变与不能改变)13.复杂逻辑表达式的取值(结果是什么?与关系运算、赋值运算一起的混合运算、逻辑表达式优化)14.正确理解数组名作为函数的参数的意义与形式15.正确理解友元函数与类的成员函数的区别16.类和对象的概念与关系17.理解类的构造函数和析构函数是否能重载二、阅读理解(分析程序输出)1.[程序]#include<iostream>using namespace std;void fun(int a[][4], int n){for(int i=0; i<n; i++)for(int j=0; j<4; j++)if(a[i][j]<0) a[i][j]=-1;else if (a[i][j]<5) a[i][j]*=2;else if(a[i][j]<10) a[i][j]-=5;else a[i][j]=10;}int main(){int d[3][4]={-5,-4,-3,-2,-1,0,1,2,3,4,5,6}, s1=0, s2=0;fun(d,3);for(int i=0; i<3; i++)for(int j=0; j<4; j++){s1+=d[i][j];s2*=d[i][j];}cout<<"s1="<<s1<<endl;cout<<"s2="<<s2<<endl;return 0;}2.[程序]#include<iostream>using namespace std;class A{int a,b;public:A() { a=0; b=0; }void set(int t) { a=t; b=2*t; }friend void show(A *);};void show(A *t) { cout<<(t->a+t->b)<<endl; } int main() {int t=1;A a1[5], *pa=a1;for(int i=1;i<4; i++)(pa+i)->set(t+=1);pa=a1;while(pa<=&a1[4]){show(pa);pa++;}return 0;}3.[程序]#include<iostream>using namespace std;void fun(int *p,int n){if(n==0) *p=0;else if(n==1) *p=1;else *p=*(p-1)+*(p-2);}int main(){int i=0,a[10];while(i<10){fun(a+i,i);i++;}i=0;while(i<10)cout<<a[i++]<<endl;return 0;}4.[程序]#include<iostream>using namespace std;class A{protected:int a;public:A(int t=5){a=t;cout<<"a="<<a<<endl;}int geta() { return a; }};class B: public A{A t;int b;public:B(int m):t(m){b=2*m;cout<<"B()"<<endl;}void print (){ cout<<(a+b+t.geta())<<endl; }};int main(){B b1(2);b1.print();return 0;}5.[程序]#include<iostream>#include <string.h>using namespace std;void str(char *st1, char *st2, int n=-1) {char *p1=st1, *p2=st2;while(*p1++);p1-=2;if(n<0) p2+=strlen(st2)-1;else p2+=n;while(p2>=st2)*p1++=*p2--;*p2='\0';}int main(){char s1[40]="abcde", s2[]="12345", s3[]="ABCDE";str(s1,s2);cout<<s1<<endl;str(s1,s3,3);cout<<s1<<endl;return 0;}6. [程序]#include<iostream>using namespace std;class A {public:A(int t=5){ a=t; }void print() { cout<<a<<endl; }};class B:virtual public A {public:int b;B(int c):A(c){ b= 2*c; }void print( ){ cout<< b+2*a<<endl; } };class C:virtual public A {public:int c;C(int d):A(d){ c= 3*d; }void print( ){ cout<< 2*a+c <<endl; } };class D:public B,public C{public:D(int d):B(d+2),C(d+1){ }void print( ){ cout<<(a+b+c)<<endl; }};int main(){D d1(2);d1.print();d1.A::print();d1.B::print();d1.C::print();return 0;}7.[程序]#include<iostream>using namespace std;void f(int *t1,int &t2,int t3) {(*t1)++; t2+=2; t3+=3;}int main(void) {int a[2][3]={0}, *p, i=0, s1=0, s2=0;p=&a[0][0];for(i=0; i<6; i++){if(p>&a[0][0])*p+=*(p-1);p++;}f(p-2, *(p-3), *(p-4));for(p=a[0],i=0; i<3; i++) s1+=*p++;for(p=a[1],i=0; i<3; i++) s2+=*p++;cout<<"s1="<<s1<<endl;cout<<"s2="<<s2<<endl;return 0;}8. [程序]#include<iostream>using namespace std;void f (int n,int &k, int *m) {static int a=0;int b=0;if (n==1||n==2){ k=1; *m=1; }else {f(n-1, a, &b);k++;(*m)+=2;cout<<a+b<<'\n';}}int main(void) {int x=0,y=0;f(4,x, &y);cout<<"x="<<x<<'\t'<<"y="<<y<<'\n';return 0;}9. [程序]#include<iostream>using namespace std;class Base {protected:int a;public:Base(int t=0) { a=t; }virtual int fun1()= 0;int fun2( ){ return 0; }};class Add:public Base {int d;public:Add(int t1, int t2):Base(t1),d(t2) { }int fun1( ){ return a+d; }int fun2( ){ return 2*(a+d); }};class Multi:public Base {int d;public:Multi(int t1, int t2):Base(t1),d(t2) { }int fun1( ){ return a*d; }int fun2( ){ return (2*a*d); }};void fun(Base *p) {cout<<"R1 = "<<p->fun1()<<endl;cout<<"R2 = "<<p->fun2()<<endl;}int main(void) {Base *p;Add ta(2,3);Multi tm(2,3);p=&ta;fun(p);p=&tm;fun(p);return 0;}三、完善程序1.【题目】以下程序中函数fun的功能是将参数传入的整数n(n>999)的个位上的数字自增(自增后大于9则取值为9),十位上的数字自减(自减后小于0则取值为0),百位上的数字取值个位和十位原有数字中较大值,其余各位上数字不变。
C语言概念题解答选编为了切实掌握C语言的基本概念,特列出有关内容的选择题和填充题等供读者参考。
读者在自学本材料时,希望读者先自已给出解答,然后再来阅读习题的参考解答。
单项选择题1.以下字符列中,能作为C程序自定义标识符的是① num(10) ② file_bak ③ break D class + 2【解】C语言规定,C程序的标识符的命名规则是要由英文字母或下线字符开头,由英文字母、下线字符和数字符构成的字符序列,并且不可以与C语言规定的保留字相同。
在供选择的答案中,选择①含有括号字符,不是标识符,它好象是函数调用表达式;选择②符合C语言关于标识符的构成规则,所以它可以作为标识符;选择③是C语言的保留字,它不可以再被程序设定为标识符;选择④是一个加法运算算术表达式,也不可以作为程序的标识符。
所以解答是②。
2.下列字符列中,不是C语言提供的合法关键字是① switch ② begin ③ case ④ default【解】因C语言的关键字表中没有begin,它不是C语言的关键字。
所以解答是②。
3.键盘符号是指如其标记所示能显示的字符。
下列字符中属于键盘符号的是① \ ② \n ③ \t ④ \b【解】键盘符号是指键盘上有标记,并能在显示器上直接以其标记字样显示的字符。
有许多键盘上有标记的符号,它们不是用于直接显示的,键入这种字符用于表示特定的意义,如常用的回车符。
为了能让C程序标记这种符号,程序采用转义字符的方式书写这种字符。
如‘\n’、‘\t’、‘\b’都不是键盘字符,在C语言中,它们都得用转义字符来表达。
只有字符‘\’才是键盘字符。
所以解答是①。
但在C程序中,反斜杠字符\ 已特别用作转义字符的引导符,它也得用转义字符的表达形式书写,将它写成’\\’。
4.下列字符列中,不是用来表达转义字符是① \\ ② \’③ 074 ④ \0【解】转义字符有三种书写形式:反斜杠字符后接上某个规定的字符;反斜杠字符后接上1至3个八进制数字符;反斜杠字符和字符x之后接上1至2个十六进制数字符。
c 试题及答案**C语言试题及答案**一、单项选择题(每题2分,共20分)1. C语言中,用于定义变量的关键字是()。
A. intB. floatC. doubleD. var答案:A2. 下列哪个选项是C语言中的合法标识符?()A. 2variableB. variable2C. variable-2D. variable$2答案:B3. C语言中,用于表示逻辑“与”操作的运算符是()。
A. &&B. ||C. !D. &答案:A4. 在C语言中,以下哪个选项是正确的字符串字面量?()A. "Hello, World!"B. 'Hello, World!'C. "Hello, World!'"D. 'Hello, World!"'答案:A5. C语言中,用于计算两个整数相加的表达式是()。
A. a + bB. a - bC. a * bD. a / b答案:A6. 在C语言中,以下哪个选项是正确的函数声明?()A. int function(int a, int b);B. int function a, b;C. int function(int a, int b);D. int function(int, int);答案:A7. C语言中,用于表示“不等于”的运算符是()。
A. ==C. =D. <=答案:B8. 在C语言中,以下哪个选项是正确的数组声明?()A. int array[5];B. int array[];C. int array[5] = {1, 2, 3, 4, 5};D. All of the above答案:D9. C语言中,用于表示“大于等于”的运算符是()。
A. >=B. <=C. <=答案:A10. 在C语言中,以下哪个选项是正确的循环结构?()A. forB. whileC. do-whileD. All of the above答案:D二、填空题(每题2分,共20分)1. 在C语言中,用于定义一个整型变量并初始化为10的语句是:________。
思考题:
1、什么是继承?继承有哪些优点?
继承是在已有的类的基础上定义新的类,从而形成类的层次和等级,体现了了面向对象程序设计的层次性概括方法。
软件重用、接口重用。
2、C++提供几种派生方式?每种派生方式产生的派生类成员对基类成员的继承性如何?这些派生类的对象对基类成员的继承性又是怎样的?
3种
3、派生类对象能否访问基类的成员函数?怎样访问?
如上图
4、派生类构造函数的构造规则和执行顺序是怎样的?
根据派生类构造函数初始化列表的顺序依次调用基类构造函数对基类数据成员初始化
子对象数据成员类的构造函数(如果有子对象数据成员的话)
派生类构造函数体内的代码
5、派生类析构函数的构造规则和执行顺序是怎样的?
派生类析构函数
子对象数据成员类的析构函数(如果有子对象数据成员的话)
基类的析构函数
6、基类对象与派生类对象之间怎样转换?
公有派生的派生类对象可以赋值给其基类对象,反之不可。
此时被赋值的基类对象只能访问基类的公有成员,而不能访问派生类中新增的成员。
经过显式类型转换成基类对象的派生类对象可以被基类对象赋值,也可以用该对象来访问派生类的公有成员
7、基类指针与派生类指针之间怎样转换?
派生类对象指针(或引用)可以赋值给基类对象指针(或引用),反之不可。
此时被赋值的基类对象指针只能访问基类的公有成员,而不能访问派生类中新增的成员。
但可用类型转换运算符将基类指针显式转换为指向派生类的指针来访问派生类的公有成员
8、什么是静态联编和动态联编?
静态联编是指对象的名字和对象的类型,函数标识符(函数所属的类名、函数名、函数返回值和函数参数)和函数编译产生的目标代码在编译时就固定下来,而且不会在程序执行过程中动态地修改。
动态联编就是指根据目标对象的动态类型(而不是静态类型)在程序运行时(而不是在编译阶段)将函数名绑定到具体的函数实现上,成员函数调用的代码地址是根据程序运行时对象的动态类型在最终时刻才被决定的。
9、什么是虚函数?什么是纯虚函数?什么是抽象类?
虚函数是在基类中以关键字virtual说明,并在派生类中重新定义的一个非静态成员函数。
一些物理上无法实现而逻辑上又不得不存在的抽象的虚函数,可以将其在基类中用不包括任何代码的纯虚函数来定义。
包含纯虚函数的类称做抽象类。
10、什么是多态性?虚函数和重载函数在实现多态性方面各有什么特点?
多态性是指不同功能的函数共用一个函数名
在派生类中重新定义虚函数时,函数的原型必须与其在基类中的原型完全一致
11、什么是多重继承?怎样消除多重继承的二义性问题?
多重继承即从两个或两个以上的基类继承而产生的派生类。
为了解决多继承时可能发生的对同一基类继承多次而产生的二义性问题,使某个公共基类的成员在其派生类中只产生一个拷贝,可在从基类派生新的类时将这个基类用virtual关键字说明为虚基类。