最新期末考试VC++练习题(带答案)
c语言期末考试题库及详解答案

c语言期末考试题库及详解答案C语言期末考试题库及详解答案一、选择题1. 下列哪个选项是C语言中正确的整型常量?A. 0.1234B. 0x12ABC. 0b1010D. 1e10答案:B2. C语言中,以下哪个关键字用于定义变量的存储类别?A. staticB. constC. typedefD. volatile答案:A3. 在C语言中,以下哪个运算符用于求两个数的余数?A. /B. %C.D. ++答案:B4. 下列哪个选项是C语言中正确的字符常量?A. 'A'B. "A"C. AD. 65答案:A5. 在C语言中,以下哪个函数用于计算两个数的最大值?A. max()B. min()C. pow()D. sqrt()答案:A二、填空题6. C语言中,用于定义数组的关键字是______。
答案:int7. C语言中,用于输入输出的库函数分别是______和______。
答案:scanf(); printf()8. C语言中,若要定义一个指针变量,需要使用关键字______。
答案:int*9. C语言中,用于定义函数的关键字是______。
答案:void 或其他数据类型10. C语言中,若要实现字符串的复制,可以使用库函数______。
答案:strcpy()三、简答题11. 简述C语言中结构体的定义方式。
答案:在C语言中,结构体是一种用户自定义的数据类型,它允许将多个不同类型的数据项组合成一个单一的类型。
结构体的定义方式如下:struct 结构体名 {数据类型成员名1;数据类型成员名2;...};12. 解释C语言中的递归函数。
答案:递归函数是一种函数自己调用自己的特殊函数。
递归函数通常用于解决可以被分解为相似子问题的问题。
递归函数需要有一个明确的终止条件,以防止无限递归。
四、编程题13. 编写一个C语言程序,实现求一个整数的阶乘。
答案:```c#include <stdio.h>long factorial(int n) {if (n <= 1) return 1;else return n * factorial(n - 1);}int main() {int num;printf("Enter a number: ");scanf("%d", &num);printf("Factorial of %d = %ld", num, factorial(num)); return 0;}```14. 编写一个C语言程序,实现字符串的反转。
VC期末考试题及标准答案

武汉大学2021—2021学年上学期面向对象程序设计试卷〔B〕学号:姓名:院系:专业:得分:一、名词解释〔每题5分,共计25分〕〔1〕构造函数:是一种特殊成员函数,它提供了对成员变量进展初始化方法,使得在声明对象时能自动初始化对象〔+2〕;构造函数名称与类名一样〔+1〕;构造函数不能指定任何返回值类型〔+1〕;构造函数可以重载〔+1〕。
〔2〕多态:多态性是面向对象编程一个重要特征〔+1〕,主要表现在函数调用时实现“一种接口,多种方法〞〔+2〕。
多态又分为编译时多态和运行时多态两种〔+2〕。
〔3〕抽象类:抽象类是指这样类,它一些行为〔成员函数〕不给出具体定义〔+2〕,抽象类至少带有一个纯虚函数〔+1〕,抽象类不能用来申明对象,只能作为基类使用,因此它又称为抽象基类〔+2〕。
〔4〕文档模板:在文档/视图构造应用程序中,数据以文档类对象形式存在〔+1〕。
文档对象通过视图对象显示出来,而视图大对象又是框架窗口一个子窗口,并且涉及文档操作菜单和工具栏等资源也是建立在框架窗口上〔+2〕。
这样文档、视图、框架和所涉及资源形成了一种固定关系,这种固定关系就成为文档模板〔+1〕。
也就是说,文档模板描述了对应于每一种类型文档视图和窗口类型〔+1〕。
〔5〕序列化:对象保存和恢复过程称为序列化〔+2〕。
即对象具有保存和加载其状态能力〔+1〕,对象能够在程序运行完毕前将对象当前状态写入永久存储体中,以后在程序运行时通过数据读取而恢复对象状态〔+2〕。
二、简答题〔每题10分,共计40分〕1.简述文档、视图和应用程序框架之间如何相互作用?答:文档、视图和应用程序包含了一系列复杂相互作用过程〔+1〕,稳当和视图交互式通过类共有数据成员和成员函数实现〔+1〕。
一个视图对象只与一个文档对象关联,一个文档可以与多个视图关联,但一个文档对象只反映当前视图变化〔+2〕。
视图中用GetDocument()获取文档对象进展操作〔+1〕;在文档中利用Invalidate(), UpdateAllViews()或SendMessage(WM_PAINT,a,b)调用视图中OnDraw()对文档数据进展绘图〔+3〕;在程序任何地方可以调用AfxGetApp()得到程序框架对象指针,利用框架对象指针可进一步利用GetActiveView()获取程序视图对象,并对其进展操作〔+2〕。
c类考试试题及答案

