首页 理论教育 C语言程序设计:for循环的使用

C语言程序设计:for循环的使用

时间:2023-10-29 理论教育 版权反馈
【摘要】:若将例题4.1中1~100求和的for语句改写为以下语句:forsum+=n;则循环将会无终止的循环下去,形成“死循环”。例4.1中的for语句可以改写为:for{sum+=n;n++;}以上可以看出,for语句的3个表达式均可以省略,任意两个甚至三个表达式可以同时省略。用for语句求n!。

C语言程序设计:for循环的使用

上文已经给出了for语句的一般形式,for语句作为使用最广泛、最灵活的循环语句,它的使用形式是多样的。

1.表达式1、表达式2、表达式3均可以省略。

在for语句中,表达式1、表达式2、表达式3均可以省略,但三个表达式之间的分隔符“;”不能省略。

例如:

在例4.1中1~100求和的for语句:

for(n=1;n<=100;n++)

 sum+=n;

表达式1省略后,表达式1后的“;”是不可以省略的,此时应在for语句之前完成赋初值操作,以上语句可以改写为:

n=1;

for(;n<=100;n++)

 sum+=n;

表达式2省略后,表达式2后的“;”也是不可以省略的,此时认为表达式2的值恒为“真”,将会无终止的循环下去,即形成了“死循环”,需要配合使用4.4节将要学习的用于终止循环的break语句,循环才能结束。若将例题4.1中1~100求和的for语句改写为以下语句:

for(n=1;;n++)

 sum+=n;

则循环将会无终止的循环下去,形成“死循环”。

由于表达式3通常是用于对循环变量的修改,从而控制循环是否继续进行,因此表达式3省略后,需在合适的位置(即循环体中)添加相应语句以完成相同的功能。

例4.1中的for语句可以改写为:

for(n=1;n<=100;)

 sum+=n;

 n++;

以上可以看出,for语句的3个表达式均可以省略,任意两个甚至三个表达式可以同时省略。

2.表达式1、表达式3可以是一个简单的表达式,也可以是逗号表达式。

表达式1可以是逗号表达式,表达式3也可以是逗号表达式。

例如:

可以将例4.1中的sum清零操作以及for语句改为:

for(n=1,sum=0;n<=100;n++)

 sum+=n;

在此语句中表达式1是一个逗号表达式。

表达式1、表达式3既可以只有一个表达式是逗号表达式,也可以同时是逗号表达式。

例如:

for(i=1,j=100;i<=j;i++,j--) //i,j均为循环变量

 k=i+j;

以上可以看出,如果在执行循环前需要对多个变量(也可以不是循环变量)给出初值,则表达式1可以使用逗号表达式,如果循环中存在多个循环变量,循环的执行过程中需要对多个变量进行调整,则表达式3可以使用逗号表达式。逗号表达式是按从左到右顺序求解,整个逗号表达式的值为最右边表达式的值。虽然可以把一些与循环控制无关的操作和循环体中的语句作为表达式1或表达式3出现,这样程序可以短小简洁,但需要注意:过分地利用这一特点会使for语句显得杂乱,降低了程序的可读性,最好不要把与循环控制无关的操作放到for语句中。

3.表达式2一般是关系表达式或逻辑表达式,也可以是算术表达式,只要值为非零,就继续执行循环体。

例如:

for(;(c=getchar())!=′\n′;)

 printf("%c",c);

先从终端接收一个字符赋给字符型变量c,然后判断此赋值表达式的值是否不等于′\n′,若不相等,则执行循环体语句,即每读入一个字符后则输出该字符,直到输入一个“换行”结束循环。如输入“hello”按Enter键后,会输出“hello”,需要注意:从终端键盘向计算机输入时,是在按Enter键以后才将一批数据一起送到内存缓冲区中去,因此,不是从终端输入一个字符立即就输出一个字符,而是在按Enter键后数据才送入内存缓冲区,然后每次从缓冲区读取一个字符,再输出该字符。

4.循环体如果包含多条语句,必须用一对花括号括起来。循环体可以是空语句,但语句后的分号不能省略。

例如:

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

这个循环的循环体是空语句,什么也不做,当i增至100时,程序执行完最后一次循环,仅仅是实现了时间延迟。(www.xing528.com)

总之,for语句的使用非常灵活,这里只是列举了几种常见的情况,更多的还需要在实际的使用中不断积累、总结。

【例4.1】用for语句求1+2+…+100,即∑

100

n=1n。

程序内容如下:

1 #include<stdio.h>

2 int main()

3 {

4  int n,sum=0;

5  for(n=1;n<=100;n++)

6   sum+=n;

7  printf("%d\n",sum);

8  return 0;

9 }

程序结果如图4.2所示:

图4.2 例4.1程序结果图

【例题中关键问题说明】

(1)变量n在本程序中既是循环变量,也是要累加的数据项

(2)本例中第6行“sum+=n;”是for语句的循环体语句,是反复执行的语句,此for语句的循环体只有这一条语句。

(3)sum作为存放累加结果的变量,使用前要清零。

() 语句中用于分隔三个表达式的“;”是必不可少的。

【例4.2】用for语句求n!。

程序内容如下:

1 #include<stdio.h>

2 int main()

3 {

4  int i,n,s=1;

5  scanf("%d",&n);

6  for(i=1;i<=n;i++)  

7   s=s*i;   

8  printf("s=%d\n",s);

9  return 0;

10 }

程序结果如图4.3所示:

图4.3 例4.2程序结果图

【例题中关键问题说明】

(1)变量i是本程序中for语句的循环变量,循环结束时i的值应为n+1。

(2)第7行中“s=s*i;”是for循环的循环体语句,是反复执行的语句。

(3)s作为存放结果的变量,使用前要置1。

()语句中用于分隔三个表达式的“;”是必不可少的。

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

我要反馈