第五章——循环和关系表达式

news/2024/11/14 21:54:20/

for循环

很多情况下都需要程序执行重复的任务

#include<iostream>
using namespace std;
int main()
{int i;for (i = 0; i < 5; i++){cout << "C++ knows loop.\n";}cout << "C++ knows when to stop.\n";return 0;
}

 

 for循环的组成部分

for循环的组成部分完成下面这些步骤

1、设置初始值

2、执行测试,看看循环是否应当继续进行

3、执行循环操作

4、更新用于测试的值

初始化、测试和更新操作构成了控制部分,这些操作由括号括起。其中每部分都是一个表达式,彼此由分号隔开。控制部分后面的语句叫做循环体,只要测试表达式为true,它便被执行:

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

下面就是for循环设计的流程

 

 for语句看上去有些像函数调用,因为它使用一个后面跟一对括号的名称。然而,for是一个C++关键字,因此编译器不会将for视为一个函数。

递增运算符(++)和递减运算符(--)

这两个运算符将循环计数加1或减1。他们分别有两种版本,前缀版本位于操作数前面(如++x),后缀版本位于操作数后面(如--x)。两个版本对操作数的影响是一样的,但是影响的时间不同

 

#include<iostream>
using namespace std;
int main()
{int a = 20;int b = 20;cout << "a = " << a << " ,b = " << b << endl;cout << "a++ = " << a++ << " , ++b = " << ++b << endl;cout << "a = " << a << " ,b = " << b << endl;return 0;
}

 a++意味着使用a的当前值计算表达式,然后将a的值加1;而++b的意思是先将b的值加1,然后使用新的值来计算表达式(区别就在于”使用后修改“和”修改后使用“)

int x = 5;
int y = ++x;	//x is 6, y is 6int z = 5;
int y = z++;	//y is 5, z is 6

对于内置类型,采用这两种格式不会有差别;但是对于用户定义的类型,则前缀格式的效率更高

组合赋值运算符

 

 逗号运算符允许将两个表达式放到C++句法只允许放一个表达式的地方。(C++规定,逗号表达式的值是第二部分的值)

关系表达式

同时注意不要混淆 等于运算符(==)和赋值运算符(=) 

基于范围的for循环(C++11)

C++11新增了一种基于范围的for循环,简化了一种常见的循环任务:对数组(或容器)的每个元素执行相同的操作,例如

double price[5] = { 2.99,10.5,6.78,5.52,8.69 };
for (double x : price)
cout << x << endl;

其中x最初表示数组的第一个元素,显式第一个元素后不断执行循环,而x依次表示数组的其他元素

如果需要修改数组的元素,则需要换一种循环变量的语法

double price[5] = { 2.99,10.5,6.78,5.52,8.69 };
for (double& x : price)x = x * 0.80;

符号&表示x是一个引用变量,就可以修改原始的值

while循环

while循环是没有初始化和更新部分的for循环,它只有测试条件和循环体

while(test-condition)body

 首先,程序计算圆括号内的测试条件(test-condition)表达式。如果该表达式为true,则执行循环体中的语句。执行完循环体后,程序返回测试条件,对它进行重新评估,如果该条件非0,则再次执行循环体,测试和执行将一直进行下去,直到测试条件为false为值。显然如果希望循环最终能够结束,循环体中的代码必须完成某种影响测试条件表达式的操作

 

#include<iostream>
const int ArSize = 20;
using namespace std;
int main()
{char name[ArSize];cout << "Your first name,please: ";cin >> name;cout << "Here is your name,verticalized and ASCIIized:\n";int i = 0;while (name[i] != '\0'){cout << name[i] << ": " << int(name[i]) << endl;i++;}return 0;
}

死循环是常见的循环问题之一。

在设计循环时,需要记住下面几条指导原则

  • 指定循环的终止条件
  • 在首次测试之前初始化条件
  • 在条件被再次测试之前更新条件

 do while循环

这种循环首先执行循环体,然后再判定测试表达式,决定是否应继续执行循环。如果条件为false,则循环终止;否则,进入新一轮的执行和测试

 这样的循环至少执行一次,因为其程序流必须经过循环体后才能到达测试条件。

do body
while(test-expression);

http://www.ppmy.cn/news/792032.html

相关文章

python中while循环和for循环以及判断

判断 if 条件&#xff1a;print(相应结果) elif 条件&#xff1a; -------------------elif可以写多个print(相应结果) else: ------------------- 除了if和elif条件外其他所有的条件print(相应结果&#xff09;循环 1.while循环 通用形式&#xff1a; while 循环条…

关于1Byte 1K 1M 1G(换算)

1个字节等于8位二进制 。。。。 1byte8bit 1K 1024 byte 1024byte*8b 说白一点就是 1M等于1024个K组成,而1K又等于1024B,所以1M等于1024K乘以1024B(1,048,576)B/字节 1M1,048,576Byte 1M1024K1024K x 1024B1,048,576Byte 1个字节(byte)由8个比特(bit)组成&#xff0c;每个比特…

认识1M带宽、1Mbps、1Mb/s 区分

认识1M带宽、1Mbps、1Mb/s 区分 在使用云服务器的时候有些小伙伴对带宽这个方面还是存在一些误区。有时候分不清1M,1Mbps、1Mb/s? 那我这里就为大家解答&#xff1a; 1M带宽1Mbps&#xff08;每秒百万位元&#xff09;。对应的下载速度是是1 x 1024 / 8 128KB/sec&#xff…

阿里云的ECS服务器1M宽带等于多少入网kbps和出网kbps

阿里云ECS云服务器1M公网带宽&#xff0c;出网带宽为1Mbps&#xff08;下载速度128KB/S&#xff09;&#xff0c;入网带宽为10Mbps&#xff08;上传速度1.25M/秒&#xff09;。详细说明及算法参考下方&#xff1a; 1M带宽的实际下载速度&#xff1a; 阿里云ECS云服务器1M公网带…

1M带宽、1Mbps、1Mb/s 区分

1M带宽1Mbps&#xff08;每秒百万位元&#xff09;。对应的下载速度是是1 x 1024 / 8 128KB/sec&#xff08;每秒128位元组&#xff09;也就是平时所说的128KB/s&#xff08;当然这是理论值&#xff0c;实际值会在这个范围内小幅度偏差&#xff0c;这个还得取决于您当前的网络…

8psk带宽计算_1兆(1M)等于多少Kbps 如何计算1M宽带等于多少Kbps

最近有网友“等待的逝去”问小编这样一个问题&#xff1a;在路由器宽带限制设置中&#xff0c;如下图&#xff0c;该怎么填写Kbps值&#xff0c;1M宽带等于多少Kbps呢&#xff1f;对于这个问题&#xff0c;相信很多小白朋友都不太了解&#xff0c;对于宽带速率而言&#xff0c;…

Spring Boot 中的 Native SQL 是什么, 如何使用

在 Spring Boot 中&#xff0c;我们通常使用 ORM 框架&#xff08;例如 Hibernate 或 MyBatis&#xff09;来操作数据库。但是&#xff0c;有时候我们需要执行一些自定义的 SQL 查询或更新语句&#xff0c;这时候就需要使用 Spring Boot 中的 Native SQL。 在本文中&#xff0…