程序5.4

 #include<iostream>
using namespace std; const int Size = ; void main() {
long long factorials[Size];
factorials[] = factorials[] = 1LL;
for (int i = ; i < Size; i++)
{
factorials[i] = i*factorials[i - ];
}
for (int i = ; i < Size; i++)
{
cout << i << "!=" << factorials[i] << endl;
}
system("pause");
}

factorials阶乘函数


递增/递减运算符和指针

前缀递增递减和*优先级相同,从右到左;

后缀递增递减比前缀优先级高,从左到右。

比如

int arr[] = { ,,,, };
int *p = arr;

*++p:p先自+,然后*p,最终为3

++*p:先*,然后再++,最终为2

*p++:值为arr[0],即1,该语句执行完毕后,p指向arr[1](因为后缀优先级高,所以等价于*(p++),自增p并返回自增之前指向的值)

程序5.8

 #include<iostream>
using namespace std; void main() {
double sum = 0.0, number;
cout << "The Amazing Accounto will sum and average five numbers for you.." << endl;
cout << "Please enter five values: " << endl;
for (int i = ; i < ; i++)
{
cout << "Value " << i << ":";
cin >> number;
sum += number;
}
cout << "Sum=" << sum << endl;
cout << "Average=" << sum/ << endl; system("pause");
}

程序5.9(反转字符串)

 #include<iostream>
#include<string>
using namespace std; void main() {
cout << "Enter a word:";
string word;
cin >> word;
char tmp;//tmp也可以在循环体内部定义,这样的话将在每次循环中都分配和释放,效率稍微慢一点
for (int j = ,i=word.size()-; j < i; ++j,--i)//word.size()不包括‘\0’,前缀递增递减在某些情况下比后缀递增递减效率更高
{
tmp = word[i];
word[i] = word[j];
word[j] = tmp;
}
cout << word << endl; system("pause");
}

程序5.14(延时等待)

 #include<iostream>
#include<ctime>
using namespace std; void main() {
cout << "Enter the delay time,in seconds:";
float sec;
cin >> sec;
clock_t delay = sec*CLOCKS_PER_SEC;//CLOCKS_PER_SEC每秒钟包含的系统时间单位数。 秒数*CLOCKS_PER_SEC=系统时间
cout <<"starting\a"<< endl;
clock_t start = clock();
while (clock() - start < delay)//当不满足条件时跳出循环
;
cout << "done\a\n";
system("pause");
}

当starting显示的时候会响一声,done出现的时候再响一声,中间的时间间隔取决于输入的数字。


类型别名

程序5.16(cin)

#include<iostream>
using namespace std; void main() {
cout << "Enter characters(enter # to quit):" << endl;
char ch;
int count = ;
cin >> ch;
while (ch != '#')
{
cout << ch;
++count;
cin >> ch;
}
cout << endl << count << " characters read\n";
system("pause");
}

可以注意到:1.没有空格和换行符;2.输入#之后还能继续输入

这是因为cin在读取char值时,将忽略空格和换行符;另外,发送给cin的输入被缓冲,这意味着只有在按下回车后,输入的内容才会发送给程序。

程序5.17+5.18+5.19(cin.get和EOF)

程序5.20

 #include<iostream>
using namespace std; const int City = ;
const int Year = ; void main() {
const char *city[City] = {
"Gribble City ",
"Gribbletown",
"New Gribble ",
"San Gribble ",
"Gribble Vista"
};
int maxtemps[Year][City] =
{
{,,,,},
{,,,, },
{,,,,},
{,,,,}
};
cout << "Maxinum temperatures for 2008~2011" << endl;
for (int i = ; i < City; i++)
{
cout << city[i] << ":\t";
for (int year = ; year < Year; year++)
cout << maxtemps[year][i] << "\t";
cout << endl;
}
system("pause");
}

