C/C++
文章平均质量分 63
ngcl
大兔子
展开
-
编写类 String 的构造函数、析构函数和赋值函数
已知 String 类的原型为:编写 String 类的以上4个函数。class String{public: String (const char* str = NULL); // 普通构造函数 String (const String &other); // 拷贝构造函数 ~String(void转载 2013-10-06 22:19:37 · 772 阅读 · 0 评论 -
get_line
#include #define MAXLINE 1000int getline(char s[], int lim){ int c, i; for (i = 0; i<lim-1 && (c=getchar())!=EOF && c!='\n'; ++i) s[i] = c; if (c == '\n') { s[i++转载 2014-05-12 16:07:15 · 1213 阅读 · 0 评论 -
count_words
#include #define IN 1#define OUT 0int main(){ int c, nl, nw, nc, state; state = OUT; nl = nw = nc = 0; while ( (c = getchar()) != EOF ) { ++nc; if (c ==转载 2014-05-12 16:08:57 · 488 阅读 · 0 评论 -
squeeze_ch
#include void squeeze(char s[], char ch){ int i, j; for (i = j = 0; s[i] != '\0'; ++i) if (s[i] != ch) s[j++] = s[i]; s[j] = '\0';} int main(){ char s[] =转载 2014-05-12 16:12:33 · 332 阅读 · 0 评论 -
find_ould
int strindex(char s[], char t[]){ int i, j, k; for (i = 0; s[i] != '\0'; ++i) { for (j = i, k = 0; t[k] != '\0' && s[j] == t[k]; ++j, ++k) ; if (k > 0 && t[k]转载 2014-05-13 13:39:28 · 330 阅读 · 0 评论 -
sting_to_double
double atof(char s[]){ double val, power; int i, sign; for (i = 0; isspace(s[i]); ++i) ; sign = (s[i] == '-') ? -1 : 1; if (s[i] == '+' || s[i] == '-') ++i转载 2014-05-13 13:52:13 · 432 阅读 · 0 评论 -
int_to_string
#include #include void reverse(char s[]){ int i, j, temp; for (i = 0, j = strlen(s) - 1; i < j; ++i, --j) { temp = s[i]; s[i] = s[j]; s[j] = temp; }}转载 2014-05-12 21:43:55 · 374 阅读 · 0 评论 -
trim
int trim (char s[]){ int n; for (n = strlen(s) - 1; n >= 0; --n) if (s[n] != ' ' && s[n] !='\t' && s[n] != '\n') break; s[n + 1] = '\0'; return n;}转载 2014-05-12 21:50:16 · 433 阅读 · 0 评论 -
Find_Pair_Sum
#include void findPair(int A[], int n, int sum){ int beg = 0; int end = n - 1; while (beg { if (A[beg] + A[end] == sum) { printf("%2d +转载 2014-06-01 21:45:05 · 383 阅读 · 0 评论 -
Array_Max_Divide
#include int ArrayMax(int A[], int l, int r){ int u, v; int m = (l + r) / 2; if (l == r) return A[l]; u = ArrayMax(A, l, m); v = ArrayMax(A, m + 1, r);转载 2014-06-02 21:23:30 · 434 阅读 · 0 评论 -
赋值运算符重载
问题:给出如下CMyString的声明,要求为该类型添加赋值运算符函数。class CMyString{public: CMyString(char* pData = NULL); CMyString(const CMyString& str); ~CMyString(void); private: char* m_pData;转载 2014-06-03 20:26:40 · 422 阅读 · 0 评论 -
char *p和 char p[]的区别
答:char* p是一个指针,根本没分配内存,他指向的"abc123ABC" 是只读的,不能改变,你在下面给他赋值肯定是错的而char p[]是一个数组,已经分配内存,是将"abc123ABC" 复制到该内存里面,这个内存是可读写的追问char *p是不是相当于定义了一个字符串常量,字符串的内容不能改变?回答你都会说它是字符串常量了,怎么可以改变它的值呢?转载 2014-06-13 17:35:21 · 2795 阅读 · 0 评论 -
字符数组 字符指针 字符串常量
转自:http://blog.sina.com.cn/s/blog_71fa0df50100p0qu.htmlchar *c="chenxi";书上说: "chenxi"这个字符串被当作常量而且被放置在此程序的内存静态区。那一般的int i=1;1也是常量,为什么1就不被放置在此程序的内存静态区了呢?请高手指点!所有的字符窜常量都被放在静态内存区因为字符串常量很少需转载 2014-06-13 17:53:36 · 735 阅读 · 0 评论 -
string_match_index
#include #include using namespace std;int match(const string& target, const string& pattern){ int target_length = target.size(); int pattern_length = pattern.size(); int target_转载 2014-05-30 13:39:37 · 427 阅读 · 0 评论 -
a的n次方
我们可以用如下公式求a的n次方:这个公式很容易就能用递归来实现。新的PowerWithUnsignedExponent代码如下:double PowerExponent(double base, unsigned int exponent){ if(exponent == 0) return 1; if(exponent == 1) r转载 2014-06-14 16:27:08 · 1743 阅读 · 0 评论 -
reverse_all_part_words
#include #include void reverse(char str[], int beg, int end){ char tmp; while (beg < end) { tmp = str[beg]; str[beg] = str[end]; str[end] = tmp; ++转载 2014-06-01 18:49:44 · 443 阅读 · 0 评论 -
findPair
void findPair(int A[], int n, int sum){ int beg = 0; int end = n - 1; while (beg < end) { if (A[beg] + A[end] == sum) { printf("%2d + %2d = %2d\n", A[转载 2014-06-03 13:51:03 · 603 阅读 · 0 评论 -
ContinuousSum_n
void FindContinuousSequence (int n){ if (n < 3) return; int l = 1, r = 2; int sum = l + r; while ( l < (n + 1)/2 ) { if (sum < n) { ++r;转载 2014-06-03 17:12:37 · 365 阅读 · 0 评论 -
bitcount
#include int bitcount1(unsigned x){ int b; for (b = 0; x != 0; x >>= 1) if (x & 01) ++b; return b;}int bitcount2(unsigned x){ int b = 0; while (x) {转载 2014-05-12 16:37:31 · 488 阅读 · 0 评论 -
waterKing
int Find(int a[], int N){ int candidate; int nTimes, i; for(i = nTimes = 0; i < N; ++i) { if(nTimes == 0) { candidate = a[i], nTimes = 1; }转载 2014-05-07 21:10:53 · 384 阅读 · 0 评论 -
oddNumFrist
#include int oddNum(int num){ if (num % 2 == 1) return 1; else return 0;}void swap(int A[], int i, int j){ int t = A[i]; A[i] = A[j]; A[j] = t;} void printArra转载 2014-05-07 15:46:05 · 322 阅读 · 0 评论 -
继承访问控制
继承方式同存取方式一样,分为三类:public, private, protected.公有继承(public):公有继承的特点是子类成员函数可以访问父类公有成员和保护成员变量和函数,不能访问父类的私有成员。公有成员被子类继承为公有成员,保护成员被子类继承为保护成员,私有成员被子类继承为不能访问的私有成员。私有继承 (private):子类成员函数不能访问父类的任何形式的成员变量和函数。公转载 2013-10-07 13:24:10 · 495 阅读 · 0 评论 -
类中的 public, protect, private
public, protect, private 是实现面向对象的封装性的关键。控制了类的接口访问权限,并控制了子类对父类的继承关系。public 和 private 的区别。public 的变量和函数在类的内部和外部都可以访问,而 private 只在类的内部可以访问。例如:#include using namespace std;class Humen{ p转载 2013-10-06 18:44:08 · 3845 阅读 · 0 评论 -
memset
函数原型void *memset(void *s, int ch, size_t n);函数解释:将s中前n个字节 (typedef unsigned int size_t)用 ch 替换并返回 s 。将s所指向的某一块内存中的前n个字节的内容全部设置为ch指定的ASCII值, 块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作, 其返回值为指向S的指针。转载 2014-03-12 19:09:05 · 367 阅读 · 0 评论 -
char *strcpy(char *des, const char *src)函数
地道的版本:char *strcpy (char *dst, const char *src){ char *s = src; while (*dst++ = *src++) ; return s;}转载 2014-03-12 19:13:04 · 872 阅读 · 0 评论 -
funciton sprintf
functionsprintfint sprintf ( char * str, const char * format, ... );Write formatted data to stringComposes a string with the same text that would be printed if format was used onprintf转载 2014-03-12 21:15:02 · 349 阅读 · 0 评论 -
funciton snprintf
snprintfint snprintf ( char * s, size_t n, const char * format, ... );Write formatted output to sized bufferComposes a string with the same text that would be printed if format was used on转载 2014-03-12 21:31:05 · 478 阅读 · 0 评论 -
嵌入式程序员C语言测试题
http://www.cnblogs.com/hicjiajia/archive/2011/01/20/1940154.htmlC语言测试是招聘嵌入式系统程序员过程中必须而且有效的方法。这些年,我既参加也组织了许多这种测试,在这过程中我意识到这些测试能为面试者和被面试者提供许多有用信息,此外,撇开面试的压力不谈,这种测试也是相当有趣的。 从被面试者的角度来讲,你能了解许转载 2014-03-13 14:48:37 · 551 阅读 · 0 评论 -
从内存理解c语言中变量的存储类型
首先要来理解一下可执行文件加载进内存后形成的进程在内存中的结构,如下图:代码区:存放CPU执行的机器指令,代码区是可共享,并且是只读的。数据区:存放已初始化的全局变量、静态变量(全局和局部)、常量数据。BBS区:存放的是未初始化的全局变量和静态变量。栈区:由编译器自动分配释放,存放函数的参数值、返回值和局部变量,在程序运行过程中实时分配和释放,栈区由操作系统转载 2014-03-13 16:47:55 · 501 阅读 · 0 评论 -
static、extern、volatile的用法
static的用法: 静态变量作用范围在一个文件内,程序开始时分配空间,结束时释放空间,默认初始化为0,使用时可以改变其值。 静态变量或静态函数只有本文件内的代码才能访问它,它的名字在其它文件中不可见。 用法1:函数内部声明的static变量,可作为对象间的一种通信机制 如果一局部变量被声明为static,那么将只有唯一的一个静态分配的对象,它被用于在该函数的所有调用中表示这个变量转载 2014-03-13 14:59:45 · 625 阅读 · 0 评论 -
const关键字的作用
const类型定义:指明变量或对象的值是不能被更新,引入的目的是为了取代预编译指令××××××常量必须被初始化×××××××××××××××const的作用 A 可以定义const常量,如 const int Max = 100; int Array[Max]; B 便于进行类型检查,如转载 2014-03-13 16:43:53 · 668 阅读 · 0 评论 -
字符串子集合
O(m + n)算法:#include #include using namespace std;int main(){ string s1 = "ABCDEFGHLMNOPQRS"; string s2 = "DCGSRQPO"; int num = 0; int arr[26] = {0}; for (int i转载 2014-04-30 20:54:33 · 598 阅读 · 0 评论 -
top-500
/* Find top-500 min integers among 1000000 random numbers by using quickselect algorithm, return running time */#include #include void GetNumFile (FILE* sp, long long int num){ int i转载 2014-05-01 21:39:17 · 485 阅读 · 0 评论 -
quick-select
#include void swap (int A[], int i, int j) { int t = A[i]; A[i] = A[j]; A[j] = t; }void Print_topK (int A[], int size){ int i; for (i = 0; i < size; ++i) { if (i % 10 == 0 && i转载 2014-05-02 14:39:16 · 468 阅读 · 0 评论 -
assert
assert() 是C语台标准库中提供的一个通用预处理器宏在代码中常利用 assert() 来判断一个必需的前提条件以便程序能够正确执行例如假定我们要读入一个文本文件并对其中的词进行排序必需的前提条件是文件名已经提供给我们了这样我们才能打开这个文件为了使用assert()必须包含与之相关联的头文件 #include 下面是一个简单的使用示例:assert( filena转载 2014-05-02 16:02:04 · 450 阅读 · 0 评论 -
C++ 中的 explicit 关键字
C++提供了 关键字 explicit,可以阻止不应该允许的经过转换构造函数进行的隐式转换的发生。声明为 explicit 的构造函数不能在隐式转换中使用。C++中, 一个参数的构造函数(或者除了第一个参数外其余参数都有默认值的多参构造函数), 承担了两个角色。 1 是个构造器 ,2 是个默认且隐含的类型转换操作符。所以, 有时候在我们写下如 AAA = XXX, 这样转载 2014-03-21 16:35:52 · 492 阅读 · 0 评论 -
C++中的修饰符 mutable
mutable 意为易变的;反复无常的。在C++语言中,是命令语言——如果一个函数被const 修饰,那么它将无法修改其成员变量的,但是如果这个成员变量是被mutable修饰的话,则可以修改。mutable 可以用来指出,即使结构或者类变量为const,其某个成员也可以被修改。在c++的类中, 如果一个函数被const 修饰,那么它将无法修改其成员变量的,但是如果这个成员变转载 2014-03-21 20:03:07 · 1339 阅读 · 0 评论 -
All_Perm
void All_Perm (int A[], int first, int size){ if (size < 2) return; for (int i = frist; i < first + size; ++i) { swap (A[i], A[first]); All_转载 2014-05-07 14:50:37 · 318 阅读 · 0 评论 -
Gold Coins
/* Gold Coin, Poj. 2000*/#include int goldSum (int day){ // Local Declarations int i; // for loop of days int sum = 0; // total num of gold int num = 1; // given gold i转载 2014-10-02 14:52:34 · 978 阅读 · 0 评论