C primer plus 读书笔记第六章和第七章
这两章的标题是C控制语句:循环以及C控制语句:分支和跳转。之所以一起讲,是因为这两章内容都是讲控制语句。
第六章的第一段示例代码
/* summing.c --对用户输入的整数求和 */
#include <stdio.h>
int main (void)
{
long num;
long sum = 0L;
int status;
printf("Please enter an integer to be summed. ");
printf("q to quit): ");
status = scanf("%ld", &num);
while (status == 1) {
/* code */
sum = sum + num;
printf("Please enter next integer (q to quit): ");
status = scanf("%ld", &num);
}
printf("Those integer sum to %ld.\n", sum);
return 0;
}
这段代码很有意思,不难但是很巧妙。这里并没有另外写if判断语句来判断输入是否为数字或字母,而是利用scanf()函数的特点,很巧妙的避免了代码的复杂性,事实上,要是你输入其他字母,循环依然会跳出来。
第六章其他内容似乎没什么好说的,因为几乎所有的编程语言都会讲到while,for和do while。至于选择哪种循环,首先要确定我们需要入口条件循环还是退出条件循环。一般来说选前者。这是因为:1.一般原则是在跳过(或循环)之前进行查看比较好;2.如果在循环开始的地方进行判断,程序的可读性更强;3.如果一开始就不满足条件,那么跳过整个循环是重要的。
至于for和while了,就是个人喜好问题了。
第六章的课后题开始有些意思了。下面详细说说。
第一题蛮简单,本来以为一次能过,结果还是报错了。代码如下:
/*编写程序,创建一个具有26个元素的数组,存储,打印*/
#include <stdio.h>
#define SIZE 26
int main (void) {
char xiaoxie[SIZE];
int i;
for (i = 0; i < SIZE; i++){
xiaoxie[i] = 'a' + i;
}
for (i = 0; i < SIZE; i++){
printf("%c ", xiaoxie[i]);
}
printf("\n");
return 0;
}
报错的原因是

java写多啦~第六题使用来strlen()函数,却忘记#include <string.h>了,结果没报错,只是警告而已。

