c++
文章平均质量分 83
w_megumin
这个人什么都没留下
展开
-
A*算法附c++代码
一.什么是a*一种十分常用的寻路算法,它能够依据某个或某些优化准则,在空间中找到一个从起始点到目标点能避开障碍物的最优路径。二.算法以下图为例,敌人要绕过中间的障碍物,寻找到敌人。(以一个方块作为一个节点)大概思路1.首先将敌人所在的节点(起始点)加入到开列表中(接下来可能会用到的节点)2.从开列表中取出花费值最小的节点(等会会讲到如何求花费值)(当前开列表中就一个节点)作为当前点3.将当前点加入到闭列表中(已经用过的点,也是最后所需的点)4.遍历当前点周围的点,搜索能通过的点(不是障碍物原创 2021-07-01 10:27:29 · 2587 阅读 · 0 评论 -
C++面试算法题
1、实现strcpy(字符串拷贝)2、实现strcat(字符串连接)3、实现字符串逆序4、C语言中字符串转数字的方法是什么( atoi ),请实现它5、实现一个将字符串中所有字母转换为大写的方法6、判断X年X月X日是这年的第几天7、删除链表中值为Value的所有元素( [Head]->[node1]->[node2]->…[noden] )8、实现strncpy9、在母字符串中查找子字符串出现的次数10、给定一个字符串,按单词将该字符串逆序,比如给定"This is a原创 2021-06-30 14:20:01 · 1564 阅读 · 0 评论 -
面试例题(51-55)
16.1进程面试例题51:请描述进程和线程的差别。答案:进程是程序的一次执行,而什么是线程呢?线程可以理解为进程中执行的一段程序片段。在一个多任务环境中下面的概念可以帮助我们理解两者的差别。进程间是独立的,这表现在内存空间、上下文环境上,线程运行在进程空间内。一般来讲,进程无法突破进程边界存取其他进程内的存储空间;而线程由于处于进程空间内,所以同一进程所产生的线程共享同一内存空间。同一进程中的两段代码不能够同时执行,除非引入线程。线程是属于进程的,当进程退出时该进程产生的线程都会被强制退出并清原创 2021-06-29 20:39:17 · 452 阅读 · 0 评论 -
面试例题(41-50)
数组越界面试例题41:下面的程序有何缺点?#define MAX 255int main(){ unsigned char A[MAX],i; for(i = 0; i <= MAX;i++) { A[i] = i; } return 0;}解析:典型的数组越界问题。For循环执行了256次,而数组A只有255个元素。答案:将循环控制条件i <= MAX 改为 i < MAX即可。面试例题42:找出下面程序的错误,并解释它为什么是错的。void test1原创 2021-06-21 14:49:19 · 642 阅读 · 0 评论 -
面试例题(31-40)
纯虚函数面试例题31:下面的程序有何错误?#include<iostream>using namespace std;class Shape{public: Shape(){} ~Shape(){} virtual void Draw () = 0;};int mian(){ Shape s1;}解析:因为Shape类中的Draw函数是一个纯虚函数,所以Shape类是不能实例化一个对象的。Shape s1;是不可以的,解决方法是把Draw函数修改成一般的虚函数。原创 2021-06-21 11:03:50 · 202 阅读 · 0 评论 -
面试例题(21-30)
11.1覆盖面试例题21:以下代码的输出结果是什么?#include<iostream>using namespace std;class Parent{public: virtual void foo() { cout << “foo from Parent”; } void fool() { cout << “fool from Parent”; }};class Son: public Parent{ void foo()原创 2021-06-11 17:26:44 · 219 阅读 · 0 评论 -
面试例题(11-20)
面试例题11:析构函数可以是内联函数么?解析:我们可以先构造一个类,让它的析构函数是内联函数,如下所示:#include <iostream>using namespace std;calss A{ public: void foo() { cout<< ”A”; }; ~A();};inline A::~A() { cout<<”inline”; }int main(){ A* niu = new A(); niu->foo(); d原创 2021-06-10 14:19:59 · 199 阅读 · 0 评论 -
面试例题(1-10)
面向对象的基本概念面试例题1:面向对象技术的基本概念是什么?解析:按照定义,OO(面向对象)编程语言必须提供对象、类和继承。答案:对象、类和继承。面试例题2:C++中的空类默认产生哪些类成员函数?Class Empty{Public;};解析:类的概念答案:对于一个空类,编译器默认产生4个成员函数:默认构造函数、析构函数、拷贝构造函数和赋值函数。面试例题3:Which is incorrect about the class?(关于类,下面哪个叙述是错误的?)A. A class i原创 2021-06-09 14:42:35 · 396 阅读 · 0 评论 -
C++ 面试题(51-55)
51、用变量a给下面定义一个整型数 int a一个指向整型数的指针 int *a一个指向指针的指针,他指向的指针是一个指向一个整型数 int** a;一个有10个整型数的数组int a[10]一个有10个指针的数组,该指针指向一个整数 int *a[10];一个指向有10个整型数数组的指针 int(*a)[10]一个指向函数的指针,该函数有一个整型参数并返回一个整型数int(*a)(int)一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数:int(*a[10]原创 2021-06-09 09:52:49 · 146 阅读 · 0 评论 -
malloc,free与 new,delete的区别
ps:原博客的广告太多了,看着难受,于是搬过来↓原文地址正文malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。下面来看他们的区别。一、操作对象有所不同malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。对于非内部数据类型的对象而言,光用malloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象消亡之前要自动执行析构函数。由于malloc/free是库函数而转载 2021-06-09 09:43:45 · 241 阅读 · 0 评论 -
c++ 面试题 (41-50)
41、找出下面程序的错误,并且解释为什么?#include <stdio.h>void swapxy(char*a,char*b){ int x = *a,y =*b; x = x+y; y = x-y; x = x-y; *a = x; *b = y; return;}int main(){ char a = 'a',b = 'b'; char& x = a,&y = b; printf("a = '%c' and b = '%c' be原创 2021-06-08 15:46:19 · 638 阅读 · 0 评论 -
C++面试题 (31-40)
31.下面代码的输出结果是class B{ float f; //4个字节 char p; //1个字节 内存对齐所以4个字节 int adf[3]; //12个字节}cout <<"" << sizeof(B); //2032.一个空类占多少空间?多重继承的空类呢?解析1 1 详情看上期33.内联函数和宏的差别是?内联函数和普通函数相比可以加快程序的运行速度,因为不需要中断调用,在编译的时候内联函数可以直接被镶嵌到目标代码中。而宏只是一个简单的替换原创 2021-06-08 09:42:44 · 116 阅读 · 0 评论 -
C++ 面试题 (21-30)
21、const和#define相比有什么不同?解析c++可以用const定义常量也可以用define定义常量,但是前者比后者有更多的优点:(1)const常量有数据类型,宏常量没有。编译器可以对前者进行类型安全检查,而对后者只有字符替换,没有类型安全检查,并且字符替换中可能会产生意料不到的错误(边界效应)列如:#define N 2+3 //我们预想的N值是5,我们这样使用Ndouble a = N/2; //我们预想的a的值是2.5,可实际上a的值是3.5(2)有些集成化的调试工具可以原创 2021-06-06 11:50:10 · 356 阅读 · 0 评论 -
C++面试题 (10-20)
11、有两个变量a和b不用if,:?,switch或者其他判断语句,找出两个数中较大的。答案int max = ((a+b)+abs(a-b))/2;int c = a -b;char *strs[2] = {"a大","b大"};c = unsigned(c)>>{sizeof(int)*8-1);cout<<strs[c]<<endl;解析unsigned int 范围为 0 —— 2322^{32}232 -1最大值用二进制即为 1111 11原创 2021-06-04 14:33:16 · 118 阅读 · 0 评论 -
C++面试题(1-10)
C++1、下列程序的运算结果是int x = 2,y,z;x *=(y=z=5);cout << x << endl;z = 3;x == (y = z); cout << x << endl;x = (y == z);cout << x << endl;x = (y & z);cout << x << endl;x = (y && z); cout << x原创 2021-06-03 14:18:58 · 246 阅读 · 0 评论