今天开始学习C语言,为了之后的游戏开发学习做好基础,其实在大一的时候学校有C语言的课程,学的马马虎虎,教学也比较浅显,感觉并不能学习到C语言的精髓。在经过多人推荐下,入手了K&R ,看了第一章之后,才发现的确值得这么多人称赞。
其实大多数书的第一章都是差不多的,以Hello World 引出本书学习的知识体系的顺序,有趣的是之后的练习,也是要花一番功夫的。
1.4 提到了幻数,所谓幻数,就是在程序中直接使用的数字。C语言的传统方式是使用#define行来对付幻数。C语言预处理程序是一个强有力的工具,但是它又 有些鲁莽。使用宏进行编程是一种很危险的方式,因为宏会在背地里改变程序的词法结构。我们应该让语言去做正确的工作(C预处理命令本身不是C语言的组成部 分)。
(该段摘自:http://www.cnblogs.com/harrysun/archive/2012/02/07/2341780.html)
练习 1-6 验证表达式getchar() != EOF的值是0还是1。
练习 1-7 编写一个打印EOF值的程序。
实际EOF是一个宏定义,值为是-1,原因是输入字符里面不可能出现-1,所以可以把它作为文件的结束标志
#include <stdio.h> int main(){ printf("EOF=%d\n",EOF); return 0; }
练习 1-9 编写一个将输入复制到输出的程序,并将其中连续的多个空格用一个空格代
#include <stdio.h> int main(void){ int c; int inspace=0; while((c = getchar()) != EOF){ if(c == ‘ ‘){\\假如输入有空格 if(inspace == 0){\\再判断是否为第一个空格 inspace = 1; putchar(c); } } else if(c != ‘ ‘){\\输入不是空格,将inspace赋值为0 inspace = 0; putchar(c); } } return 0; }
练习 1-10 编写一个将输入复制到输出的程序,并将其中的制表符替换为\t,把回退符替换为\b,把反斜杠替按为\\。这样可以将制表符和回退符以可见的方式显示出来
#include <stdio.h> int main(void) { int c,d;//d用来判断是否指定的转义字符(1是,0否) while((c=getchar())!=EOF){ d=0; if (c==‘\\‘){ putchar(‘\\‘); putchar(‘\\‘); d = 1; } if (c==‘\t‘){ putchar(‘\\‘); putchar(‘t‘); d = 1; } if (c==‘\b‘){ putchar(‘\\‘); putchar(‘b‘); d = 1; } if (d==0) putchar(c); } system("pause"); return 0; }
时间: 2024-11-05 02:20:19