随笔分类 - c/c++
记录着学习所学的c/c++
摘要:小游戏的组成
1. 欢迎界面
2. 开始菜单界面
3. 主游戏界面
4. 游戏结束界面
5. 排行榜界面 (可选)
阅读全文
摘要:代码地址:https://github.com/hanxi/Log/*=============================================================================# FileName: log.h# Desc: 日志记录,只支持单线程,支持网页格式# Author: hanxi# Email: hanxi.com@gmail.com# HomePage: http://hanxi.cnblogs.com# Version: 0.0.1# LastChange: ...
阅读全文
摘要:《算法导论》上看到的伪代码好久没写c代码来,我写的c代码#include <iostream>#include <ctime>#include <cstdlib>using namespace std;int* randomize(int n);int main(int argc, char** argv){ srand((unsigned)time(0)); int* s = randomize(100); for (int i=0; i<100; i++) { cout << s[i] << ","; }
阅读全文
摘要:我把我找工作中遇到的知识点统计了下,并归类了下,希望可以帮到正在找工作的童鞋们!如果觉得有需要增加的可以添加到评论中,方便其他园友复习。一、C①基本函数实现swap()reverse()strcpy()②五个存储区③内存对齐④数组名问题int a[10];int *p=a;p++;p+1;a+1;a++;//错误,数组名是常量二、C++①static的作用②const的作用③四个类型转换static_cast<>;dynamic_cast<>;const_cast<>;reinterpret_cast<>;④placement new规定对象的存
阅读全文
摘要:编程思路如下(截取自《Erlang程序设计》3.8):调试的代码:View Code #include <cstdlib>#include <iostream>#include <vector>using namespace std;void insert(string &str,char ch, vector<string>& aa){ int n=str.length(); for (int i=0; i<=n; i++) { string t_str = str; t_str.insert(i,1,ch); aa.pu
阅读全文
摘要:第1章 更好的C C++是类型安全语言 所有函数在第一次使用之前必须声明或定义 引用参数直接支持引用调用语义 模板允许创建通用函数 内联函数将类似于函数的宏的高效与实际函数的安全性相结合 声明可以出现在函数可以出现的任意位置 第2章 指针 C和C++仅仅与那些使用它们的人一样危险 指针是地址 可以将任何一个指针赋值成vo...
阅读全文
摘要:题目 这道题应该说很出名了,原题见字符串相似度的计算,但是考试的时候真的想不出怎么实现。看了解答方法后,我现在就把实现方法说一下: 如果仅仅只计算字符串的距离,则只需以下3个步骤 如果需要把字符串转变的过程记录下来,则需要6个步骤 粗略解法 下面我就先实现只计算字符串距离的代码,使用了模板。这种方法虽然可以计算出结果来,但是重复计算非常多,后面会有个对比的。 //字符串相...
阅读全文
摘要://reverse()的实现#include <stdio.h>#include <string.h>char* reverse(char* s){ int i,j; for (i=0,j=strlen(s)-1; i<j; ++i,--j) { s[i] = s[i]^s[j]; s[j] = s[i]^s[j]; ...
阅读全文
摘要:方法一:随机生成法首先,我介绍一种很常见的方法:随机生成法(我自己命名的),这方法我在扫雷游戏中随机分布雷的位置时用过(思想是一样的),该方法要点就是从头开始逐个随机生成规定区域的数字,如果新生成随机数之前已经生成过就不保存该数;如果新生成的随机数之前没有生成过就保存该数;直到生成的数字的数量达到所需的数量。实现代码如下:size_t shuffle(char s[], int n){ size_t t=0;//计算循环次数 int c=0; while(c<n) { t++; int num = rand()%n; if (m...
阅读全文
摘要:明天就要去参加百度的笔试了,现在来抱抱佛教。 理论来自:简明现代魔法 在程序设计相关领域,堆(Heap)的概念主要涉及到两个方面: 一种数据结构,逻辑上是一颗完全二叉树,存储上是一个数组对象(二叉堆)。 垃圾收集存储区,是软件系统可以编程的内存区域。 本文所说的堆,指的是前者。 堆排序的时间复杂度是O(nlgN),与快速排序达到相同的时间复杂度。但是在实际应用中,我...
阅读全文
摘要://字符串拷贝函数 char *strcpy(char *dest, const char *src)#include <stdio.h>char *strcpy(char *dest, const char *src){ char *p = dest; while ((*dest++=*src++)!='\0'); return p;}int main(){ cha...
阅读全文
摘要://单例模式#include <iostream>using namespace std;class Singleton{public: static Singleton* Instance(); protected: Singleton() {} private: static Singleton* _instance;};Singleton* Singlet...
阅读全文
摘要:字符串相似度的计算(百度笔试题回忆) reverse()的实现字符串反转和模板reverse的实现 洗牌程序的两种实现方法比较 堆排序,C++模板编程 字符串拷贝函数 char *strcpy(char *dest, const char *src) 最简单的单例模式 按要求获得序列 两个栈实现一个队列 循环链表解决约瑟夫环问题 进制转换问题求解 判断一个数是否是2^N次方 ...
阅读全文
摘要:题目: 给定一个数组input[] ,如果数组长度n为奇数,则将数组中最大的元素放到 output[] 数组最中间的位置,如果数组长度n为偶数,则将数组中最大的元素放到 output[] 数组中间两个位置偏右的那个位置上,然后再按从大到小的顺序,依次在第一个位置的两边,按照一左一右的顺序,依次存放剩下的数。 例如:input[] = {3, 6, 1, 9, 7} output[] = {...
阅读全文
摘要:/** * 两个栈实现一个队列 * 栈IN用做入列,栈OUT用做出列 * push: * 栈IN执行push操作 * pop: * 如果栈OUT不为空,执行pop操作 * 如果栈OUT为空,将栈IN所有元素依次pop并push到栈OUT。 */ #include <stack>#include <iostream>using namespace std;template<t...
阅读全文
摘要:约瑟夫环问题可以简单的使用数组的方式实现,但是现在我使用循环链表的方法来实现,因为上午看到一道面试题规定使用循环链表解决约瑟夫环问题。 什么是约瑟夫环? “约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。”(百度百科中的解决办法列出了很多,可以看到循环链表并不是最简单的方法) 这道面试题考察了循环链表的“创建”,“遍历”和“删除”。创建的循环链表的结构图:解决约瑟夫环问题的过程C++实现代码如下:循环...
阅读全文
摘要:#include <stdio.h>#include <stdlib.h>#include <string.h>/** * 总体思想:采用一个数组存放基数"0123456789ABCDEF" * 即数字的每一位由上述数组的元素组成 * 如一个数表示为"15F",则该数字实际为:1 5 15 * 这样的话处理进制转换问题就和大整数运算问题一样了。 *///将数字转换为字符串形式int ...
阅读全文
摘要://判断一个数是否是2^N次方bool is2N(int a){// 2 4 8 16// 10 100 1000 10000//================================// 100 a // & 011 a-1//-------// 000 return !(a&(a-1));}
阅读全文
摘要:参考《C和C++代码精粹》——Chunk Allison 菜单实现 #include <iostream>using namespace std;class Object{public: void retrieve() {cout << "Object::retrieve\n";} void insert() {cout << "Object::insert\n";} ...
阅读全文
摘要:[0]起因花了一个星期左右的时间学习了下FLTK图形库,拿扫雷游戏作为学习FLTK图形库的原因有二:扫雷游戏算法很简单;之前写过一个Win32API的扫雷游戏。(自己回头去看看,感觉以前的按过程式的方法设计的代码不便于理解,结构不清晰)[1]设计一个可以载入图片的GameObject类[1.1]类的声明如下:class GameObject{public: GameObject(void); GameObject(const char* filename); GameObject(const GameObject& a_rightSide); GameObject& o...
阅读全文