- 博客(22)
- 收藏
- 关注
原创 StrBlobPtr算术运算符的实现
简介参见C++primer第十四章第六节的习题类说明这个类是一个指向StrBlob类的指针,只不过不同于普通指针,该类的数据成员有一个weak_ptr,在构造函数中,我们将该指针指向shared_ptr指向的内容,不过该指针并不会像shared_ptr那样,为use_count增加一个。由于 weak_ptr 所指向的对象可能不存在,因此使用了一个 check() 来检查该类在进行操...
2019-10-15 11:42:48
231
原创 链表reverse
很普通的单向链表转置,主要方法是利用NODE *pCur指向待改变方向的节点,利用NODE *pRev指向待改变方向节点的上一个节点(如果是第一个节点,即头节点,因为转置后该节点变为尾节点,则此时为NULL),在循环中创建一个中间变量NODE* pTmp,利用中间变量 tmp 存储 cur指针变量存储的节点地址,然后改变cur指向下一个节点,再将tmp指针指向的节点的pNext = pRev,此时...
2019-05-21 21:47:38
416
原创 字符串排序
该程序可以对输入的字符串进行排序,windows中以Ctrl+z结束。程序的思路是利用指针数组,指向存储在alloc函数分配的空间中的字符串,使用Qsort函数进行比较。在Qsort函数中,将key也就是待回归的值变为指针变量来存储指针数组中的地址,然后利用这个地址和其它指针数组中的地址传进strcmp函数中,来逐字比较字符串的大小,最后进行指针指向地址的交换。readline函数主要起一个读入输...
2019-03-25 15:55:41
232
1
原创 TCPL 4-13
题目:编写一个递归版本的reverse(s)函数,以将字符串s倒置;这个题目真的让我困惑了很长时间,原因是我在测试时直接写了int *pstr = "hello",然而这样是将pstr指向了一个常量,它存储在静态存储区内,所以在下面想要修改时,就会出现错误。必须时用scanf或者strcpy函数来将值写入或复制到该变量内。#include <stdio.h>#include...
2019-03-24 21:23:47
178
原创 TCPL 4-12
题目:运用printd函数的设计思想编写一个递归版本的itoa函数。即通过递归调用把整数转换为字符串。在这里,我先将itoa函数写了出来,然后再写了一下递归版本的,很显然,递归版本的代码量远远小于正常版本的。但是相应的也要付出一定的空间代价。#include <stdio.h>#include <stdlib.h>#include <malloc.h&g...
2019-03-24 16:55:49
205
原创 逆波兰计算器
上次所写的逆波兰计算器完全就是在云里雾里的情况下抄袭而成,这次经过多次的调试和自己动手写,明白了逆波兰运算器的原理,当然,例如TCPL书中所写的ungetch我是没有用到的。#include <stdio.h>#include <stdlib.h>#include <ctype.h>#include <math.h>/*** 创建...
2019-03-13 23:15:58
143
原创 TCPL 3-2
题目要求:编写一个escape(s, t), 将字符串t复制岛字符串s中,并再复制过程中将换行符、制表符等不可见字符分别转换位\n、\t等相应的可见的转义字符序列。要求使用switch语句。再编写一个具有相反功能的函数,在复制过程中将转义字符序列转换位实际字符。void escape(char *s, char *t, int bit) //t被复制的变量, s存储复制结果的变量{ ...
2019-02-25 16:09:50
317
原创 TCPL 2-9
题目:在求对二的补码时,表达式x &= (x -1)可以删除x中最右边值为1的一个二进制位。请解释这样做的道理。用这一方法重写bitcount函数,以加快其执行速度。int bitcount(unsigned x){ int nCount = 0; while(x != 0) { x &= x - 1; nCount++;...
2019-02-25 14:51:36
146
原创 strindex
该程序首先会选择一个字符串str,然后打印不包含该字符串的段落,以输入EOF结束#include <stdio.h>#include <stdlib.h>#define MAXLINE 1000int strindex(char *bufs, char *pattern);int getline(char *bufs, int limt);const c...
2019-02-25 10:57:24
1639
原创 TCPL 2-7
题目:编写一个函数invert(x, p, n),该函数返回对x执行下列操作后的结果值:将x种从中p位开始的n个(二进制)位求反(即,1变成0, 0变成1),x的其余各位保持不变。下面是代码:unsigned invert(unsigned x, int p, int n){ return ~(~0 << n) << (p - 1) ^ x &...
2019-01-27 13:44:29
222
原创 TCPL 2-6
题目:编写一个函数setbits(x, p, n, y), 该函数返回对x执行下列操作后的结果值:将x中从第p位开始的n个(二进制)位设置为y中最右边n位的值,x的其余各位保持不变。 对这个题目有两个理解,将x中从p位开始的n位 设置 到 y最右边(返回结果以y为标准),或者将y中最右边的n位 设置 到x中 从p位开始 的n位(返回结果以x为标准)。我将两种结果都写了出来。下面是第...
2019-01-22 21:08:39
178
原创 二分查找
int binSearch(int *nums, int size, int num){ int hight = size; int lower = 0; int mid = 0; while(lower < hight) { mid = (hight + lower) / 2; if(num > nums[...
2019-01-20 21:19:38
112
转载 逆波兰计算器
#include <stdio.h>#include <stdlib.h>#include <ctype.h>#define MAXOP 100 //操作数或运算符的最大长度#define NUMBER '0' //标识找到一个数int getop(char *s);void push(double f);double ...
2019-01-15 11:17:21
181
原创 TCPL 2-4
题目:重新编写squeeze函数,将字符串s1中任何与字符串s2中字符匹配的字符都删除。char* squzee(char *pstr_1, char *pstr_2){ int i = 0; int j = 0; int k = 0; for(; pstr_2[k] != '\0'; k++) { i = 0; f...
2019-01-12 14:58:56
183
原创 TCPL 2-3
题目:将字符串类型的十六进制数转化成整数类型的十进制数。long htoi(char *pstr){ int i = 0; int nNums = 0; int nIdx = 0; long lSum = 0; if(pstr[i] == '-') { nIdx = -1; i++; } w...
2019-01-11 21:43:49
162
原创 TCPL 2-1
题目:确定signed和unsigned的范围#include <stdio.h>#include <stdlib.h>#include <limits.h>int main(){ printf("signed char min = %d\n", SCHAR_MIN); printf("signed char max = %d\n...
2019-01-10 15:17:43
195
原创 TCPL 1-23(扩展版)
题目:编写一个删除C语言程序中所有的注释语句。要正确处理带引号的字符串与字符常量。在C语言中程序中,注释不允许嵌套。#include <stdio.h>#include <stdlib.h>int main(){ int c = 0; int pos = 1; int d = 0; while((c = getchar()) ...
2019-01-10 14:52:54
170
转载 Atof 字符串转化为浮点数
double Atof(const char *pstr){ int idx = 0; int sign = 0; double num = 0.0; double power = 1.0; for(; pstr[idx] == ' '; idx++);//跳过空格 sign = (pstr[idx] == '-') ?-1 : 1; ...
2019-01-08 17:36:05
507
原创 Shell排序
void shellSort(int *nums, int n){ int nTmp = 0; int i, j, gap; for(gap = n / 2; gap > 0; gap /= 2) { for(i = gap; i < n; i++) { for(j = i - gap; j &...
2019-01-05 14:18:55
119
原创 快速排序 C实现
void QuickSort(int *nums, int left, int right){ int i = left; int j = right; int key = nums[left]; if(left > right) { return; } while(i < j) { ...
2019-01-05 13:59:55
117
原创 extern使用sizeof
在拥有多个文件的C项目之中,例如有三个文件,一个头文件palyer.h, 一个头文件的源文件 player.c ,一个 main.c ,在 player.c 中定义一个结构数组,然后,在 main.c 中使用sizeof(数组)/sizeof(元素)来获取其大小。但是, 如果该语句在main.c中使用会发生 “nvalid application of 'sizeof' to incomplete...
2019-01-03 16:50:04
1013
原创 TCPL 1-22
编写一个程序,把较长的输入行“折”成短一些的两行或多行。#include <stdio.h>#define MAXCOL 10#define TABINC 8void printl(int pos);int exptab(int pos);int newline(int pos);int findline(int pos);char line[MAXCOL];...
2019-01-02 11:41:31
197
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人