目录
for (initialization;test-expression;update-expression) body
comparing string class strings
7 Using Unadorned cin for Input
10 Nested Loops and Two_Dimensional Array
1 the for loop
c++和c一样
1. Setting a value initially
2. Performing a test to see whether the loop should continue
3. Executing the loop actions
4. Updating value(s) used for the test
for (initialization;test-expression;update-expression)
body
表达式和语句
任何表达式都是有值的:
赋值表达式的值为等号左边的值,
表达式+分号——>语句
但是语句去掉分号不一定是表达式
","运算符:把两个语句连结成一句,
++j,++i;
逗号运算符也是序列点,保证前一个语句执行完再进行下一个语句
优先级最低,低于赋值运算符”=“
表达式的值为第二个表达式的值
cats=17,240; //cats为17
cats=(17,240); //cats为240
关系表达式
1.计算机具有比较数据的能力,是其决策的基础。
2.关系表达式均返回布尔变量:false or true
3.关系运算符的优先级低于算数运算符
4.易犯错误:等于是”==“,注意区分赋值运算符”=“
musicians == 4 //comparison
musicians = 4 //assignment
Compareing C-style strings
1. C++ handles C-style strings as address
string word="mate";
word == "mate";
//只是比较word数组和“mate”地址相同吗?而不是比较字符串是否相同
2. strcmp() function
strcmp() function :依据是否相同和首字母排序返回不同结果;
strcmp(str1, str2)!=0 and strcmp(str1, str2)are true if str1 and str2 are not identical.The following expression is true if str1 pre cedes str2 :strcmp(str1,str2) < 0And the following expression is true if str1 follows str2:strcmp(str1, str2) > 0Thus, the strcmp() function can play the role of the == , != , < , and > operators, dependingon how you set up a test condition.
使用char数组储存字符串
c的比较是计算到空字符的,与储存数组的大小无关;
在系统中的排序比首字母更精确,系统中是区分大小写的,如A和a的ASCⅠⅠ code就不同;
不可以比较字符串,但是可以比较字符
for(ch = 'a'; ch<= 'z'; ch++)
cout << ch;
comparing string class strings
1.使用string类储存字符串
2. 可直接用于比较运算符
string word = "?ate";
for (char ch = ‘a’; word != "mate"; ch++)
{
cout << word << endl;
word[0] = ch;
}
2 The while loop
while (test-condition)
body
1 循环体中必须包含语句会影响判断语句的结果,while循环才有可能终止
2 进入条件循环,如果一开始判定就是false,那body 部分一次也不会执行
3 下列两种表达式是等价的
while (name[i])
while (name[i] != '\0)
4 string的结尾并没有空字符标志结束,如果使用上述判断条件,不可用string代替char数组表示字符串
3 for Versus while
1 for loop在没有判断语句的时候,会默认为ture
2 for的控制语句可声明变量但是while不行
3 选择:
计数循环用for,可以清晰的看到相关的信息——初始化,终止条件,变量的更新;
while常用于循环次数未知;
4注意事项:
在loop的body部分有多个语句的时候要用{}括起来;
while()后面不要加多余的分号,分号意味着while loop的结束,将不会进入body部分
4 Building a Time-Dlay Loop
1 使用while loop计数:受计算速度影响
2 let system clock do the timing for you
clock()
不一定返回s为单位的时间
返回clock_t是电脑的计时器计数
不同系统可能是long也可能是unsigned long
5 定义别名Type Aliases
为什么要定义别名:eg:5.14中使用clock_t可以很直观的看出来是时间相关
typedef typeName aliasName;
类型 定义的类型别名
6 do while 循环
1 出口条件循环
do
body
while (test-expression);
7 Using Unadorned cin for Input
使用cin遇到的一些问题:
1.会省略空格,因为cin的输入会跳过空格和换行符,所以空格无回显
2.cin is buffered,键入回车才会把输入的信息发送给程序,所以可以在#之后输入信息但是程序不会读取
// page 234
// 5.16textin1
#include <iostream>
int main()
{
using namespace std;
char ch;
int count = 0;
cout << "Enter characters;enter # to quit;\n";
cin >> ch;
while (ch != '#')
{
cout << ch;
++count;
cin >> ch;
}
cout << endl << count << " characters read\n";
return 0;
}
8 cin.get(char)
1 可以读取空格(space)
2 still is buffered
cin.get()重载
cin.get();``//不带参数,清除换行符
cin.get(char* str; std::streamsize_count)
//带两个参数,第一个是数组地址,第二个是数组大小
9 The end of file condition
vs2022 ctrl+z enter
fail()
检查filebit是false 还是true
When cin detects the EOF, it sets two bits (the eofbit and the failbit) to 1.
所以也可以用eof()
10 Nested Loops and Two_Dimensional Arrays
type_name array_name [rows][coulmns]
内容:使用和引用,没啥重点