其他题难度不大,搞定了细节就行。
OK,下面进入第七章。题目是C控制语句:分支和跳转。学完这章,我们就能知道程序运行方式的全部知识。
if...else没啥讲的,讲讲书中提到的其他知识。
1.getchar()和putchar()是专门为面向字符I/O设计的C函数。ch = getchar();等价于scanf("%c", &ch);以及putchar()等价于printf("%c", ch);。这个两个函数通常在stdio.h文件中定义,而且只是预处理的宏,并不是真正的函数。
2.代码简洁写法
ch = getchar();
while (ch != '\n')
{
...
ch = getchar();
}
替换为
while ((ch = getchar()) != '\n')
{
...
}
这体现了典型的C编程风格:将两个动作合并为一个表达式。因为赋值表达式的值就等于表达式左侧数的值,所以ch=getchar()的值就等于ch的新值,然后再和'\n'比较。这种风格在C编程中很常见,一定要习惯。要注意圆括号少不了,因为!=运算符的优先级比=高。
3.ctype.h系列字符函数
ctype.h头文件包含了一系列分析字符的标准函数,例如isalpha()函数等字符判断函数,tolower()。
然后讲了下循环辅助的语句:continue和break以及多重选择switch和break,都是其他语言有的,就不详细讲了,至于goto不用或者少用吧~
至于K&R说的“要谨慎使用,或者根本不用”主要原因是:1.原则上,C程序根本不需要goto语句。2.过度使用goto会引起程序的错综复杂。
下面看看编程题。题目都蛮简单,主要是本章知识的实践,有一点发现是,用比如while ((ch = getchar()) != '#‘)时,你敲#并不会立即中断,而是你敲完回车后,才有计算的结果。
to be continued...
C primer plus 读书笔记第六章和第七章的更多相关文章
- C++ Primer Plus读书笔记(六)分支语句和逻辑运算符
1. 以上均包含在cctype中 1 #include<cctype> 2 //#include<ctype.h> 2.文件操作 (1)头文件 1 #include<fs ...
- 【读书笔记】C#高级编程 第七章 运算符和类型强制转换
(一)运算符 类别 运算符 算术运算符 + - * / % 逻辑运算符 & | ^ ~ && || ! 字符串连接运算符 + 增量和减量运算符 ++ -- 移位运算符 < ...
- 《C#从现象到本质》读书笔记(六)第8章委托和事件
<C#从现象到本质>读书笔记(六)第二部分 C#特性 第8章委托和事件 从这一部分开始,知识点就相对少了,重要的是代码练习.奈何太高深的代码平常不怎么用,这些特性也不是经常写代码的. 委托 ...
- 《Microsoft Sql server 2008 Internals》读书笔记--第六章Indexes:Internals and Management(1)
<Microsoft Sql server 2008 Internals>索引文件夹: <Microsoft Sql server 2008 Internals>读书笔记--文 ...
- 《C++ Primer》读书笔记 第一章
读<C++ Primer>才知道,自己对C++知之甚少... 写个博客记录下自己C++的成长,只是读书笔记,不是对<C++ Primer>知识点的总结,而是对自己在书上看到的以 ...
- 读书笔记 - js高级程序设计 - 第十五章 使用Canvas绘图
读书笔记 - js高级程序设计 - 第十三章 事件 canvas 具备绘图能力的2D上下文 及文本API 很多浏览器对WebGL的3D上下文支持还不够好 有时候即使浏览器支持,操作系统如果缺缺 ...
- 《android开发艺术探索》读书笔记(六)--Drawable
接上篇<android开发艺术探索>读书笔记(五)--RemoteViews [BitmapDrawable] 简单的图片 <!xml version="1.0" ...
- 【读书笔记】自然语言处理综述 -- 第四章 -- N元语法
第四章 N元语法 本章开篇的两句话很有意思,代表了当时两个学派的思想和矛盾. 一句是"有史以来最伟大的语言学家"乔姆斯基说的:"句子的概率,在任何已知的对于这个术语的解释 ...
- C++ Primer Plus读书笔记
第五章 循环和关系表达式 1. 2.类别别名: (1) #define FLOAT_POINTER float * FLOAT_POINTER pa, pb; 预处理器置换将该声明转换成 flo ...
随机推荐
- MVC跳转
//RedirectToAction(view?参数,控制器); return RedirectToAction("MyjoinEvent?id=" + eventid + &qu ...
- MySQL拷贝表的几种方式
假如我们有以下这样一个表: id username password ----------------------------------- 1 admin * ...
- 《C# 并发编程 · 经典实例》读书笔记
前言 最近在看<C# 并发编程 · 经典实例>这本书,这不是一本理论书,反而这是一本主要讲述怎么样更好的使用好目前 C#.NET 为我们提供的这些 API 的一本书,书中绝大部分是一些实例 ...
- 何为 pimpl ?
前言 你是否总因头文件包含冲突而苦恼? 你是否因头文件包含错乱而苦恼? 你是否因封装暴露了数据而苦恼? 你是否因经常改动实现而导致重新编译而苦恼? 在这里, 这些问题都不是问题, 跟随作者, 揭秘pi ...
- hdu 3371 Connect the Cities (最小生成树Prim)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=3371 题目不难 稍微注意一下 要把已经建好的城市之间的花费定义为0,在用普通Prim算法就可以了:我没 ...
- sae crop 文档
原文是google缓存:http://webcache.googleusercontent.com/search?q=cache:MD_FP-G6RI8J:sae.sina.com.cn/%3Fm%3 ...
- RedHat9上安装jdk
1.先在windows下载jdk:jdk-6-dlj-linux-i586.bin 2.用ftp上传给linux下 3.chmod 777 jdk-6-dlj-linux-i586.bin 4.将jd ...
- 新思路:Exception Handle
以前提到异常处理,马上就想到加try-catch. 没错,这种应激反应是对的.关键是怎么加? 如果想为每一个方法都加异常处理,输出相同格式的异常信息,应该怎么做呢? 难道是为每一个方法加一个try-c ...
- PHP文章管理
功能说明: 文章的基本操作:添加,修改,锁定,解锁,推荐,删除等待 并有强大功能的搜索,评论,推荐给朋友等功能,并对安全性进行着重加强,漂亮的界面人性化的设计. 主要文件列表: setup.p ...
- Delphi-Copy 函数
函数名称 Copy 所在单元 System 函数原型 1 function Copy ( Source : string; StartChar, Count : Integer ) : string ...