栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

完成的题目整理

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

完成的题目整理

菜鸡自己写的答案,可能答案不是特别的精确,如有大佬路过,请进行指正!

1、h头文件中的ifndef/define/endif的作用?

使用#ifndef、#define和#endif能够避免头文件的被重复定义,以便于提高编译效率

2、new delete 与malloc free 的联系和区别?

new delete与malloc free均是动态申请空间和释放内存,其中new delete是能够进C++中的分配和释放内存,malloc free再C++中也能够使用,其主要目的是兼容c语法

区别:

1new delete是操作符,malloc free 是函数

2new申请的空间是能够进行初始化,malloc申请的空间是不会初始化

3使用malloc时,需要程序员指定动态分配内存的大小,而new在只当指针类型以后,可以自动分配内存

  1. 已知类String的原型为:

Class String

{

 Public:

   String(const char* str=NULL);         //普通构造函数

   String(const String& rhs);          //拷贝构造函数

   ~String(void);                  //析构函数

   String& operator=(const String& rhs);   //赋值操作符

Private:

  char* m_data;                  //用于保存字符串

};

请编写String类的上述4个函数。

//普通构造函数 

String::String(const char *str){

if (str == NULL){

    m_data = new char[1];

    *m_data = '';

}

else{

    int len = strlen(str);

    m_data = new char[len + 1];

    strcpy(m_data, str);

}

}

//String拷贝函数

String::String(const String &other){   

int len = strlen(other.m_data);

m_data = new char[len + 1]; 

strcpy(m_data, other.m_data);

}

//String析构函数

String::~String(void){

delete m_data; 

}

//String赋值函数:

String & String::operator = (const String &other){

if (this == &other)

    return *this;

if (m_data)

    delete[] m_data; 

int len = strlen(other.m_data);

m_data = new char[len + 1]; 

strcpy(m_data, other.m_data);

return *this;   

}

编程1、在全球范围内,划有10000个不同大小的多边形区域。同时,我们有大量坐标点,如何高效判断坐标点所归属的区域?请写出主要思路。

思路:

利用数据结构中的图的深度遍历算法(DFS)对不同大小的区域进行遍历,以便于高效判断坐标点所归属的区域

由于有大量的坐标点,可以使用邻接矩阵存储数据,且坐标点是唯一的,初始化邻接矩阵为全-1矩阵,对10000个划分的不同区域进行深度遍历,同时对初始化的邻接矩阵的每个点的值进行修改,确定每个坐标点在哪个区域。

编程2、有n个人围成一圈,顺序排号。要求从其中淘汰掉m人,从第一个人开始循环报数(1到3报数),凡报到3的人退出圈子,直到剩余n-m人。请编写算法代码(链表实现),输出剩余人员在圈中的次序。

#include

using namespace std;

struct ListNode {

    int val;        //存储数据

    ListNode *next; //next指针

    ListNode() : val(0), next(NULL) {}  //类似构造函数

    ListNode(int x) : val(x), next(NULL) {}

};

int main()

{

    int count,num,delNum = 0,flag = 0;

    //创建链表

    ListNode *head = new ListNode();

    ListNode *p=head;

    cin >> count; 

    cin >> num;            

    int i=1;

    while(i

        ListNode *node = new ListNode(i); // 初始化一个节点

        node->val = i;

        p->next = node;

        p=p->next;

        i++;

    }

    p->next=NULL;//最后一个节点的指针指向空

    p=head;

    p->val += 1;

     while(p->next){

   

    p->next->val += 1;

    p = p->next;

   

    }

while(num - delNum){

        //cout<< "还有的数据需要删除:"<

       p = head;       

        while(p->next&& delNum < num){

          flag++;

          if((flag % 2) == 0){

              ListNode *tem=p->next;

                p->next=p->next->next;

                //cout << "此时删除的值是:"<val<

                delete tem;

                delNum++;

                //cout <<"已经完成删除的数据"<< delNum<

         }  

       p=p->next;

        if(p == NULL){

          flag = 0;

          p = head;

          //cout<<"flag :  " <

         }

      }

}

网络题目1、通过信号量能沟通控制应用程序只能启动1个实例吗?为什么?控制只能启动3个如何实现?

可以只启动一个实例,因为信号量能够实现进程间的同步与互斥。

其余不会

网络题目2、简述TCP和UDP的区别。试举出几种Windows Socket的编程模型及适用场景。

TCP:是一种面向连接的、可靠的、基于字节流的传输层通信协议

UDP:是一种无连接的、不可靠的、基于报文的传输层通信协议

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1001149.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号