c类考试试题及答案一、选择题(每题2分,共20分)1. 下列哪个选项不是C语言的基本数据类型?A. intB. floatC. stringD. char答案:C2. C语言中,用于定义变量的关键字是?A. varB. defineC. letD. int答案:D3. 在C语言中,以下哪个运算符用于比较两个值是否相等?A. ==B. !=C. =D. <=答案:A4. 下列哪个选项不是C语言的控制语句?A. ifB. forC. switchD. while答案:C5. C语言中,用于定义函数的关键字是?A. functionB. defC. voidD. int答案:D6. 在C语言中,以下哪个选项是正确的数组声明?A. int array[5] = {1, 2, 3};B. int [5] array = {1, 2, 3};C. int array = [5] {1, 2, 3};D. int array[5] = {1, 2, 3, 4, 5};答案:A7. C语言中,用于输入输出的库函数是?A. stdlib.hB. stdio.hC. string.hD. math.h答案:B8. 下列哪个选项是C语言中的逻辑运算符?A. &&B. ||C. %D. ==答案:A9. 在C语言中,以下哪个选项是正确的指针声明?A. int *ptr;B. int *ptr = 0;C. int ptr *;D. int *ptr = 5;答案:A10. C语言中,用于定义结构体的关键字是?A. structB. unionC. enumD. typedef答案:A二、填空题(每题2分,共20分)1. 在C语言中,定义一个名为“num”的整型变量,其值为10,应该使用语句________。
答案:int num = 10;2. 如果要将一个整数变量的值赋给另一个整数变量,应该使用运算符________。
c面向对象程序设计期末考试题及答案

c面向对象程序设计期末考试题及答案一、选择题(每题2分,共20分)1. 下列哪个是面向对象程序设计的特点?A. 封装B. 继承C. 多态D. 所有选项都是2. 在Java中,以下哪个关键字用于定义类?A. classB. structC. typeD. classdef3. 以下哪个是Java中不允许的类成员访问修饰符?A. publicB. protectedC. privateD. global4. 以下哪个是Java中实现多态的方式?A. 函数重载B. 函数重写C. 接口D. 抽象类5. 在Java中,哪个关键字用于声明一个方法,该方法没有返回值?A. voidB. returnC. noneD. null6. 以下哪个是Java中创建对象的语法?A. new ClassName();B. create ClassName;C. make ClassName;D. ClassName();7. 在Java中,以下哪个是正确的构造方法声明?A. public ClassName();B. public ClassName new();C. public new ClassName();D. public ClassName create();8. 以下哪个是Java中实现继承的方式?A. 使用extends关键字B. 使用implements关键字C. 使用interface关键字D. 使用new关键字9. 在Java中,以下哪个关键字用于实现接口?A. implementsB. extendsC. interfaceD. class10. 以下哪个是Java中实现封装的方式?A. 使用public关键字B. 使用private关键字C. 使用protected关键字D. 使用default关键字答案:1. D2. A3. D4. B5. A6. A7. A8. A9. A10. B二、简答题(每题10分,共20分)1. 简述面向对象程序设计中的“封装”概念及其重要性。
vc++期末复习题库

vc++期末复习题库一、填空题1. 编写C++程序一般需经过的几个步骤依次是( )A. 编译、编辑、连接、调试B. 编辑、编译、连接、调试C. 编译、调试、编辑、连接D. 编辑、调试、编辑、连接2. C++语言是从早期的C语言逐步发展演变而来的,与C语言相比,它在求解问题方法上进行的最大改进是( )。
A. 面向过程B. 面向对象C. 安全性D. 可移植性3. 类中定义的成员默认的访问属性是( )。
A. friendB. privateC. publicD. protected4. 一个类的构造函数通常被定义为该类的( )成员。
A. 友元B. 公有C. 私有D. 保护5. 假定一个类对象数组为A[n],当离开它定义的作用域时,系统自动调用该类析构函数的次数为( )A. 0B. 1C. nD. n-16. 每个类()构造函数。
A.只能有一个B.有可能没有C.可以有多个D.只可有缺省的7. 下面不是描述类的成员函数的是( )A. 构造函数B. 析构函数C. 友元函数D. 复制构造函数8. 编译时的多态性使用什么获得?( )A. 重载函数B. 继承C. 虚函数D. 上述所有选项9. 下面描述中,表达错误的是()。
A.公用继承时基类中的public成员在派生类中仍是public的B.公用继承时基类中的private成员在派生类中仍是private的C.公用继承时基类中的protected成员在派生类中仍是protected的D.私有继承时基类中的public成员在派生类中是private的10. 若有一维数组初始化语句int a[10]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10};且数组的起始地址为6040H,则6048H是数组元素( )的起始地址。
A. 9B. 8C. 2D. 311. 决定C++语言中函数的返回值类型的是()A. return语句中的表达式类型B. 调用该函数时系统随机产生的类型C. 调用该函数时的主调用函数类型D. 在定义该函数时所指定的数据类型12. C++对C语言作了很多改进,即从面向过程变成为面向对象的主要原因是( ) 。
数据结构c语言期末考试题库及详解答案

