刘彦戎
摘要:在C语言循环结构设计中,除了可以用while和do-while语句实现循环外,C语言还提供了for语句可以实现循环,for语句不仅比以上两种语句实现起来灵活,而且可以用于循环次数确定的情况。总的来说完全可以代替while和do-while.
关键词:For语句循环结构条件表达式
1、for语句的表达形式
for(表达式1;表达式2;表达式3),3个表达式的主要作用:表达式1设置初始条件,只执行一次;表达式2循环条件表达式,用来判断程序是否继续执行,在每次执行循环体前先执行此表达式,决定是否继续执行循环体;表达式3是对循环的调整,是在执行完循环体后才进行的。所以我们可以对for语句这样理解 for(循环变量赋初值;循环条件;循环变量自增或自减)例如:
for(i=1;i<50;i++)
sum=sum+i;
其中i=1是给循环变量赋初值1,i<50是指定循环条件(当i的值小于50时循环继续执行)i++的作用是使循环变量i的值不断变化,以便最终满足终止循环的条件,使循环结束。
(1)for语句表达形式中的表达式1可以省略,但表达式1后边的分号不能省略。例如:
for(;i<50;i++)sum=sum+i; (由于省略了表达式1,也即是没给循环变量赋初值,因此,为了程序能正常运行,应该在FOR语句之前给循环变量赋初值。即:i=1; for(;i<50;i++) sum=sum+i;执行for 语句时,跳过表达式1这一步,由于在For之前加了语句i=1,因此其作用仍然不变。)
(2)for语句表达形式中的表达式2也可以省略,但表达式2后边的分号不能省略。即不设置和检查循环结束的条件。例如:for(i=1; ;i++) sum=sum+i;此时循环无终止的进行下去,也就说表达式2一直为真.
(3)表达式3也可以省略,但此时程序设计者应另外设法保证循环能正常结束。
(4)表达式1和表达式3都没有,只有表达式2,即只给出循环结束条件。对于没有表达式1和表达式3的for循环语句,为了让循环正常执行,应当在for语句前给循环变量赋初值。 从此处我们可以看出for语句比while语句功能更强大,除了可以给出循环条件外,还可以赋初值,使循环变量自动增减等。
(5)表达式1、表达式2和表达式3都可以省略。例如:for(; ;) printf(“%d\n”,i);
相当于 while(1) printf(“%d\n”,i);即就是不设初值,不判断表达式2的条件(表达式2始终为真),不改变循环变量。这样程序就无终止的执行循环体语句。显然这样的程序是没有任何价值的。
(6)表达式1可以是设置循环变量初值的赋值表达式,也可以是与循环变量无关的其他表达式。
例如:for(sum=0;i<50;i++) sum=sum+i;总之,表达式3可以是与循环控制无关的任意表达式。但是不论如何写for语句,都必须是循环能正常执行,防止死循环。
(7)表达式1和表达式3可以是一个简单的表达式,也可以是逗号表达式,即就是包含一个以上的简单表达式,中间用逗号隔开。
如:for(sum=0,i=1,i<50;i++) sum=sum+i ;或 for(i=0,j=50;i ①for(i=0;(ch1=getchar())!=\n;i+=ch1);在表达式2中先从终端接收一个字符赋给ch1,然后判断这个赋值表达式的值是否不等于‘\n(转移字符 换行),如果不等于\n,就执行这个循环体,它完成的作用是不断输入字符,将他们的ASCⅡ码相加,直到输入一个“换行”符为止,程序结束执行。这里我们要注意的是:此时for语句的循环语句为空语句,把本来要在循环体内处理的内容放在表达式3中,作用是一样的,可见for语句功能的强大,可以再表达式中完成本来应在循环体内完成的操作。 ②for(;((ch1=getchar())!=\n;)printf(“%c”,ch1);这个for语句中只有表达式2,而无表达式1和表达式3.它的作用是每读入一个字符后立即输出该字符,直到输入一个“换行”为止。 运行情况: Computer((输入) Computer(输出)。这里我们要注意的是:从终端键盘向计算机输入时,是在按Enter键以后将一批数据一起送到内存缓冲区去的。因此输出结果不是CCoommppuutteerr,即不是从终端输入一个字符马上输出一个字符,而是在按Enter键后数据才送入内存缓冲,然后每次从缓冲区读一个字符,再输出该字符。 从上面的介绍我们可以看到,C语言的FOR语句使用非常灵活,变化多端。C语言的FOR语句比其他语言中的for语句灵活和强大的多。可以把循环体和一些循环控制无关的操作也作为表达式1和表达式3的出现,这样程序可以比较简洁。 2、for语句的执行过程 (1)先求解表达式1. (2)再求解表达式2,如果表达式2为真,则执行FOR语句中的循环体,然后执行(3),如果为假,则循环结束,转到第(5)步。 (3)求解表达式3. (4)转回步骤(2)继续执行。 (5)循环结束,执行for语句下面的一个语句。 3.种循环的比较 (1) 在处理循环语句中,while、do-while和for 都可以用来处理同一个问题,一般情况下他们3个可以互换。 (2)在while循环和do-while循环中,只在while后面的括号内指定循环条件,因此为了使循环能正常结束,应在循环中包含使循环区域结束的语句。For循环可以在表达式3中包含使循环趋于结束的操作,甚至可以将循环体重的操作全部放到表达式3中。因此for语句的功能更强,凡是while循环能完成的,用for循环都能实现。 (3)用while和do-while循环时,循环变量初始化的操作应在while和do-while语句之间完成。而for语句可以在表达式1中实现循环变量的初始化。 (4)while、do-while和for循环,都可以用break语句跳出循环,用continue语句结束本次循环。 4.种循环举例:求1+2+3+……+100,即∑100n=1n (作者单位:陕西国际商贸学院) 参考文献: [1]《电脑知识与技术》2009年第24期。 [2]《家教世界》2012年04期。 [3]《C语言程序设计实例教程》涂玉芬主编北京邮电出版社 2011年第一版。