
C/C++
文章平均质量分 66
安菲拉尔
这个作者很懒,什么都没留下…
展开
-
int、long、long long在printf中的格式
在printf中%d用于int或者比int小的整数类型。比int小的类型被转型成int。%ld用于long类型,%lld用于long long类型。%x标识的数会被当成int进行读取,所以long long类型的数如果超过int的范围会被截断,得不到正确的结果。而且因为它多占了4个字节,还会影响后面的其它标识符的输出。另外%f标识的数会被当成double读取,即取出8个字节读取原创 2012-10-24 16:11:09 · 182740 阅读 · 6 评论 -
C语言的类型转换
菜鸟的C语言感悟 之 类型转换1.1大端和小端 我们知道存储器是以字节为单位来存放数据的,每个字节有8位,因此1个字节最多可以表示256种不同的状态。256种状态对于常用的整数和浮点类型来说是远远不够的,因此这些类型的数据需要用多个字节来表示,如在32位环境下,int一般是4个字节,double一般是8个字节。对于跨越多字节的程序对象,我们必须建立一个规则:在存储器中如果排列原创 2013-04-23 22:27:59 · 1584 阅读 · 0 评论 -
C的代码是如何变成程序的
C的代码是如何变成程序的 C语言是一门典型的编译语言,源代码文件需要编译成目标代码文件才能运行。可以认为程序文件就是编译好的目标代码文件。以GCC的编译过程为例。GCC的翻译过程可以分成四个阶段:预处理器、编译器、汇编器、链接器,执行这四个阶段的程序一起构成了一个编译系统。图 1 GCC编译系统(取自《深入理解计算机系统》)1 预处理器原创 2013-04-07 22:00:25 · 10074 阅读 · 1 评论 -
校招季——编程题目(1-2)
2013/08/12,秋季校招准备工作第一天。1. 与K有关的数题目:输入正整数K与N,求出不大于N的与K有关的数的数目。与K有关的意思是:是K的非0整数倍或数字中包含K(如123中包含12和23等)。解答:先判断i能否被K整除,如果不能的话,用mask依次取i中长度为len(K)的一段与K对比。1234567原创 2013-08-12 21:01:07 · 1027 阅读 · 0 评论 -
校招季——编程题目(8-9)
2013/08/18,后天就回本部准备校招了,争取今天能将题目总结到70题。8. 最大子序列和题目:输入一个长度为n的序列,其中元素有正有负,求其中序列和最大的连续子序列,如果不存在序列和为正数的连续子序列,返回0。解答:方法一:思路:遍历所有子序列,求出序列和,找出其中和最大的那个。时间复杂度O(n3),空间复杂度O(1)。方法二:思路:先求出长原创 2013-08-18 21:10:47 · 787 阅读 · 0 评论 -
校招季——编程题目(12-13)
12. 快速求幂(题目047)题目:给定两个整数base和exp(非负整数),求base的exp次幂,要求O(lgN)的时间复杂度。解答:int FastPow(int base, int exp){ if (exp == 0) return 1; if (exp == 1) return base; in原创 2013-08-29 21:40:47 · 720 阅读 · 0 评论 -
校招季——编程题目(10-11)
10.最大子序列和题目:输入一个长度为n的序列,其中元素有正有负,求其中序列和最大的连续子序列,如果不存在序列和为正数的连续子序列,返回0。解答:方法一:思路:遍历所有子序列,求出序列和,找出其中和最大的那个。时间复杂度O(n3),空间复杂度O(1)。方法二:思路:先求出长度为n的辅助数组sum,其中sum[i]是data[0,i]的和,原创 2013-08-28 15:33:45 · 815 阅读 · 0 评论 -
校招季——编程题目(73) 回文数
73. 回文数题目:1. 测试一个数是不是回文数。2. 逆转一个数的二进制表示。解答:对于问题1,方法1:用itoa将这个数转换成字符串,再测试这个字符串是不是回文字符串。方法2:用两个mask从两端提取数字再比较:int mask1 = /* 和x同位数,略 */, mask2 = 10;for ( ; mask1原创 2013-08-31 10:52:52 · 926 阅读 · 0 评论 -
校招季——编程题目(15、16) 约瑟夫问题 最大子矩阵和
15. 约瑟夫问题(题目042)题目:n个人围成一圈,从第一个开始报数,第m个将被杀掉,最后剩下一个,其余人都将被杀掉。求最后剩下的人的序号。例如n=6,m=5,被杀掉的人的序号为5,4,6,2,3。最后剩下1号。解答:思路:如果要打印整个过程,有3种方法:1. 链表法:产生长度为n的循环链表,然后每遍历m次输出当前序号,并删除节点,直到链表中只有原创 2013-09-07 11:10:57 · 1392 阅读 · 0 评论 -
指针的总结
指针的总结1 关于指针的一些概念1.1 什么是变量变量提供了程序可以操作的有名字的存储区。C/C++中的每个变量都有特定的类型,该类型决定了变量的内存大小和布局、能够存储于该内存中的值以及可应用在该变量上的操作集。也可以称有着完整的含义和功能的一块内存区域为变量或对象。1.2 什么是指针指针就是一种变量类型。它的大小依机器而定,在32位机上一般是4个字节。指针变原创 2012-11-19 22:35:04 · 1777 阅读 · 1 评论 -
Google C++ Style Guide中英对照(三)
1 Naming 命名规则The mostimportant consistency rules are those that govern naming. The style of a nameimmediately informs us what sort of thing the named entity is: a type, avariable, a function, a cons翻译 2013-03-19 10:35:22 · 9385 阅读 · 2 评论 -
Using smart pointers for class members
1. Using smart pointers for class membershttp://stackoverflow.com/questions/15648844/using-smart-pointers-for-class-membersQuestion:I'm havingtrouble understanding the usage of smart pointers a翻译 2013-08-06 23:28:45 · 941 阅读 · 0 评论 -
Google C++ Style Guide中英对照(二)
1 Classes 类Classes are thefundamental unit of code in C++. Naturally, we use them extensively. Thissection lists the main dos and don'ts you should follow when writing a class.类是C++最基本的代码单元。显然它们被广翻译 2013-03-13 10:19:20 · 10779 阅读 · 1 评论 -
Google C++ Style Guide中英对照(一)
Google C++ Style Guide翻译版——by安菲拉尔 2013/02/091 Background 背景C++ is the main development language used by many of Google's open-source projects. As every C++ programmer knows, the language has翻译 2013-03-07 16:24:58 · 3552 阅读 · 0 评论 -
C++中用二维数组传参时形参该怎样写
template void func(T (&a)[M][N]);可以直接获取数组长度。转载 2012-11-16 10:46:39 · 717 阅读 · 0 评论 -
C++中继承方式与访问标号的学习笔记
C++中继承方式与访问标号的学习笔记1 无虚函数的情况基类有一个public函数,一个protected函数,一个private函数:class A {public: voidf() { cout<<"A::f"<<endl; g(); h(); }protected: void g() {cout<原创 2012-11-08 10:20:30 · 6248 阅读 · 0 评论 -
C语言中常用文件读写命令总结
fopen函数原型:FILE * fopen(const char * path,const char * mode);mode有下列几种形态字符串:r 以只读方式打开文件,该文件必须存在。r+ 以可读写方式打开文件,该文件必须存在。rw+ 读写打开一个文本文件,允许读和写。w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。原创 2012-10-19 10:25:40 · 2965 阅读 · 0 评论 -
C语言中常用计时方法总结
C语言中常用计时方法总结1. time()头文件:time.h 函数原型:time_t time(time_t * timer) 功能:返回以格林尼治时间(GMT)为标准,从1970年1月1日00:00:00到现在的此时此刻所经过的秒数。用time()函数结合其他函数(如:localtime、gmtime、asctime、ctime)可以获得当前系统时间或是标准时间。用di原创 2012-10-25 09:46:04 · 99808 阅读 · 10 评论 -
迷宫专题总结
(一) 实现一个迷宫的类,要求是可以产生指定大小的迷宫,有一条从起点到终点的路,有分叉与障碍经过一天的奋战,建立起了一个基本达到上面要求的类Mazeenum MazeState {BLOCK, PASSABLE, START, END};class Maze{public: Maze(const int,const int); int resize(const i原创 2012-08-13 19:48:28 · 1137 阅读 · 0 评论 -
scanf和printf处理64位整型变量
昨天做编程马拉松21日的题目时,被它的各种求模给弄的快疯掉了,总是弄不对余数,后来想起来用long long,查了半天,找到了scanf和printf处理long long的格式,记录一下:long long x;scanf("%I64d",&x);printf("%I64d",x);原创 2013-03-24 23:08:55 · 1718 阅读 · 0 评论 -
校招季——编程题目(14) 逆序数
14. 逆序数(题目043)题目:计算一个全由大写字母组成的字符串的逆序数。解答:求逆序数和排序的思路是类似的,稳定的排序算法都可以用来计算逆序数。方法1:最直接的方法,采用冒泡排序和插入排序的思路,一共需要遍历(n-1)*(n-2)次,比较慢。方法2:利用归并排序的思想加速这个过程。一个序列的逆序数等于它的两个递归子过程产生的逆序数与合并过程产生的逆序数之和。在合原创 2013-09-03 20:28:08 · 1294 阅读 · 0 评论