网站抓取优化,外贸经常用的网站,公司核准名称网站,10G网站空间13.1、for循环的组成部分
for循环的组成部分完成下面这些步骤#xff1a;
(1)设置初始值。
(2)执行测试#xff0c;看看循环是否应当继续。
(3)执行循环操作。
(4)更新用于测试的值。
C循环设计中包含这要素#xff0c;很容易识别#xff0c;初始化、测试和更新操作工…13.1、for循环的组成部分
for循环的组成部分完成下面这些步骤
(1)设置初始值。
(2)执行测试看看循环是否应当继续。
(3)执行循环操作。
(4)更新用于测试的值。
C循环设计中包含这要素很容易识别初始化、测试和更新操作工程量控制部分这些操作由括号括起。其中每部分都是一个表达式彼此由分号隔开。控制部分后面的语句叫作循环体只要测试表达式为true它便被执行
for(initialization;text-expression;update-expression)body
循环只执行一次初始化。通常程序使用该表达式将变量设置为初始值然后用该变量计算循环周期。
text-expression测试表达式决定循环体是否被执行。通常这个表达式是关系表达式即对两个值进行比较。例如i6。i与6进行比较看i是否小于或等于6如果比较结果为真程序将执行循环体。实际上C并没有将text-expression的值限定为只能真或假可以使用任意表达式C将把结果强制转换为bool类型。因此值为0的表达式将被转换为bool值false导致循环结束。反之则会让循环继续进行。
#include iostream
int main()
{using namespace std;cout Enter the starting countdown valus: ;int limit;cin limit;int i;for (i limit; i; i--)cout i i endl;cout Done now that i i endl;return 0;
} for循环是入口条件循环这意味着在每轮循环之前都将计算测试表达式得知当测试表达式为false时将不会执行循环体。例如上面程序我输入0时将不会运行循环体。
update-expression更新表达式在每轮循环结束时执行此时循环体已经执行完毕。通常它用来对跟踪循环轮次的变量的值进行增减然而它可以是任何有效的C表达式还可以是其他控制表达式。
for语句看上去有些像函数调用因为它使用一个后面跟一对括号的名称。然而for是一个C关键字因此编译器不会将for视为一个函数。
13.2、回到for循环
下面使用for循环完成更多的任务例如计算前16个阶乘
#include iostream
const int ArSize 16;
int main()
{using namespace std;long long factorials[ArSize];factorials[1] factorials[0] 1LL;for (int i 2; i ArSize; i){factorials[i] i * factorials[i - 1];}for (int i 0; i ArSize; i){cout i ! factorials[i] endl;}return 0;
} 该程序创建了一个数组来存储阶乘值。元素0存储0!元素1存储1!依次类推。由于前两个阶乘都等于1因此将该数组的前两个元素设置为1。第一个for语句用循环将每个阶乘设置为索引号与前一个阶乘的乘积。
13.3、修改步长
我们到目前为止循环演示都是循环计数加一或减一其实可以通过修改更新表达式来修改补偿。
下面程序没有将i用于更新表达式而是使用表达式ibyby是用户输入的步长。
#include iostream
int main()
{using namespace std;cout Enter an integer: ;int by;cin by;cout Counting by by s: endl;for (int i 0; i 100; i by)cout i endl;return 0;
} 当9616112100循环终止。
13.4、使用for循环访问字符串
for循环提供了一种依次访问字符串中每个字符串的方式。例如下面这个程序让用户能够输入一个字符串然后按相反的方向逐个字符地显示该字符串。
#include iostream
#include string
int main()
{using namespace std;cout Enter a word: ;string word;cinword;for (int i word.size() - 1; i 0; i--)cout word[i];cout \nBye.\n;return 0;
}
在这个程序中可以使用string对象也可以使用char数组因为它们都让我们能够使用数组表示法来访问字符串中的字符。string类的size()获得字符串中的字符数循环在其初始化表达式中使用这个值将i设置为字符串最后一个字符的索引。为了反向计数程序使用递减运算符--。
13.5、递增运算符和递减运算符--
递增运算符和递减运算符是很常见的操作将循环计数加一或减一。但是有两种变体前置/--x和后置x/--。这两种对结果的影响是一致的但是对于运行的时间是不同的。
前置/--是修改后使用而后置/--是使用后修改例如上面程序的i--是让循环语句的主体运行完一起才进行减一。
13.6、复合语句
前面我们的for语句都只写了一句如果我们要运行多条语句那不是很麻烦吗其实我们只要用两个花括号来构造一条复合语句。
#include iostream
int main()
{using namespace std;cout The Amazing Accounto will sum and average ;cout five numbers for you. endl;cout Please enter five values: endl;double number;double sum 0;for (int i 1; i 5; i){cout Value i : ;cin number;sum number;}cout Five exquistite choices inded! ;cout They sum to sum endl;cout and average to sum / 5 . endl;cout The Amazing Accounto bids you adieu!;return 0;
} 13.7、其他语法技巧——逗号运算符
语句块允许把两条或更多条语句放到按C句法只能放一条语句的地方。逗号运算符对表达式完成同样的工作允许将两个表达式放到C句法只允许放一个表达式的地方。假设有一个循环每轮让一个变量加一另一个变量减一在for循环控制部分的更新部分中完成这两项工作将非常方便。
#include iostream
#include string
int main()
{using namespace std;cout Enter a word:;string word;cin word;char temp;int i, j;for (j 0, i word.size() - 1; j i; i--, j){temp word[i];word[i] word[j];word[j] temp;}cout word \nDone. endl;return 0;
} 在循环体中程序将数组第一个元素和最后一个元素调换从而将单词反转过来。然后再将j加一i减一让它们分别指向第2个元素和倒数第2个元素调换。直到ji循环才停止。
13.8、关系表达式 13.9、比较string类字符串
#include iostream
#include string
int main()
{using namespace std;string word ?urina;for (char ch a; word ! furina; ch){cout word endl;word[0] ch;}cout After loop ends,word is word endl;return 0;} 上面程序使用了一个关系运算符该运算符左边的是一个string对象右边是一个C风格字符串
string word ?urina;
string类重载运算符的方式让你能够在下述的条件下使用它至少一个操作数为string对象另一个可以是string对象或者C风格字符串。
该for循环不是计数循环而是根据情况word是否为furina来确定是否停止。