数据结构c语言期末考试题库及详解答案数据结构C语言期末考试题库及详解答案一、选择题1. 在数据结构中,线性表的顺序存储结构被称为:A. 链式存储结构B. 栈C. 队列D. 数组答案:D2. 下列关于栈的描述,错误的是:A. 栈是一种特殊的线性表B. 栈的特点是后进先出C. 栈顶元素是最后插入的元素D. 栈的插入和删除操作都发生在栈顶答案:C二、填空题1. 在C语言中,定义一个具有10个元素的整型数组可以使用语句:________。
答案:int arr[10];2. 链表与数组相比,其优点是________。
答案:动态内存分配,不需要预先知道数据规模三、简答题1. 简述二叉树的遍历方法有哪些,并说明它们的特点。
答案:二叉树的遍历方法主要有前序遍历、中序遍历和后序遍历三种。
前序遍历首先访问根节点,然后递归地遍历左子树和右子树;中序遍历首先遍历左子树,然后访问根节点,最后遍历右子树;后序遍历首先遍历左子树和右子树,最后访问根节点。
每种遍历方法都可以用来对二叉树进行不同的操作和分析。
2. 什么是哈希表?它在实际应用中有哪些优点?答案:哈希表是一种通过哈希函数将键映射到表中一个位置来访问记录的数据结构。
它的优点包括:快速的数据访问速度,因为哈希表通常在常数时间内完成查找;动态的内存分配,可以根据需要调整存储空间;以及灵活的键值对存储方式。
四、编程题1. 编写一个C语言函数,实现单链表的逆序输出。
答案:```c#include <stdio.h>#include <stdlib.h>typedef struct Node {int data;struct Node *next;} Node;void reversePrint(Node *head) {if (head == NULL) return;reversePrint(head->next);printf("%d ", head->data);}int main() {Node *head = (Node *)malloc(sizeof(Node));head->data = 1;head->next = NULL;// 假设链表已经构建完毕reversePrint(head);return 0;}```2. 请实现一个C语言函数,用于计算一个字符串中不同字符的数量。
c++含详细答案 期末考试用试题四

c++含详细答案期末考试用试题四《试题四》一、单选题(共10分,每题1分)1. C++中解决命名冲突的机制是:(A) 虚基类 (B) 虚函数 (C) 函数重载 (D) 名字空间 2. 若类A的一个对象所占的内存空间中包含虚函数表的入口地址,则:(A) 类A不能有静态数据成员 (B) 类A中公有的成员函数一定是虚的(C) 类A中至少有一个成员函数是虚的 (D) 类A的析构函数一定是虚的 3.任意一个类,析构函数的个数最多是:(A) 不限个数 (B) 1 (C) 2 (D) 34.下列关于this指针的说法,哪个是正确的:(A) this指针一定指向常量型数据 (B) this指向的数据不可更改(C) 静态成员函数中也可以访问this指针 (D) this指针本身可直接作为成员函数的返回值5.在类定义中,为说明成员的访问权限,private, protected, public 可以出现次数为:(A)次数没有具体限定 (B) 每种至多一次(C) 至少一次 (D) 每种至少一次6.下面哪种定义方式是正确的,并且使得p可以作为函数void f( A* const pp);的实参:(A) A * p = new A; (B) A a; A* p = a;(C) const A* p = new A; (D) A a; const A* p = a;7. obj是类A的一个对象,执行语句 const A& aA= obj; ,则下列说法正确的是:(A) 类A的拷贝构造函数会被调用 (B) 类A的赋值函数会被调用(C) &aA的值就是 &obj (D) 语句obj.f( );等价于语句aA.f( ); 8.下面关于访问类A的私有数据成员的说法,错误的是:(A) 类A的友元函数可以访问类A的私有成员。
(B) 类A的友元类中的非静态成员函数可以访问类A的私有成员。
(C) 类A的嵌套类中的非静态成员函数可以访问类A的私有成员。
数据结构c语言期末考试试题及答案

