首页 百科知识 循环(直到型循环)

循环(直到型循环)

时间:2022-10-16 百科知识 版权反馈
【摘要】:C语言提供的for循环结构是使用最广泛、最灵活的一种循环控制结构。在已知需要循环次数时,通常采用for循环结构,通过某个变量进行循环次数的控制。循环将无限进行下去,称为无限循环或死循环。循环体内应有某些操作能使循环达到终止条件,正常退出循环。当程序读入2900后,sum的值大于3000,循环控制变量count的值被循环体的语句赋值为100,达到循环终止条件,循环结束。

3.5 for循环(直到型循环)

在实际问题中常需要重复进行某些运算或操作,这类问题用循环控制结构来解决,例如统计学生成绩、迭代求根、若干数求和等。因此几乎任何实用程序都包含了循环结构。

C语言提供的for循环结构是使用最广泛、最灵活的一种循环控制结构。在已知需要循环次数时,通常采用for循环结构,通过某个变量(称为循环控制变量)进行循环次数的控制。

一般,将for循环称为直到型循环结构。for循环结构使用for语句表达。

for语句的一般形式为

  for (表达式1;表达式2;表达式3)

       循环体

其中,表达式1:一般为赋值表达式,为循环控制变量赋初值;

 表达式2:一般为关系表达式或逻辑表达式,作为控制循环结束的条件;

 表达式3:一般为赋值表达式,对循环控制变量进行修改(增量或减量)。

 循环体:可以是单语句,也可以是复合语句。

for控制语句的执行过程:流程控制图如图3.5.1所示。

img170

图3.5.1 for循环结构流程

1)首先计算表达式1,为循环控制变量赋初值。

2)计算表达式2,检查循环控制条件,若表达式2的值为真,执行一次循环体;若为假,跳出循环结构。

3)执行完一次循环体后,计算表达式3,对控制变量进行增量或减量操作,再重复第2)步操作。

例如:计算1+2+3+…+100。

img171

循环控制变量i赋初值1,当i<=100时,将i的值累加到求和变量sum中,每完成一次累加运算,i的值增1,直到i的值大于100时,循环累加才结束。

使用for语句时应注意:

1.for语句的任何一个表达式都可省略,但不能省略分号。省略1个或多个表达式,可以增强for语句的灵活性和实用性。

1)省略表达式1

若循环控制变量的初始值不是常量,而是通过计算得到,则可省略表达式1。例如:

img172

2)省略表达式3

当循环体内含有修改循环控制变量的语句,并能保证循环正常结束时,可省略表达式3,例如:

img173

此循环结构读入若干整型数,直到读入的数字为2012时结束循环。

3)省略有表达式2

当for语句中没有表达式2时,编译程序将解释为表达式2的值为1,即循环判定条件为真。循环将无限进行下去,称为无限循环或死循环。实用程序不应出现死循环。循环体内应有某些操作能使循环达到终止条件,正常退出循环。

4)省略所有表达式

省略所有表达式,for语句()内仅有2个分号。形式为

img174

例如:

img175

当程序循环到读入一个字符*时,执行break语句退出循环,break语句在循环结构中的应用将在后续内容进一步介绍。

2.for语句中应用逗号表达式

应用逗号表达式,可以使用两个或两个以上的循环控制变量同时控制循环。

例如:(设value为已经赋值的整型变量)

img176

表达式1和表达式3均为逗号表达式。表达式1同时为i,j赋初值,表达式3对i增1,对j减1,当i大于等于j时,循环结束。

for语句还可用来实现延时功能,例如:

img177

或写成:

  for (i=1, j=1;i<10000;i++, j*=1) ;

将表达式3也写为逗号表达式,循环体是空语句(表示不执行任何操作,但在语法上不可缺少,否则将判定为缺少循环体)。for语句通过进行10000次加法、乘法和比较操作,实现延时等待功能。

3.C语言的for语句允许在循环体内改变循环控制变量的值。

例如:输入若干整数并求和,直到和值大于等于3000或输入数字个数等于100时为止。

img178

若输入数据为

  23 45 67 2900 34 67

当程序读入2900后,sum的值大于3000,循环控制变量count的值被循环体的语句赋值为100,达到循环终止条件,循环结束。

例3-7 打印九九乘法表。

img179

img180

程序第一个for语句打印表的第一行,后两个for语句构成了一个二重循环结构,计算并打印九九表的内容,其中第13行打印表的第一列。注意内层循环的控制表达式写法,它考虑了九九表的规律。

程序的执行结果是:

img181

例3-8 编写程序显示输入的整数的二进制位组合。

参考程序为

img182

程序的执行结果是:

  输入:

    10246

  输出:

    2806

    0010100000000110

该程序读入一个整数number,首先用位逻辑运算number&0×8000得到它的最高位,将这一位存储到变量temp中,然后对temp进行右移15位的操作,即将最高位移到temp的最低位上,显示完这一位后,将这一位从number中移出去。这个过程一直进行下去,直到number的各位都显示完毕。

常见的编程错误3.2

●在for循环中,循环执行的次数比期望值多一次或少一次,应特别注意用于控制循环变量的初值和条件制定式的终止值。

●误将一个分号放在for语句的末尾,可能产生空循环。如

for (i=1;i<100;i++) ; …

●误用逗号而不是分号分开for语句中的各项表达式。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