随笔分类 -  C/C++

摘要:之前参加了阿里的笔试和电面,让后天那个敏感的日子去参加现场面,就去看了一下那天笔试的最后一道综合题,看着网上清一色最后一道题不知道从哪转的答案,不忍直视,一看代码就是错的,最直接的就是求中位数连奇偶性都不判断,直接处以2..这,另外当在无法整除的情况下,数据结果错误。无法处理小数这道题的大意是:有一个淘宝商户,在某城市有n个仓库,每个仓库的储货量不同,现在要通过货物运输,将每次仓库的储货量变成一致的,n个仓库之间的运输线路围城一个圈,即1->2->3->4->...->n->1->...,货物只能通过连接的仓库运输,设计最小的运送成本(运货量*路程)达 阅读全文
posted @ 2013-06-02 16:13 lazycoding 阅读(1293) 评论(3) 推荐(1) 编辑
摘要:看到本题是在搜狗某年的笔试题上,看也没人给出非常详细的讲解,直接给出了答案,我来尝试写一写,错误之处园友们指教.貌似本题来源自<The C Puzzle Book> ,搜狗也只是换了一下字符串,直接看题吧#include <stdio.h>char *c[]={"ENTNG", "NST","AMAZI","FIRBE"};char** cp[]={c+3, c+2, c+1, c};char ***cpp= cp;int main() { printf("%s",**+ 阅读全文
posted @ 2013-04-17 08:32 lazycoding 阅读(2602) 评论(7) 推荐(1) 编辑
摘要:坊间流传的代码都有些问题,比如不能正常获取win7以上的版本信息,不能获取诸如专业版,旗舰版等的信息,不能正常获取操作系统位的信息。使用代码,写了一个简单的库来实现效果。用法大概如下:StringBuilder sb = new StringBuilder(String.Empty);sb.AppendLine("Operation System Information");sb.AppendLine("----------------------------");sb.AppendLine(String.Format("Name = {0}& 阅读全文
posted @ 2012-11-23 13:33 lazycoding 阅读(990) 评论(0) 推荐(0) 编辑
摘要:介绍调试是软件开发周期中的一个很重要的部分,有时很有挑战性,有时候则让程序员迷惑,有时候让程序员发疯,但是。可以肯定的是,对于任何不是太那个微不足道的程序来说,调试是不可避免的。近年来,调试工具的发展已经使得很多调试任务简单省时了。本文总结了十个调试技巧,当你使用VS的时候可以节省你很多时间。1.悬停鼠标查看表达式调试有时候很有挑战性,当你步入一个函数想看看哪块出错的时候,查看调用栈来想想值是从哪来的。另一些情况下,则需要添加一些监视表达式,或者查看局部变量列表,这通常还是花费一些时间的,但是。如果你把你鼠标指向你感兴趣的一个变量。你会发现事情简单多了。而且,类和结构体可以通过单击展开。这样。 阅读全文
posted @ 2012-10-03 10:49 lazycoding 阅读(24347) 评论(26) 推荐(26) 编辑
摘要:译自stackoverflow,一个很有意思的问题。问题:string str = "abcdefgdcb";cout < < sizeof(str.substr(0,3).c_str());For some reason, the above string is giving me 8. I assumed c_str() returns a null string,由于某些原因,上面的这个字符串得到的结果是8,我估计c_str()返回了一个null,and sizeof uses the null to determine the size of the s 阅读全文
posted @ 2012-05-21 11:15 lazycoding 阅读(1787) 评论(0) 推荐(0) 编辑
摘要:免责申明(必读!):本博客提供的所有教程的翻译原稿均来自于互联网,仅供学习交流之用,切勿进行商业传播。同时,转载时不要移除本申明。如产生任何纠纷,均与本博客所有人、发表该翻译稿之人无任何关系。谢谢合作!原文链接:http://www.codeproject.com/Articles/76252/What-are-TCHAR-WCHAR-LPSTR-LPWSTR-LPCTSTR-etc许多VC++ 程序员对于像TCHAR,LPCTSTR这样诡异的标识符感到非常迷惑,今天,我将尝试简短的把这团迷雾解释清楚。一般来说,一个字符(character)占用1字节或是2字节,我们说1字节的字符是ANSI, 阅读全文
posted @ 2012-03-11 10:18 lazycoding 阅读(5061) 评论(2) 推荐(2) 编辑
摘要:程序功能描述: 把每有个字符看成是二进制位数据,程序提供给这些字符组成的图像加边框操作、横向合并操作、纵向合并操作。 1 #include <iostream> 2 using namespace std; 3 class Picture; 4 ostream& operator<<(ostream&,const Picture&); 5 Picture frame(const Picture&); 6 Picture operator&(const Picture&,const Picture&); 7 Pict 阅读全文
posted @ 2012-02-13 20:08 lazycoding 阅读(686) 评论(0) 推荐(0) 编辑
摘要:1 #include <iostream> 2 #include <string> 3 #include <stack> 4 5 using namespace std; 6 int main() 7 { 8 string str ="I live in cnblogs.com"; 9 stack<char> cStack ;10 for(int i=0,w=0;i <str.length(); i++) 11 { 12 if (str[i]==' '||i==str.length()-1) 13 { 1 阅读全文
posted @ 2012-02-12 20:46 lazycoding 阅读(562) 评论(0) 推荐(0) 编辑
摘要:免责申明(必读!):本博客提供的所有教程的翻译原稿均来自于互联网,仅供学习交流之用,切勿进行商业传播。同时,转载时不要移除本申明。如产生任何纠纷,均与本博客所有人、发表该翻译稿之人无任何关系。谢谢合作!原文链接地址:http://www.codeproject.com/Tips/80953/Converting-VS2010-Solution-to-VS2008如果你使用VS2010的任何版本写代码,那么在VS2008中就不能打开VS2010的解决方案了,为此,通过以下三步就可以解决了一.对于工程名.sln;1.用你喜欢的编辑器打开sln文件,比如notepad++2.找到下面的字符串Micr 阅读全文
posted @ 2012-01-25 15:21 lazycoding 阅读(4850) 评论(7) 推荐(2) 编辑
摘要:#include <iostream>using namespace std;int main(){ string s; cin>>s; int count=0; for(int i=0;i<s.length();i++) { if(s[i]=='(') count++; else if(s[i]==')') if(count==0) { ... 阅读全文
posted @ 2012-01-04 18:16 lazycoding 阅读(490) 评论(0) 推荐(0) 编辑
摘要:免责申明(必读!):本博客提供的所有教程的翻译原稿均来自于互联网,仅供学习交流之用,切勿进行商业传播。同时,转载时不要移除本申明。如产生任何纠纷,均与本博客所有人、发表该翻译稿之人无任何关系。谢谢合作!原文链接地址:http://os-blog.com/basic-malloc-implementation/ 已经有很多不同的,很强大的malloc的具体实现,比如tcmalloc,ptmalloc,dlmalloc, andjemalloc,但是,在我们不加思索的使用这些之前,考虑一下如果实现一个基本的简单的malloc函数是非常有用的。现在,一般来说,我们可以实现malloc使得对mallo 阅读全文
posted @ 2012-01-02 21:53 lazycoding 阅读(3263) 评论(0) 推荐(0) 编辑
摘要:题意:是找到一个最小的正整数Q,使Q的各位数的乘积等于N。思路:从9到2取余。#include <iostream>#include <algorithm>using namespace std;bool fun(int x,int *ops,int &num){ if(x==1) return 1; for(int i=9;i>=2;i--) { if(x%i==0) { ops[num]=i; //ops存储分解后的数集合 ... 阅读全文
posted @ 2011-12-28 23:08 lazycoding 阅读(251) 评论(0) 推荐(0) 编辑
摘要:基本思想: 先取一个小于n的整数d1作为第一个增量,把文件的全部记录分成d1个组。所有距离为dl的倍数的记录放在同一个组中。先在各组内进行直接插人排序;然后,取第二个增量d2<d1重复上述的分组和排序,直至所取的增量dt=1(dt<dt-l<…<d2<d1),即所有记录放在同一组中进行直接插入排序为止。 该方法实质上是一种分组插入方法。具体的算法实现K&R C程序设计一书中给出的代码 C和C++代码 1 void shellsort(int v[], int n) 2 { 3 int gap, i, j, temp; 4 for(gap=n/2;gap>0; 阅读全文
posted @ 2011-12-11 19:37 lazycoding 阅读(325) 评论(0) 推荐(0) 编辑
摘要:1.按值调用适用于不被函数更改的小对象 (你懂的)2.按常量引用调用适用于不被函数更改的大对象 (const &)3.引址调用适用于所有可以被函数更改的对象 ( &) 阅读全文
posted @ 2011-09-03 18:19 lazycoding 阅读(541) 评论(0) 推荐(0) 编辑
摘要:下面列举了一些选择容器类型的法则: (1)如果程序要求随机访问元素,则应使用vector或deque容器。 (2)如果程序必须在容器的中间位置插入或删除元素,则应采用list容器。 (3)如果程序不是在容器的中间位置,而是在容器首部或尾部插入或删除元素,则应采用deque容器。 (4)如果只需在读取输入时在容器的中间位置插入元素,然后需要随机访问元素,则可考虑在输入时将元素读入到一个list容器,接着对此容器重新排序,使其适合顺序访问,然后将排序后的list容器复制到一个vector容器。 如果程序既需要随机访问又必须在容器的中间位置插入或删除元素,那应该怎么办呢? 此时,选择何种容器取决于下 阅读全文
posted @ 2011-05-08 12:17 lazycoding 阅读(379) 评论(0) 推荐(0) 编辑
摘要:当显示字符类型的指针时,这个指针将显示字符串而不是指针的内容,如果要在字符指针中显示地址,只需把它强制转换成void指针只有地址可以被存储在指针变量中函数头结尾处的const,使函数成为常量函数,常量函数不能改变调用对象,主要是为了确保函数不会意外地改变对象。构造函数的三种用法 1) 初始化类数据成员,类的数据成员不能在类的声明中被初始化,因为每个对象都有自己的变量,并且必须由正在被创建的对象所需要的值来初始化。 2) 构造函数还可以用于验证数据。 3) 构造函数必须用于为对象分配内存。Tip:构造函数不能有返回类型,即使是空类型,如果提供了任意类型的构造函数,编译器就不会提供默认的构造函数了 阅读全文
posted @ 2011-05-02 17:22 lazycoding 阅读(248) 评论(0) 推荐(0) 编辑
摘要:C++语言中的表达式可分为算术表达式,关系表达式和逻辑表达式等多种类型,但从表达式中变量所起的作用角度来看可分为两类:有副作用的表达式和无副作用的表达式. 1 有关表达式的副作用的概念一般说计算一个表达式的值需要引用一些变量,在表达式求值过程中,需要提取这些变量的值,但并不改变这些变量的值,这样的表达式称为无副作用的表达式.从传统意义上讲,表达式的作用就是计算,它除了产生一个计算结果外,不应该改变参与计算过程的任何变量的值或产生其它的效应.换句话说,传统意义上的表达式是不应该有副作用的.因此,绝大多数的高级语言中的表达式都是无副作用的表达式.C++语言兼有高级语言和低级语言的特点,是一种典型. 阅读全文
posted @ 2011-04-27 22:27 lazycoding 阅读(4340) 评论(0) 推荐(1) 编辑
摘要: 阅读全文
posted @ 2011-04-21 23:01 lazycoding 阅读(222) 评论(0) 推荐(0) 编辑
摘要:1.Count1InAInteger()用来计算某一个数中1的个数,使用求余,然后再main中循环调用,但效率不高 1 #include <iostream> 2 using namespace std; 3 4 unsigned long Count1InAInteger(unsigned long n) 5 { 6 unsigned long iNum = 0; 7 while(n != 0) 8 { 9 iNum += (n % 10 == 1) ? 1 : 0;10 n /= 10;11 }12 return iNum;13 }14 15 unsigned long mai 阅读全文
posted @ 2011-04-08 15:37 lazycoding 阅读(820) 评论(0) 推荐(2) 编辑
摘要:注意看光标,这个有人遇到过吗?就是只要你点字符,就会占掉这个字符,只能修改了。。不能插入字符。其实解决问题很简单,按一下键盘上的“Insert”也就是插入键就可以了,小技巧。。 阅读全文
posted @ 2011-03-27 19:50 lazycoding 阅读(806) 评论(3) 推荐(0) 编辑