数据结构c语言期末考试试题及答案一、选择题(每题2分,共20分)1. 在C语言中,以下哪个关键字用于定义结构体?A. structB. unionC. enumD. typedef答案:A2. 在C语言中,以下哪个函数用于创建链表节点?A. mallocB. callocC. reallocD. free答案:A3. 如果一个链表的头指针为NULL,这意味着什么?A. 链表为空A. 链表已满C. 链表正在使用中D. 链表已损坏答案:A4. 在C语言中,以下哪个数据结构允许快速随机访问?A. 链表B. 数组C. 栈D. 队列5. 在二叉树中,以下哪个术语描述了没有子节点的节点?A. 根节点B. 叶节点C. 内部节点D. 父节点答案:B6. 以下哪个算法用于在二叉搜索树中查找一个元素?A. 深度优先搜索B. 广度优先搜索C. 插入排序D. 二分查找答案:D7. 在C语言中,以下哪个关键字用于定义一个函数?A. intB. voidC. returnD. struct答案:A8. 以下哪个选项是正确的递归函数定义?A. int fact(int n) { if (n > 1) return n * fact(n-1); else return 1; }B. int fact(int n) { if (n > 1) return n * fact(n); else return 1; }C. int fact(int n) { if (n > 1) return n * fact(n+1); else return 1; }D. int fact(int n) { if (n > 1) return n; else return 1; }9. 在C语言中,以下哪个函数用于释放动态分配的内存?A. mallocB. callocC. reallocD. free答案:D10. 在C语言中,以下哪个关键字用于定义一个指针?A. intB. charC. *D. &答案:C二、填空题(每题2分,共20分)1. 在C语言中,结构体的成员可以通过其结构体变量名和______访问。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
大一期末考试VC++练习题一、选择题1.C++语言属于( C )。
A)自然语言 B)机器语言 C)面向对象语言 D)汇编语言2.下面选项中不属于面向对象程序设计特征的是(C) 。
A)继承性 B)多态性 C)相似性 D)封装性3.可用作C++语言用户标识符的一组标识符是( B )。
A) void define +WORD B) a3_b3 _123 YNC) for -abc Case D) 2a DO sizeof4.假定一个二维数组的定义语句为“int a[3][4]={{3,4},{2,8,6}};”,则元素a[2][1]的值为(A)。
A) 0 B) 4 C) 8 D) 65.下列情况中,哪一种情况不会调用拷贝构造函数( B )A)用派生类的对象去初始化基类对象时B)将类的一个对象赋值给该类的另一个对象时C)函数的形参是类的对象,调用函数进行形参和实参结合时D)函数的返回值是类的对象,函数执行返回调用者时6.以下哪一关键字可用于重载函数的区分(C)A)extern B)static C)const D)virtual7.下列有关数组的叙述中,正确的是( B )A)C++中数组的存储方式为列优先存储B)数组名可以作为实参赋值给指针类型的形参C)数组下标索引从1开始,至数组长度n结束D)数组指针的语法形式为:类型名 *数组名[下标表达式];8.下列有关继承和派生的叙述中,正确的是( C )A)派生类不能访问通过私有继承的基类的保护成员B)多继承的虚基类不能够实例化C)如果基类没有默认构造函数,派生类就应当声明带形参的构造函数D)基类的析构函数和虚函数都不能够被继承,需要在派生类中重新实现9.实现运行时多态的机制是( A )A)虚函数B)重载函数C)静态函数D)模版函数10.若有下面的函数调用:fun(a+b, 3, max(n-1, b));其中实参的个数是( A)A)3 B)4 C)5 D)611.下列关于this指针的说法正确的是( B)A)this指针存在于每个函数之中B)在类的非静态函数中this指针指向调用该函数的对象C)this指针是指向虚函数表的指针D)this指针是指向类的函数成员的指针12.在下列关于C++函数的叙述中,正确的是(C)A)每个函数至少要有一个参数B)每个函数都必须返回一个值C)函数在被调用之前必须先声明D)函数不能自己调用自己13.下列运算符中,不能重载的是(C)A)&& B)!= C). D)->14.下面程序的输出结果是(B)#include <iostream>using namespace std;int i = 0;int fun(int n){static int a = 2;a++;return a+n;}void main(){int k = 5;{int i = 2;k += fun(i);}k += fun(i);cout << k;}A)13 B)14 C)15 D)1615.下面的程序段的运行结果为(D)char str[] = "job", *p = str;cout << *(p+2) << endl;A)98 B)无输出结果 C)字符’b’的地址 D)字符’b’16.下面程序的输出结果是( C )#include <iostream>using namespace std;class A{public:A (int i) { x = i; }void dispa () { cout << x << “,”; }private :int x ;};class B : public A{public:B(int i) : A(i+10) { x = i; }void dispb() { dispa(); cout << x << endl; }private :int x ;};void main(){B b(2);b.dispb();}A)10,2 B)12,10 C)12,2 D)2,217.下面程序的输出结果是( C)#include <iostream>using namespace std;class Base{public:Base(int i) { cout << i; }~Base () { }};class Base1: virtual public Base{public:Base1(int i, int j=0) : Base(j) { cout << i; }~Base1() {}};class Base2: virtual public Base{public:Base2(int i, int j=0) : Base(j) { cout << i; }~Base2() {}};class Derived : public Base2, public Base1{public:Derived(int a, int b, int c, int d) : mem1(a), mem2(b), Base1(c), Base2(d), Base(a){ cout << b; }private:Base2 mem2;Base1 mem1;};void main() { Derived objD (1, 2, 3, 4); }A)134122 B)123412 C)14302012 D)14321218.下面程序的输出结果是(C)#include <iostream>using namespace std;class Base{public:virtual void f() { cout << “f0+”; }void g() { cout << “g0+”; }};class Derived : public Base{public:void f() { cout << “f+”; }void g() { cout << “g+”; }};void main() { Derived d; Base *p = &d; p->f(); p->g(); }A)f+g+ B)f0+g+ C)f+g0+ D)f0+g0+19.下面程序的输出结果是( C )#include <iostream>using namespace std;class Sample{friend long fun (Sample s){if (s.x < 2) return 1;return s.x * fun(Sample(s.x-1));}public:Sample (long a) { x = a; }private:long x;};void main(){int sum = 0;for (int i=0; i<4; i++){sum += fun(Sample(i));}cout << sum;}A)12 B)16 C)10 D)34 20.以下程序的输出结果是:(D)#include <iostream>using namespace std;int fun(char *s){ char *p=s;while (*p!='\0') p++;return (p-s);}void main(){cout<<fun("abc")<<endl;}A.0 B. 1 C. 2 D. 321.有如下程序段:int i=1;while(1){i++;if (i==10) break;if(i%2==0) cout<<’*’;}执行这个程序段输出字符*的个数是(C)A. 10B. 3C. 4D.522.下列关于虚基类的描述中,错误的是(C)A. 使用虚基类可以消除由多继承产生的二义性B. 构造派生类对象时,虚基类的构造函数只被调用一次C. 声明 class B:virtual public A 说明类B为虚基类D. 建立派生类对象时,首先调用虚基类的构造函数23.有下类定义Class A {Char *a;Public:A():a(0){}A(char *aa) {//把aa所指字符串拷贝到a所指向的存储空间A=___________________;Strcpy(a,aa);~A() {delete [] a;}};正确的选择是(A)A. new char[strlen(aa)+1]B. char[strlen(aa)+1]C. char[strlen(aa)]D. new char[sizeof(aa)-1]24.假定AA为一个类,a为该类私有的数据成员,GetValue( )为该类公有函数成员,它返回a的值,x为该类的一个对象,则访问x对象中数据成员a的格式为(X)。
A) x.a B) x.a() C) x->GetValue() D) x.GetValue( ) 25.假定AA为一个类,int a()为该类的一个成员函数,若该成员函数在类定义体外定义,则函数头为(A)。
A) int AA::a( ) B) int AA:a()C) AA::a() D) AA::int a()26.有如下程序:#include<iostream>using namespace std;class Test{public:Test(){}~Test(){cout<<'#';}};int main(){Test temp[2], *pTemp[2];return 0;}执行这个程序输出星号(#)的个数为(B)。
A)1 B)2 C)3 D)427.有如下程序:#include<iostream>using namespace std;class MyClass{public:MyClass(int i=0){cout<<1;}MyClass(const MyClass&x){cout<<2;}MyClass& operator=(const MyClass&x){cout<<3; return *this;}~MyClass(){cout<<4;}};int main(){MyClass obj1(1),obj2(2),obj3(obj1);obj1=obj2;return 0;}运行时的输出结果是(A)。