代码改变世界

随笔档案-2017年02月

Structures

2017-02-19 15:22 by 星星之火✨🔥, 537 阅读, 收藏,
摘要: 1、在TCPL Reading Notes 中第79 条中,getword 函数不能正确处理下划线、字符串常量、注释及预处理器控制指令。请编写一个更完善的getword 函数。 为了处理下划线和预编译器指令,我们把原来的if(!isalpha(c)) 语句修改为if(isalpha(c) || c 阅读全文

Pointers and Arrays_4

2017-02-19 14:55 by 星星之火✨🔥, 267 阅读, 收藏,
摘要: 1、编写程序expr,以计算从命令行输入的逆波兰表达式的值,其中每个运算符或操作数用一个单独的参数表示。例如,命令expr 2 3 4 + * 将计算表达式2×(3+4) 的值。 这里给出的解决方案是在TCPL Reading Notes 中的逆波兰计算器的基础上得到的。它使用了push 和pop 阅读全文

Pointers and Arrays_1

2017-02-09 18:08 by 星星之火✨🔥, 176 阅读, 收藏,
摘要: 1、在TCPL Reading Notes 53 中,如果符号+ 或- 的后面紧跟的不是数字,getint 函数将把符号视为数字0 的有效表达式。修改该函数,将这种形式的+ 或- 符号重新压回输入缓冲区。 在遇到符号字符时,修改后的getint 函数会把它保存到变量d 中并读入下一个字符。如果下一个 阅读全文

Pointers and Arrays_2

2017-02-09 18:08 by 星星之火✨🔥, 272 阅读, 收藏,
摘要: 1、用指针方式实现strcat 函数:strcat(s, t) 将t 指向的字符串复制到s 指向的字符串的尾部。 2、编写函数strend(s, t)。如果字符串t 出现在字符串s 的尾部,该函数返回1;否则返回0。 注意,这个函数可以有效处理边界情况:两个字符串皆为空,任意一个为空而另一个不空。 阅读全文

Pointers and Arrays_3

2017-02-09 18:08 by 星星之火✨🔥, 216 阅读, 收藏,
摘要: 1、重写TCPL Reading Notes 69 中的readlines 函数,将输入的文本行存储到由main 函数提供的一个数组中,而不是存储到调用alloc 分配的存储空间中。 2、TCPL Reading Notes 70 中函数day_of_year 和month_day 中没有进行错误检 阅读全文

Functions and Program Structure_1

2017-02-09 18:07 by 星星之火✨🔥, 313 阅读, 收藏,
摘要: 1、编写函数strrindex(s, t),它将返回字符串t 在s 中最右边出现的位置。如果s 中不包含t,则返回-1。 strrindex函数与strindex函数(TCPL读书笔记&心得第36条)很相似。两者的区别是strindex函数只要找到字符串t 在字符串s 中第一次(最左边)出现的位置就 阅读全文

Functions and Program Structure_2

2017-02-09 18:07 by 星星之火✨🔥, 301 阅读, 收藏,
摘要: 注:本篇所有内容都是对TCPL读书笔记&心得第40条的扩充,搞懂了这部分对体会函数与程序结构的好处和意义应该是大有脾益的。 1、在有了基本框架后,对计算器程序进行扩充就比较简单了。在该程序中加入取模(%)运算符,并注意考虑负数的情况。 这里,我们只需要修改主程序和函数getop 即可满足要求,修改后 阅读全文

Functions and Program Structure_3

2017-02-09 18:07 by 星星之火✨🔥, 153 阅读, 收藏,
摘要: 1、运用printd 函数的设计思想编写一个递归版本的itoa 函数。即通过递归调用把整数转换为字符串。 itoa 需要用到两个参数,一个是待转换为字符串的整数n,一个是用来保存结果的字符数组s。如果整数除法n/10 的结果不为零,itoa 就以整数n/10 为参数调用自身。如果n/10 在某次递归 阅读全文