【C++】第5章 循环和关系表达式 知识总结

《C++ Primer Plus》第5章知识点总结


for循环

for(initialization; test-expression; update-expression)

  body


语句:age = 100;

表达式:age = 100


对于 for( int i=0 ;i<5 ;i++),这种语句c语言不行,c++可以

C:for (expression; expression; expression)

statement

C++:for (for-init-statement condition; expression)

statement


逗号运算符花絮

(1)先确保计算第一个表达式,然后计算第二个表达式,比如 i=20 , j=2*i   这个表达式是安全的

(2)逗号表达式的值是第二部分的值。例如,上述表达式的值为40,因为 j=2*i 的值为40

(3)在所有运算符中,逗号运算符的优先级是最低的。例如 cata=17,240;被解释为(cata=17),240;也就是说,将cata设置为17,240不起作用。然而由于括号的优先级最高,下面的表达式将 cata 设置为240——逗号右侧的表达式值

cats=(17,240);


(1)等于运算符:==     

musicians==4,该表达式的值为true或false

(2)赋值运算符:=

musicians=4,该表达式的将4赋给musicians


检测相等或排列顺序

strcmp():测试C-风格字符串是否相等(根据字母的排列顺序来检测)(C风格就是char a[50]这样的字符串)

(1)若str1和str2相等,则下面的表达式为true

strcmp(str1,str2)==0

(2)如果str1和str2不相等,则下面的表达式为true

strcmp(str1,str2)!=0

strcmp(str1,str2)

(3)如果str1在str2的前面,则下面的表达式为true

strcmp(str1,str2)<0

(4)如果str1在str2的后面,则下面的表达式为true

strcmp(str1,str2)>0


那么比较string类型的字符串在c++更简单,不用strcmp,直接用关系运算符

比如:word=="mate" 这样


while循环

while(test-condition)

body


等待一段时间:编写延时循环

    long wait=0;
    while(wait<10000)
        wait++;
头文件ctime,首先,定义了一个符号符号常量——CLOCKS_PER_SEC,该常量等于每秒钟包含的系统时间单位数。因此,将系统时间除以这个值,可以得到秒数,或者将秒数乘以CLOCK_PER_SEC,可以得到以系统时间单位为单位的时间。其次,ctime将clock_t作为clock()返回类型的别名,这意味着可以将变量声明为colck_t类型,编译器把它转换为long、unsigned int或适合系统的其他类型。下面是一个例子展示如何使用clock()和头文件ctime


#include <iostream>
#include <ctime>

int main()
{
    using namespace std;
    cout<<"Enter the delay time,in seconds: ";
    float secs;
    cin>>secs;
    clock_t delay=secs*CLOCKS_PER_SEC;
    cout<<"starting\n";
    clock_t start=clock();
    while(clock()-start<delay)
        ;
    cout<<"done \n";
    return 0;
}


类型别名:建立别名的方式有两种
(1)#define BYTE char

这表示,预处理器将在编译程序时用char替代所有的BYTE,从而使BYTE称为char的别名

(2)typedef char byte;

下面时通用格式:typedef typeName aliasName


do while循环

do

body

while(test - expression);


循环和文本输入

(1)使用原始的cin进行输入

如果程序要使用循环来读取来自键盘的文本输入,则必须由办法知道何时停止读取。一种办法是选择某个特殊字符——有时被称为哨兵字符,将其作为停止标志。下面是一个例子:输入字符,当读取到#时停止输入

#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;
}

如果读取的第一个字符不是#,则程序进入该循环,显示字符,增加计数,然后读取下一个字符。循环体中的最后一步是极为重要的,没有这一步,循环将反复处理第一个输入字符,一直进行下去。有了这一步后,程序就可以处理到下一个字符。

但是存在一个问题,就是本代码如果输入的字符有空格,那么在输出时会省略空格。原因在cin。读取char值时,与读取其他基本类型一样,cin将忽略空格和换行符。下面是另一种模式可以补救这一点

(2)使用cin.get(char)进行补救

通常,逐个字符读取输入的程序需要检查每个字符,包括空格、制表符和换行符。成员函数cin.get(ch)读取输入中的下一个字符(即使它时空格),并将其赋给变量ch。下面是一个上面代码修改之后的例子

#include <iostream>

int main()
{
    using namespace std;
    char ch;
    int count=0;
    cout<<"Enter characters; enter # to quit: \n";
    cin.get(ch);
    while(ch!='#')
    {
        cout<<ch;
        ++count;
        cin.get(ch);
    }
    cout<<endl<<count<<" characters read\n";
    return 0;
}
(3)使用哪一个cin.get()
cin.get()可以有多个版本,因为C++支持被称为函数重载的OOP特性。函数重载允许创建多个同名函数,条件是他们的参数列表不同,下面时两个例子

①cin.get():指的是不接受任何参数的版本

②cin.get(name,ArSize):数组名name(字符串(char*类型)的地址)和ArSize(int类型的整数)(机主,数组名是其第一个元素的地址,因此字符数组名的类型为char*)


二维数组

    int maxtemps[4][5];//声明一个二维数组
    
    int maxtemps[4][5]=//声明一个二维数组并进行初始化
    {
        {96,100,87,101,105},
        {96,98,91,107,104},
        {97,101,93,108,107},
        {98,103,95,109,108},
    };


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值