[C++ Primer Plus] 第5章、循环和关系表达式(一)程序清单——指针自加减优先级的更多相关文章

  1. C++ primer plus读书笔记——第5章 循环和关系表达式

    第5章 循环和关系表达式 1. cout.setf(ios_base::boolalpha); cout << (100 > 3) << endl;将输出true,而不是 ...

  2. 《C++ Primer Plus》第5章 循环和关系表达式 学习笔记

    C++提供了3种循环: for 循环. while 循环 和 do while 循环 .如果循环测试条件为 true 或非零,则循环将重复执行一组指令: 如果测试条件为 false 或 0 , 则结束 ...

  3. [C++ Primer Plus] 第7章、函数(一)程序清单——递归,指针和const,指针数组和数组指针,函数和二维数组

    程序清单7.6 #include<iostream> using namespace std; ; int sum_arr(int arr[], int n);//函数声明 void ma ...

  4. 《C++ Primer Plus》读书笔记之三—循环与关系表达式

    第五章 循环与关系表达式 1.表达式是值或者值与操作符的结合,每个C++表达式都有值.表达式到语句的转换只要加一个分号就可以完成.但是,反过来,从语句中删除分号,并不一定能将它转化成表达式. 2.前缀 ...

  5. C Primer Plus_第5章_运算符、表达式和语句_编程练习

    Practice 1. 输入分钟输出对应的小时和分钟. #include #define MIN_PER_H 60 int main(void) { int mins, hours, minutes; ...

  6. [C++ Primer Plus] 第5章、循环和关系表达式(二)课后习题

    1.编写一个要求用户输入两个整数的程序,将程序将计算并输出这两个整数之间(包括这两个整数)所有的整数的和.这里假设先输入较小的整数,例如如果用户输入的是2和9,则程序将指出2-9之间所有整数的和为44 ...

  7. c++primerplus(第六版)编程题——第5章(循环和关系表达式)

    声明:作者为了调试方便,每一章的程序写在一个工程文件中,每一道编程练习题新建一个独立文件,在主函数中调用,我建议同我一样的初学者可以采用这种方式,调试起来会比较方便. (具体方式参见第3章模板) 1. ...

  8. 学习C++.Primer.Plus 5 循环和关系表达式

    C++将赋值表达式的值定义为左侧成员的值 赋值操作符是自右向左结合的 cout.setf(ios:: boolalpha);//调用设置标记,命令cout输出true或false,而非1或0. 任何表 ...

  9. C++ Primer Plus读书笔记(五)循环和关系表达式

    1.前缀运算符的优先级是从右到左,例如: 1 *++p; //这句话的含义是先对p进行++,再取* 2.循环 c++11新增了一种循环方式,有点和python类似,如下: 1 array<int ...

随机推荐

  1. Cookiecutter: 更好的项目模板工具:(1)简介及可用资源汇总

    原文档地址:https://cookiecutter.readthedocs.io/en/latest/ 本系列只介绍cookiecutter的基础使用,而且会删除与功能使用无关的部分.深度使用及了解 ...

  2. ThinkPHP3.2.3中M()和D()的区别详解

    在实例化的过程中,经常使用D方法和M方法, 区别在于:M方法实例化模型无需用户为每个数据表定义模型类,如果D方法没有找到定义的模型类,则会自动调用M方法. 通俗一点说:1.M实例化参数是数据库的表名, ...

  3. Java中的 内部类(吐血总结)

    1. 内部类的作用 内部类是一个独立的实体,可以用来实现闭包:能与外部类通信:内部类与接口使得多继承更完整 2. 内部类的分类 1)普通内部类 类的实例相关,可以看成是一个实例变量.内部类的类名由 “ ...

  4. javascript的数组之find()

    find()方法返回数组中第一个满足回调函数测试的第一个元素的值.否则返回undefined const arr1 = [1, 2, 3, 4, 6, 9]; let found = arr1.fin ...

  5. python语法_注释

    #加需要注释的内容,#号后面的单行注释 #这一段注释 左右各三个注释单引号或者双引号 中间的内容为注释,可以包含多行 '''这一段注释''' """这一段注释" ...

  6. [转]在centos 6.4下安装opencv 2.3.1

    系统环境介绍: centos 6.4 1.安装依赖包 yum install cmake gcc gcc-c++ gtk+-devel gimp-devel gimp-devel-tools gimp ...

  7. Web开发——HTML基础(图像、音频和视频内容)

    参考: 参考:HTML中的图像 参考:视频和音频内容 目录: 1.HTML中的图像 1.1 我们如何在网页上放置图像? (1)替代文字(alt) (2)宽度和高度 (3)图片标题 1.2 用图形和图形 ...

  8. day5_非空即真非零即真

    非空即真(字符串.元组.列表.字典.None),非零即真(指的是int类型或数字这种) # d={}# l=[]# t=()# a = ''# b = None以上都代表空 举例1: name = i ...

  9. caffe中的卷积

    https://www.zhihu.com/question/28385679 如上,将三维的操作转换到二维上面去做,然后调用GEMM库进行矩阵间的运算得到最后结果. 两个矩阵相乘,需要中间的那个维度 ...

  10. 15.2-uC/OS-III资源管理(信号量)

    1.信号量 信号量是一个“ 锁定机构”,代码需要获得钥匙才可以访问共享资源.占用该资源的任务不再使用该资源并释放资源时,其它任务才能够访问这个资源. 通常有两种类型的信号量:二值信号量和多值信号量. ...