博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《C++核心思想》学习笔记(1)
阅读量:4124 次
发布时间:2019-05-25

本文共 2680 字,大约阅读时间需要 8 分钟。

第一章 简介

1、测试程序;

2、防错编程——结构化编程技术;

3、如何有效地使用调试器(debugger);

 

第二章 基本数据类型

1、引入有意义的符号名(具有描述性);

2、变量在定义声明时进行“初始化”是一个好的程序设计习惯;

3、空白字符(空格、制表符、回车)用来分割数字的输入;

4、“坦白讲,cin输入并不适用于与用户进行交互,它非常适合于从文件中读取数据,并且对程序来说非常简单!”;

5、键盘输入时带缓冲的。只有当用户键入回车键后,用户的输入才会被处理!(45详见程序coins2.cpp

#include 
using namespace std;int main(){ cout << "How many pennies do you have? "; int pennies; cin >> pennies; cout << "How many nickels do you have? "; int nickels; cin >> nickels; cout << "How many dimes do you have? "; int dimes; cin >> dimes; cout << "How many quarters do you have? "; int quarters; cin >> quarters; double total = pennies * 0.01 + nickels * 0.05 + dimes * 0.10 + quarters * 0.25; /* total value of the coins */ cout << "Total value = " << total << "\n"; return 0;}

6、static_cast <type_name> (expression)强制类型转换;

7、不要使用幻数,影响程序代码可读性,可以使用常量定义,还方便了程序维护,

          Eg: const  double  VOLUME  =  30

8、cin>>读入以空白字符分割的字符串;

   getline()读入回车之前的所有字符;

9、str.substr( start, length)

10、字符串连接 “+”;

11、#include<iomanip>

setw(width):设置输出域宽(右对齐);

setprecision():设置精度()小数点后位数;

fixed:固定输出的小数宽度;

setfill(‘ch’):设置填充字符;

注意:setprecision()fixedsetfill()只需使用一次(如果不想对所有输出都进行这些设定,需要在某些特定需求时重新设定,egsetfill(‘空格’),另外setfill()是与setw()配合一起使用,若后续的不再设定setw(),则也不再填充!),所有流将保持所指定的格式;而setw()需要在每次输出时都要设定一次!

 

第四章 基于控制流程

1、处理一组输入时:

一定要先测试输入是否失败.fail(),再测试.eof()

Eg:bool more=true;               //利用bool变量while (more){cin >> next;if (cin.fail()){more = false;if (cin.eof())cout << "end data!" << endl;}elsehighest = next;}

2p105循环不变式!

 

第七章 高级控制流

1、表达式cin>>word的值为cin,而对cin进行测试与测试!cin.fail()相同!         Egwhilecin>>word{    }

2string line

while(getline(cin,line))

{

Process  line;

}

循环测试部分利用getline函数返回cin的引用这一特性来测试cin是否处于失败状态!

2、p213,第七章,输入输出重定向,和管道,以及两者的组合使用!

 

4、#include<cstdlib>    int r=rand()    产生的是伪随机数,并不是绝对意义上的随机数,产生的伪随机数本质上是由公式计算生成的!

5、模拟实验模式本质:

(1)在一个循环中生成大量样本,并记录每个试验样本的特定观察值;

(2)模拟结束时,打印观察值的平均值;

Eg:模拟银行的客户排队模型!(在计算机中模拟客户的到达和交易情况)

6、返回一个随机整型数:(ab之间)

return  a + rand()%( b - a +1);

返回一个随机浮点数:(ab之间)

return  a +b - arand()*1.0 / RAND_MAX));

第五章 函数

1、一个通用的程序设计原则是:函数除了返回值以外,不要留下其他任何痕迹。

(1)如果输出信息,那么这种函数在没有输出流的环境中使用就没有任何意义,例如图形程序或是银行的柜员机控制程序。

(2)若是输出错误信息(egcout<<”Bad value!”),这将会严重限制函数的重用!

A.这样的函数只能用于使用cout输出的程序,而不能用于图形程序;

B.只能用于用户可见输出的应用程序中,而不能用于后台处理的程序中;

★注:如果程序必须要有输入/输出信息,要么将这些输入输出操作组织在一起,要么放在main函数中!让函数只做计算,不要报告信息!

2、在调用函数时,引用参数必须绑定到某个变量上,而值参数却可以绑定到任何的表达式!滥用引用参数,会限制调用方式!也绝对禁止将引用绑定到表达式上!(P130

3、常量引用!

4、利用全局变量在不同函数之间传递数据并不是一种好的方式。应该在程序中尽量避免使用全局变量。

★注:如何避免使用全局变量?答案是使用类和参数来代替全局变量。因为总是可以通过函数参数来完成函数间数据的传递。如果函数需要访问多个变量,传统的参数传递比较麻烦。在这种情况下,可以利用类将相关的这一组变量封装在一起!

5、Assert宏机制处理异常:

assert(expression);

如果表达式为真,则什么都不做;否则,则终止程序,显示当前出错的文件、代码行号、和表达式!

对于文本程序,错误信息显示在终端屏幕上;对于图形程序,错误信息则显示在对话框中!

转载地址:http://rzopi.baihongyu.com/

你可能感兴趣的文章
【小红书2017年笔试】求一个数组中平均数最大的子数组
查看>>
Linux基础系列-定时器与时间管理
查看>>
Linux基础系列-可执行程序的产生过程
查看>>
Linux基础系列-Kernel 初始化宏
查看>>
Linux子系统系列-I2C
查看>>
<iOS>关于自定义description的一点用法
查看>>
Unix 命令,常用到的
查看>>
DLL中建立进程共享数据段需要注意的语法问题
查看>>
服务器端技术----Http请求的处理过程
查看>>
C语言-预处理指令2-条件编译
查看>>
C语言-预处理指令3-文件包含
查看>>
C语言-变量类型
查看>>
C语言-static和extern关键字1-对函数的作用
查看>>
C 语言-static和extern关键字2-对变量的作用
查看>>
【JavaScript 教程】浏览器—History 对象
查看>>
还不会正则表达式?看这篇!
查看>>
100道+ JavaScript 面试题,助你查漏补缺
查看>>
JavaScript深入理解之闭包
查看>>
这才是学习Vite2的正确姿势!
查看>>
7 个适用于所有前端开发人员的很棒API,你需要了解一下
查看>>