C++笔试概念部分1

来源:互联网 发布:淘宝虚假交易警告2次 编辑:程序博客网 时间:2024/06/05 03:21

1  操作系统由哪几部分组成?

进程管理、内存管理、文件管理和设备管理

2  Windows程序的入口是哪里?写出Windows消息机制的流程。

Windows程序的入口是WinMain函数

消息机制:系统将会维护一个或者多个消息队列,所有产生的消息都会被放入或是插入队列中。系统会在队列中取出每一条消息,根据消息的接收句柄而将该消息发型至拥有该窗口的程序的消息循环。每一个运行的程序都有自己的消息循环,在循环中得到属于自己的消息并根据接收窗口的句柄调用相应的窗口过程。而在没有消息时消息循环就将控制权交给系统。

3  请解释一下IP协议的定义,在哪个层上面,主要有什么作用?TCP与UDP呢?

Internet Protocol协议是为跨局域网和广域网环境的大规模互联网络而设计的世界标准的协议组。IP协议工作在第三层即网络层,位于数据链路层的上面,主要用于实现连接到互联上的节点之间的通信。

TCP:传输控制协议(transmission control protocol)这是一种提供给用户进程的可靠的全双工字节流面向连接的协议。它要为用户进程提供虚电路服务,并为数据可靠传输建立检查

UDP:用户数据报协议(user datagram protocol)这是提供用户进程的无连接协议,用于传送数据而不执行正确性检查,TCP与UDP处于传输层。

4  写出BOOL flag 与“零值”比较的if语句和char *p 与“零值”比较的if语句:

if(flag){  return A; }else{  return B;}
if(flag); if(!flag);

if(p==NULL); if(p !=NULL);


5  内联函数在编译时是否做参数类型检查?

做类型检查,因为内联函数就是在程序编译时,编译器将程序中出现的内联函数的调用表达式用内联函数的函数体来代替


6  分析下列哪两个表达式是等同的?

A const int* a = &b; // *a是const 但是指针a可变

B const* int a = &b; //a是const 但*a可变

C const int* const a = &b; //a *a都是const,常量和指针的值都不能改变

D int const* const a = &b; //a *a都是const,常量和指针的值都不能改变


总结:如果const位于星号左侧,则const就是用来修饰指针所指向的变量,则指针指向为常量;

如果const位于星号右侧,const就是修饰指针本身,即指针本身是常量。

7  程序功能:在任意输入的字符串str中的凡是'c'字母后添加“><”,然后输出结果串。

#include <iostream.h>void main(){    char s[60], str[30];    cin.getline(str,30);    for(int i = 0, j = 0; s[j++] = str[i]; i++){        if(str[i] = 'c'){            s[j++] = '>';            s[j++] = '<';}}         cout << "The new string is:" << endl;}
8  程序功能:求下列序列的累加和(序列累加n项,正整数n通过cin 从键盘输入)

sum = 2/1 + 3/2 + 5/3 + 8/5 + 13/8

#include <iostream>#include <stdlib.h>using namespace std;int main(){int i = 1;int temp1 = 1;int temp2 = 2;int temp;float sum = 0;int n;cin >> n;while(i<=n){sum = sum + float(temp2)/temp1;temp = temp2;temp2 = temp1 + temp2;temp1 = temp;i++;}cout << "累加和sum=" << sum << endl;system("pause");return 0;}

(9)C++中为什么要用模板类

1  可用来创建动态增长和减少的数据结构

2  它是类型无关的,因此具有很高的可复用性

3  它在编译时而不是运行时检查数据类型,保证了类型安全

4  它是平台无关,可移植性

5  可用于基本数据类型

(10)程序什么时候应该使用线程,什么时候单线程效率高?

1  耗时的操作使用线程,提高应用程序相应

2  并行操作时使用线程,如C/S架构的服务端并发线程相应用户的请求

3  多CPU系统中,使用线程提高CPU的利用率

4  改善程序结构。一个既长又复杂的进程可以考虑分为多个线程,成为几个独立或者半独立的运行部分,这样的程序会利于理解和修改,其他情况都使用单线程。

(11)什么是网络套接字(socket)流套接字(sock_stream)基于什么协议?简述winsock的编程流程