- 21天学通Visual C++
- 张志美等编著
- 1852字
- 2020-08-27 03:34:41
1.8 习题
一、常见的面试题
1.你认为C++和Java的区别在哪里?
【解析】本题考查的是两种主流面向对象编程语言的区别,题目较简单,发挥的余地较大。
【参考答案】
(1)速度方面,C++比Java快20倍,对于小应用程序,只需要根据需要选择语言即可,而对于大型应用程序,绝大多数软件厂商都选择使用C++。
(2)Java是C++语言衍生出来的面向对象语言,任何对象、变量都封装在类里面。而C++则具有面向过程和面向对象的双重特性。
(3)Java没有指针类型,但如果需要,也是静态指针,这对于大多数具有大型项目经验的程序员来说是不大习惯的。
(4)都具有构造函数,但Java没有析构函数。
(5)Java没有多继承机制,这样可以降低程序员编程出错概率,但代价是丧失了面向对象的灵活性。
2.你最熟悉的C++集成开发环境是什么?请简述其从源代码到执行文件的转化过程。
【解析】本题主要考查应聘者有没有相关的开发经验,比较简单,有基本的经验即可做出较好的回答。
【参考答案】我较熟悉的是Visual C++ 6.0集成开发环境。源代码有两种:程序源代码和资源源代码。当程序员将源代码编写好后,由编译器分别编译各源代码文件,生成中间文件,然后通过连接器将各中间文件和系统调用的模块连接起来,并生成执行文件。
3.写一个最简单的C++程序,要求打印“Hello,C++!”字符串,并尽可能详细解释每行程序。
【解析】本题虽然简单,但很容易从简单程序中看出一个人的C++编程理论基础。
【参考答案】
1 #include <iostream> 2 using namespace std; 3 int main() 4 { 5 cout<<"Hello,C++!"; 6 cin.get(); 7 return 0; 8 }
第1行:#include <iostream>表示“main.cpp”源文件可以使用输入/输出流所定义的对象、变量等。
第2行:using namespace std;在此声明以下的同一个源文件内,都可以使用std名称空间中的内容,这也是C++ 98标准后的一项防止标准变量和用户定义变量冲突的一种方法。
第3行:int main()是C++程序的入口,该入口是一个函数,这个函数的返回值是int类型,而该函数的调用主体就是操作系统,当操作系统调用该函数后,得到一个为“0”的返回值后(第7行return 0),操作系统就知道该程序是正常退出了。
第5行:cout<<"Hello,C++!";就是运行结果的输出语句,cout是在“iostream”头文件中定义的一个输出流对象,该对象有一个重载方法“<<”,而该重载方法接收的参数为“Hello,C++!”字符串。“<<”运算符本来的功能是向左移位操作,在cout对象中使用的是输出重载功能,其调用就相当于cout.operator<<("Hello,C++!");。
第6行:cin.get();是用户为了防止打印程序窗口过快消失而设置的,cin是输入流对象,这里调用了该对象的get()成员函数,用于接收一个用户输入,接收之后,程序很快就返回操作系统并退出。
注:该题非常简单,但重点在于程序的解释,一个人的编程语言理论水平可以从解释看出来。
4.以下4行代码在Visual C++ 6.0环境中有何区别?
#include <iostream> #include "iostream" #include <iostream.h> #include "iostream.h"
【解析】本题考查的是应聘者对C++新标准的理解和C++旧标准的经验,如果没有相关的知识储备,则不可能回答好。
【参考答案】4行代码都是包含输入/输出流文件,不同点在于:
(1)<>尖括号表示让预编译器直接搜索系统指定的头文件目录,而""(双引号)号表示让预编译器先搜索与本源码同目录的头文件,如果没有,再到系统指定的头文件目录寻找该头文件。
(2)有没有“.h”的区别在于C++语言语法的新旧标准不同,新的语法标准是系统默认头文件不用写“.h”,但同时也兼容旧标准。因此,如果集成开发环境遵照新标准,则可写,也可不写,如果遵照旧标准,则一定要写。
二、简答题
1.简要说出Visual C++中各系统菜单的主要功能。
2.MFC AppWizard的作用是什么?
3.ClassWizard的作用是什么?
三、编程题
设计一个C++终端应用程序,使其运行时输出“Welcome to 21 Visual C++”的字样,如图1-24所示。
图1-24 运行结果
四、综合练习
1.新建一个Win32应用程序的工程Test,在其中添加一个C++ Source File,掌握应用程序编辑、编译、链接和运行的实现和过程,该工程并不实现任何功能。
操作步骤如下。
1 打开Visual C++ 6.0应用程序,单击【文件】|【新建】菜单项,打开【新建】对话框。
2 选择【工程】选项卡,选中其中的【Win32 Console Application】选项,输入工程名,选择输入该工程的位置。
3 单击【OK】按钮后进入【Win32 Console Application】对话框,选择【An empty project】选项,如图1-25所示。
图1-25 新建Win32应用程序
4 单击【Finish】按钮,完成向导。
5 添加C++ Source File文件,如图1-26所示。
图1-26 添加C++ Source File文件
6 编译、链接应用程序。
7 运行应用程序,如图1-27所示。
图1-27 运行Win32应用程序
提示
在图1-25中,如果没有选择【An empty project】选项,而是选择【A simple application】选项,则会新建一个含有默认C++源文件的工程。
2.编写一个简单的应用程序,要求其实现的功能为:用户输入两个数,可得到两数之和。操作步骤如下。
1 打开Visual C++ 6.0应用程序,单击【文件】|【新建】菜单项,打开【新建】对话框。
2 选择【工程】选项卡,选择其中的【Win32 Console Application】选项,输入工程名,选择输入该工程的位置。
3 单击【OK】按钮后进入【Win32 Console Application】对话框,选择【A simple application】选项建立一个工程,如图1-28所示。
图1-28 新建Win32应用程序
4 单击【Finish】按钮,完成向导。
5 在集成开发环境的工作区中可看到该工程的文件视图,打开其中的Source File树形结构,可看到Visual C++ 6.0默认生成的sum.app文件,如图1-29所示。
图1-29 树形结构
双击打开该文件,可看到Visual C++自动生成的代码,如图1-30所示。
图1-30 自动生成的代码
6 双击打开sum.app文件,在其中输入代码,如图1-31所示。
图1-31 添加代码
7 编译运行该应用程序,其结果如图1-32所示。
图1-32 运行结果
提示
在该练习中使用的是Visual C++自动生成的源文件,因此需要在工作区中将其打开,并添加相应的代码。