程序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. hibernate源码分析1

  2. Spring Security http标签的use-expressions="true"属性

    如果声明为true,那么在access属性要用hasRole()这样写: <intercept-url pattern="/secure/extreme/**" access ...

  3. java生成excel,word文件

    第一部分: 在网站开发中,用户可能需要打印word或者excel表,这种需求是非常多的. java语言生成excel表格和python的方式有点像,使用Apache POI的组件,一通全通.开发过程通 ...

  4. Tomb Raider

    Lara Croft, the fiercely independent daughter of a missing adventurer, must push herself beyond her ...

  5. VS2015编译rtklib2.4.2

    准备工作 在VS2015下新建一个win32的dll项目(空项目) 把在github上下载的rtklib2.4.2里的src文件夹复制到刚刚建立的win32下 把src里的文件添加到项目里,其中头文件 ...

  6. python os module

    os 模块提供了非常丰富的方法用来处理文件和目录.常用的方法如下表所示: 序号                                                              ...

  7. php三级联动(html,php两个页面)

    <!doctype html><html><head><meta charset="utf-8"><title>无标题文 ...

  8. 转载关于Python Web后端开发面试心得

    先介绍下我的情况:通信背景,工作一年多不到两年.之前一直在做C++的MFC软件界面开发工作.公司为某不景气的国企研究所.(喏,我的工作经验很水:1是方向不对:2是行业有偏差).然后目前是在寻找Pyth ...

  9. Finalize方法的生成

    Finalize在c#编程语言中需要特殊语法,因此,c#要求在类名前加~符号来定义Finalize方法:例如 internal class FinalizeDemo { ~FinalizeDemo() ...

  10. Attention模型

    李宏毅深度学习 https://www.bilibili.com/video/av9770302/?p=8 Generation 生成模型基本结构是这样的, 这个生成模型有个问题是我不能干预数据生成, ...