K&R 学习笔记 第一章

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

K&R 学习笔记 第一章的相关文章

JavaScript学习笔记(第一章——第三章)

说明 参考资料:<JavaScript高级程序设计(第3版)> 笔记主要为<JavaScript高级程序设计(第3版)>读书记录,按照此书的章节学习记录.方便以后查询复习(PS:正版书99大洋,没舍得买.在淘宝46买了一本盗版的并带一本 <JavaScript DOM编程艺术(第2版)>).两本书同时阅读,但以<JavaScript高级程序设计(第3版)>为主要学习路线.重要说明性内容将以近似书中原文摘出(以免出现个人解释歧义),外加自己遇到特殊情况说明(不

latex学习笔记 第一章 LATEX须知

本学习笔记全部从http://www.latexstudio.net/archives/6058抽取总结而来. 第一章 LATEX须知 1.1 概述 1.1.1 TEX TEX是高德纳开发的.以排版文字和数学公式为目的的一个计算机软件. 1.1.2 LATEX LATEX为TEX基础上的一套格式,令作者能够使用预定义的专业格式以较高质量排版和印刷他们的作品. 1.2 LATEX命令和代码结构 LATEX的源代码本质上是文本文件.除了文字本身,LATEX源代码之外还包括大量的命令,用在排版公式.划

数据库系统概论学习笔记-第一章绪论

数据库系统概论-第一章绪论 写在前面:寒假来临,除却走亲戚和同学聚餐,王者荣耀等游戏上分花销一点时间之外,自认为要花一点时间学习数据库和Android,以此来为下学期和共建项目打下一丢丢的基础.为了鞭策自己,定了一个小目标( 一个亿),每个两至三天我会发表一篇数据库或Android学习笔记.还是那句话你的才华撑不住你的野心时,那就静下来学习吧 . 数据库系统概述 数据库常用的术语和基本概念 数据库基本概念 数据(Data) 数据是数据库中存储的基本对象,可以对数据做如下定义:描述事物的符号记录称

【PMP】Head First PMP 学习笔记 第一章引言

第一章 引言 高效的解决项目中同样的问题 最佳的评估你的任务并合理安排,从而保证项目尽可能迅速而高效的完成 计划和跟踪成本的有关技术 如何针对项目中存在的缺陷做出计划并加以防范 项目经理的特征 知识. 关注项目领域的发展动态,可以从每个人的成功和失误中学习经验教训,从而能更好的完成你的工作.知道所有的工具和技术,并且知道何时使用和如何使用. 绩效. 必须付诸行动,要求你认真而有效地工作. 个人技能. 既然你要管理人,就注意哪些方面能够激励他们,哪些方面会对他们造成障碍.作为一个项目经理,你的任务

Android学习笔记—第一章 搭建开发环境

第一章 Android开发环境搭建 开发工具:adt-bundle-windows http://pan.baidu.com/s/1wIgFW 配置环境变量 D:\Program Files (x86)\Android\adt-bundle-windows-x86-20131030\sdk\platform-tools 以上是sdk\platform-tools的路径,根据个人电脑上安装路径不同而定.配置好环境变量后,可输入adb命令进行测试. 常用abd命令 (1)查看当前正在运行的模拟器信息

《算法导论》学习笔记第一章(算法在计算中的作用)

第一章主要讲了一些概念,什么是算法,为什么算法值得研究. 印象比较深的是章节的最后一句,是否具有算法知识与技术的坚实基础是区分真正熟练的程序员与初学者的一个特征.使用现代计算技术,如果你对算法懂得不多,你也可以完成一些任务,但是,如果有一个好的算法背景,那么你可以做的事情就多得多. Having a solid base of algorithmic knowledge and technique is one characteristic that separates the truly sk

离散数学及其应用(Discrete Mathematica With Application 7th)学习笔记 第一章

目前本人只进行到了第五章的章末补充练习,应该是从4月6号开始学习的,又是英文版,而且基本就下班回家抽2个小时左右去学,所以进度较慢. 由于本质是数学,除了一些程序处理和大计算量的问题,基本上一本草稿本和一支笔即可.其实这次已经是三周目了, 第一次是大二,只是粗略目扫一遍,很多都是不理解就跳过,假装自己已经懂了:第二遍是毕业之后第一年,大概稍比第一次多懂了一些之前遗留跳过的概念,推论,和问题,但也只能说是基本上只吃透了差不多60%而已.时隔两年,又重拾基本核心,希望可以再次温故知新吧. 先说下全书

Linux就该这么学,学习笔记第一章(介绍和安装)

目的:1.学好linux,随着大数据,云等应用,开源软件将占领市场,这些应用都是基于linux的. 2.通过RHCE认证考试 原因:1.人的自律很困难,必须付出代价(交钱上课完成作业)等方式强迫自己学习.(自己也喜欢学习linux) 2.本人年龄偏大40岁,但认为学习不可放松,活到老学到老. 正题: 1.我什么要学习linux 基于服务器的应用,性能高,占用资源少(省去图形界面资源开销),开源支持漏洞及病毒少,费用免费或低廉. 2.vmware workstation 虚拟机安装学习. 安装关键

Docker学习笔记第一章:补充

只记得学习后面的命令,忘记整理一些概念性的东西了,只能做个补充了=.= Docker虽然也是一种虚拟技术,但是不同于虚拟机的概念.Docker是一种以容器为主的技术,容器运行不需要模拟层(emulation)和管理层(Hypervisor),直接调用操作系统的接口,降低了单个容器的开销,从而可以使机器运行多台容器. 一:Docker客户端与服务器 可以理解为Docker客户端向服务器端发送请求命令,服务器端运行工作,将结果返回到客户端显示,因此有docker的命令行. 二:Docker镜像 im