- 博客(50)
- 收藏
- 关注
转载 欧几里得算法(辗转相除法)
第一行 a = 1 = t - a * q,b = t1 - b * q = -q = -2。推出之前的 t = a1 = 1,a = 0,b = 1,t1 = b1 = 0。第二行 a = -1 = t - a * q,b = t1 - b * q = 3。当 m 是 n 的倍数时,最大公因数 d 为 n,am + bn = n,推出 a = 0,b = 1。第二行 a = -1 = -a * q,b = 1 - b * q = 3。a1 = a = -1,b1 = b = 3 保存当前 a,b 的值。
2022-09-10 20:41:40 361
翻译 5.5 拷贝字符,字符串长度、判断某字符串是否是指定字符串的尾部
allocbuf[9999] = ‘z’,allocp = &allocbuf[10000],再也不能分配新的空间。先返回 &allocbuf[4],allocbuf[4] = ‘a’,allocbuf[5] = ‘b’,allocbuf[6] = ‘c’,allocp 很自然的指向 allocbuf[7]。字符串 “abc”,arr[0] = ‘a’,arr[1] = ‘b’,arr[2] = ‘c’,arr[3] = ‘\0’,字符串长度 &arr[3] - &arr[0] = 3。
2022-09-05 17:58:51 101
原创 判断一个数是否是质数
例 53,√53 ≈ 7.28,当循环到 i = 8 时,假设 53 为合数,53 = 8 * j,8 > √53,所以 j < √53,j = num+1 的部分交给下几轮循环,如 num = 4,k = 5 可以交给 num = 5,k = 4。
2022-09-01 17:46:53 948 1
转载 条件包含 c
if、#elif、#else 等同于 if、else if、else。当 #if 后的常量整型表达式的值!= 0,则包含其后的各行。defined(名),当名已定义,值为 1;#endif 是 #if 语句的结束。选择性地包含不同代码。
2022-08-28 17:00:26 90
原创 宏定义 #define
可以通过 #参数名 替换为带双引号的实际参数,目的是获取变量名。字符串字面量多于一行时,行尾加 \ 续。不带双引号使用 ## 连接多个实际参数。字符串中的形式参数 x 不能被替换。
2022-08-27 15:44:21 113
原创 按位取反 ~
只对一个操作数进行运算,将操作数的二进制中的 1 改为 0,0 改为 1,设 w = 8。很明显有 ~x + x = 0b11111111 = -1。所以 ~x = -(x+1)。如 ~2 = -3。
2022-08-26 17:38:32 80
原创 变量的作用域
不想外部文件、定义前使用此外部变量,可以使用 static 修饰,同理 static 也可修饰函数。若想在定义之前使用此变量,或在外部文件中使用此变量,则必须使用关键字 extern 声明。外部变量的作用域从定义处开始,到文件末尾结束。形参或局部变量的作用域仅在本函数内有效。...
2022-08-26 11:10:13 293
原创 简单的四则运算计算器,c 语言实现。
本来想定义 char[][] 类型,每个元素都是 char[] 类型,变成双引号,就好区分类型,发现不行,又或者定义引用类型,存储类型信息,可是暂时还没有学到如何返回自定义类型。’ 3.0, 3.0, ‘+’, ‘1’, ‘-’, ‘+’},但那就不是 split 了,在 rpn 方法里还是要按空格分隔元素,有兴趣的伙伴们,可以改写下,我明天试试。这程序有很大的问题,如用 double[] 存储逆波兰表达式,区分不了运算符和数字,如 ‘+‘43、’-‘45、’将普通表达式拆分的方法 split()。
2022-08-23 21:56:51 5279
原创 无参函数声明 函数的使用范围
若想函数只在 main 中使用,可以在 main 函数中声明,变量名可以省略。若想此函数可以在所有函数中被调用,需声明在所有函数的前面。这样会忽略参数检查,可以传入任意类型的实参。
2022-08-22 15:02:48 160
原创 c 程序设计语言第2版的 3-4 习题
但 n = -2147483648 时,-n = 2147483648 超过 int 类型取值范围,最高位被当做符号位,实际值为 -2147483648,对负数求余 + ‘0’,得不到每位数。那么 n == -n 时(n = -2147483648),求 n+1 的相反数 2147483647(可以通过 ~ 实现),第一次循环单独提取出来,7 多加一个 1。注意我们的函数实现,如果是负数就 -n 转为正数,再通过 do while 循环得到每位上的数。= -2147483648,请分析原因。
2022-08-21 11:24:19 109
原创 数字与字符串互转
例:itoa(-1234) 返回 “-1234”,但考虑到 c 语言的字符串并不像 Java 那么好用,可以拼接,我确定不了字符数组的长度,越界了也不会报错,所以具体长度用调用者决定。得到每个字符减去 ‘0’,得到实际数值 d,例 ‘8’ - ‘0’ = 8。sign 存储符号,0 代表正,1 代表负,需要添加 ‘-’。例:toInteger(“-1234”) 返回 -1234。定义一个变量 sign 存储符号位,0 代表正,1 代表负。十位:i / 10 % 10。例:获取 1234 的各位值。
2022-08-20 21:01:51 746
原创 2.10 赋值运算符与表达式 c程序设计语言第 2版
在实际测试中,由于 -1 有符号右移前面总是补 1,循环永远都不会终止,现在我大概理解为什么 Java 有 >>> 无符号右移,前面补 0 了。每次 x &= (x-1) 都删除一个 1,条件不变,循环次数就是 1 的个数,上面版本循环次数为 length,效率提升了。假如最右边是 1,则 x-1 的最右边为 0,1 & 0 = 0,那么最右边的 1 就被删除了。而前半部分相同,1 & 1 = 1,0 & 0 = 0,按位与后还是原值。1,按位与后全为 0。所以位为 1 时,计算结果为 1,则数量++。
2022-08-20 12:31:18 424
原创 c 语言 2.9 按位运算符 练习 2-6
编写函数 setBits(x, y, start, end),x 的第 [start, end] 位替换为 y 的最右边的 end-start+1 位。人事说会为我争取这几天的薪资,我内心还是挺惊讶的,因为我要是人事,工厂规定一框框的,遇见这件事,我也很头大,麻烦各部门,老板之类的,所以干脆就不管了。我今天提出辞职,人事说要按正常流程走,填离职申请书,且必须 7 天前就提出,也就是申请离职后,7 天后才能走,否则相当白干没有钱。但是根据与淘宝客服斗智斗勇的经验,最终会推来推去,我懒得辩论。
2022-08-19 21:40:47 138
翻译 c语言 2.9 按位运算符(上)
先右移 3 位 => 0001011,应让 011 之前的位全部置为 0,也就是原来的第 6 位到第 length-1 位置为 0,现在右移三位,于是第 6 位变成了第 3 位了。我昨天似乎说了,把想要离职的意图透露给同事,我虽说不在乎,但不建议新手学我,否则第 2 天,消息就传遍整个公司,那时你就很尴尬,不走也得走。例:获取 1011110 的第 3 位,右移 3 位 => 0001011,然后按位与 1,那么只剩下第 n 位。获取 x 的第 n 位二进制,定义最右边的一位是第 0 位,右移 n 位。..
2022-08-18 21:23:46 138
转载 c 语言:2.7 类型转换
看来本机是根据 char 的最高位,扩展至 int 类型的。i 是正是负,取决于 c 的最高位是 0 还是 1。char 转 int 可能为负数?
2022-08-15 17:53:26 137
原创 求余即是截断
例 w = 8,证明 0b11101110 10101010 % 256 = 0b10101010。n 位二进制数:0b?,有 w 位 0,则 0b?要想等式①成立,需要证明 0b11101110 00000000 是 256 的倍数。4 = 4 % 7 = (7n + 4) % 7,n 为自然数。例:4 % 7 = 11 % 7 = 18 % 7。溢出后,需要截断,只留 w 位,证明 x % 2。二进制数转十进制,值为?例:w = 9,x = 3127。的倍数,所以和必然是 2。,显而易见,和是 2。..
2022-08-13 20:53:49 146
翻译 c 各种类型的范围
可以按 n = 1、2、4、8 尝试,算出范围最大值,再加一,观察是否溢出(变为 0 或负数)。long long int 取值范围:[-9223372036854775808, 9223372036854775807],占用 8 个字节。int 类型取值范围:[-2147483648, 2147483647],一共 4294967296 个值,占用 4 个字节。short int 类型取值范围:[-32768, 32767],一共 65536 个值,占用 2 个字节。无符号数范围为 [0, 2。...
2022-08-13 19:17:52 670
翻译 符号常量 getchar 方法声明
EOF:end of file,文件终止符,在 windows 下按下 Ctrl + Z,后 Enter 回车。读取多行文本,选取最长的一行并打印,长度限制为 1000,包括 ‘\0’,代表字符串的终止。将转义字符 Tab、Backspace、\ 转换成普通字符,按下 Esc 键终止程序。使用符号常量代替源文件中出现的字面量,可读性更好。源文件名为 one.c,编译后生成 a.exe。getchar 与 putchar。统计空格、制表符、换行符的个数。若有多个空格,则只输出一个。...
2022-08-12 20:46:36 244
转载 十进制转二进制
偶数 + 偶数 = 偶数,偶数 + 奇数 = 奇数。- 1,所以使用 8 位二进制数表示 137。多项式的前 7 项都是偶数,第 8 项为 a。多项式的前 6 项都是偶数,第 7 项为 a。,而 137 是奇数,所以 a。两边减去 1:136 = a。,而 68 是偶数,所以 a。两边除以 2:68 = a。两边除以 2:34 = a。两边除以 2:17 = a。两边减去 1:16 = a。两边除以 2:8 = a。两边除以 2:4 = a。两边除以 2:2 = a。两边除以 2:1 = a。...
2022-08-08 08:59:35 804
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人