C++primer(第五版) 第一章 学习笔记
2016-09-24 22:39
190 查看
Ⅰ. 算法:交换两个变量的值
(P11 1.4.1节 练习1.11)
方法1.标准算法
方法2.算术运算
方法3.位运算
方法4.指针地址运算
Ⅱ. 文件结束符
1.(P14 从键盘输入文件结束符)
对流结束标志检查的方式有两种:阻塞式和非阻塞式。
①.阻塞式检查方式:只有在回车键按下之后才对此前是否有 Ctrl+Z 组合键按下进行检查。
②.非阻塞式检查方式:按下 Ctrl+D 组合键之后立即响应。
Windows系统中一般采用阻塞式检查 Ctrl+Z。
Unix/Linux系统下一般采用非阻塞式的检查 Ctrl+D。
阻塞式检查方式的特点:
①.只有按下回车之后,才会把数据放入缓冲区,并检测在此之前是否有Ctrl+Z按下。
②.如果输入缓冲区中有可读的数据则不会检测Ctrl+Z(因为有要读的数据,还不能认为到了流的末尾)。
注意:
①.如果Ctrl+Z位于一行的中间,则系统会读取这个无意义的字符,但是后续的字符并不是读取,而是直接丢弃(因为Ctrl+Z产生的不是一个普通的ASCII码值,也就是说它产生的不是一个字符,所以不会跟其它从键盘上输入的字符一样能够存放在输入缓冲区)。
②.输入流结束的条件就是:^Z (Ctrl+Z)之前不能有任何字符输入(回车除外),否则 ^Z 起不到流结束的作用。
因此,结束时需要先按下回车,然后输入Ctrl+Z,最后连续按两次回车。
参考:
cin中Ctrl+Z无法结束的问题
Window对于cin输入流结束的判断
2.(P15 1.4.4 if语句)
书中if语句的程序在VC++6.0中运行时,无法出现书中的演示输出。
输入一行数字后,按下回车,除最后一组同类数字外全部输出,再按下回车,键入Ctrl+Z,两次回车后,最后一组同类数字的结果才会输出。
暂时不知道原因。
Ⅲ. 编程方法
(P20 1.5.1节 练习1.20)
读取一组书籍销售记录,将每条记录打印到标准输出上。
方法1.对象数组
方法2.对象指针???
(P11 1.4.1节 练习1.11)
方法1.标准算法
int a,b,t; t=a; a=b; b=t;
方法2.算术运算
int a,b; a=b-a;//或者 a=a+b; b=b-a;//b=a-b; a=b+a;//a=a-b;
方法3.位运算
int a,b; a=a^b; b=a^b; a=a^b;//任意一个数与任意一个给定值连续两次异或值不变
方法4.指针地址运算
if(a>b) { a=(int*)(b-a); b=(int*)(b-(int(a)&0x0000ffff)); a=(int*)(b+(int(a)&0x0000ffff)); } else { b=(int*)(a-b); a=(int*)(a-(int(b)&0x0000ffff)); b=(int*)(a+(int(b)&0x0000ffff)); }
Ⅱ. 文件结束符
1.(P14 从键盘输入文件结束符)
对流结束标志检查的方式有两种:阻塞式和非阻塞式。
①.阻塞式检查方式:只有在回车键按下之后才对此前是否有 Ctrl+Z 组合键按下进行检查。
②.非阻塞式检查方式:按下 Ctrl+D 组合键之后立即响应。
Windows系统中一般采用阻塞式检查 Ctrl+Z。
Unix/Linux系统下一般采用非阻塞式的检查 Ctrl+D。
阻塞式检查方式的特点:
①.只有按下回车之后,才会把数据放入缓冲区,并检测在此之前是否有Ctrl+Z按下。
②.如果输入缓冲区中有可读的数据则不会检测Ctrl+Z(因为有要读的数据,还不能认为到了流的末尾)。
注意:
①.如果Ctrl+Z位于一行的中间,则系统会读取这个无意义的字符,但是后续的字符并不是读取,而是直接丢弃(因为Ctrl+Z产生的不是一个普通的ASCII码值,也就是说它产生的不是一个字符,所以不会跟其它从键盘上输入的字符一样能够存放在输入缓冲区)。
②.输入流结束的条件就是:^Z (Ctrl+Z)之前不能有任何字符输入(回车除外),否则 ^Z 起不到流结束的作用。
因此,结束时需要先按下回车,然后输入Ctrl+Z,最后连续按两次回车。
参考:
cin中Ctrl+Z无法结束的问题
Window对于cin输入流结束的判断
2.(P15 1.4.4 if语句)
书中if语句的程序在VC++6.0中运行时,无法出现书中的演示输出。
输入一行数字后,按下回车,除最后一组同类数字外全部输出,再按下回车,键入Ctrl+Z,两次回车后,最后一组同类数字的结果才会输出。
暂时不知道原因。
Ⅲ. 编程方法
(P20 1.5.1节 练习1.20)
读取一组书籍销售记录,将每条记录打印到标准输出上。
方法1.对象数组
int main() { Sales_item item[10]; int i=0; while(std::cin>>item[i]) i++; for(int j=0;j<i;j++) std::cout<<item[j]<<std::endl; return 0; }
方法2.对象指针???
相关文章推荐
- C++primer第五版第一章学习笔记
- 《C++primer》 第五版 第一章笔记
- C++Primer 学习笔记 第一章 (快速入门)
- C++primer第五版第八章学习笔记
- C++primer第五版第九章学习笔记
- C++Primer学习笔记-----第一章(快速入门)
- C++primer第五版第十章学习笔记
- c++ primer(第五版)学习笔记及习题答案代码版(第一章)
- c++ primer第五版学习笔记 第一章
- C++Primer第五版【学习笔记】——第二章 变量和类型
- 《C++primer(第五版)》学习之路-第一章:开始
- C++primer第五版第五章学习笔记
- C++Primer(第五版)学习笔记
- C++primer第五版第十一章学习笔记
- C++primer第五版第三章学习笔记
- C++Primer第五版【学习笔记】——第二章 变量和类型
- C++Primer第五版【学习笔记】——auto,decltype【C++11】
- C++primer(第五版) 第二章 学习笔记
- C++Primer第五版【学习笔记】——第三章 Strings,Vectors,Arrays
- C++primer第五版【学习笔记】——第一章