码迷,mamicode.com
首页 > 其他好文 > 详细

K&R 学习笔记 第一章

时间:2015-02-27 21:26:23      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:

  今天开始学习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;
}

 




 

K&R 学习笔记 第一章

标签:

原文地址:http://www.cnblogs.com/qin9smile/p/4304341.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!