全站搜索未启用
跳到主要内容

文本三:for循环语句

1.循环的概念

如财务人员需要给每个人计算工资,一个班级需要计算学生一次考试的总成绩和平均成绩。在C语言程序设计中有for语句、while语句、do循环语句。

2.for循环语句的格式:

for ( <表达式1> ; &lt表达式2&gt ; &lt表达式3&gt ) <语句>

3.for循环语句的执行过程:

(1) 计算循环头部中的表达式1的值;

(2) 计算循环头部中的表达式2的值,假定其值为M,若缺省其值为1;

(3) 若M为逻辑真(非0)则执行一遍循环体,否则结束for语句;

(4) 计算表达式3的值,紧接着自动转向第2步继续执行循环循环。

4.for语句格式举例

(1) for(i=0; i<5; i++) printf("%d ",i*i);

//0 1 4 9 16

(2) for(j=1,p=1; j<=M; j++,p*=j);

//p=(M+1)!

(3) for(k=1,s=0; ;) {s+=k*(k+1); k+=2; if(k>5) break;}

//k=7,s=2+12+30=44

5.for语句嵌套 

在一个for循环语句的循环体内,还可以包含有for循环语句。

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

for(j=1; j<=5; j++) s+=1;

2) for(i=1; i<4; i++)

for(j=1; j<=i; j++) p+=i*j;

//p=25 次数1+2+3=6

(3) for(i=1; i<=5; i++) {

scanf("%d",&x);

for(j=2; j<=3; j++) if(x%j==0) break;

if(j>3) c++;

}

//3 8 13 15 25 C=2

使用for循环的程序举例

程序1:

#include<stdio.h>

#include<stdlib.h>

void main()

{

int n,x,max,min;

printf("输入待处理数据的个数(n>0):");

scanf("%d",&n);

for(;n<=0;) {printf("重输(n>0):"); scanf("%d",&n);}

printf("需要从键盘上输入%d个待处理的数据!\n",n); //输入提示

scanf("%d",&x);

max=min=x;

for(;--n;) {

scanf("%d",&x);

if(x>max) max=x;

if(x<min) min=x;

}

printf("max:%d, min:%d\n",max,min);

}

输入待处理数据的个数(n>0):6

需要从键盘上输入6个待处理的数据:

48 62 30 24 55 36

max:62, min:24

程序2:

#include<stdio.h>

void main()

{

int a,b;

for(a=0,b=1; b<20; a=a+b,b=a+b)

printf("%d %d ",a,b); //0 1 1 2 3 5 8 13

printf("%d %d\n",a,b); //21 34

}

利用for循环编程举例

举例1:编一程序计算出1+22+42+62++502的值。

分析:设循环变量为i,它的初值、终值和步长应分别为2、50和2,设用于累加的变量为s,它的初值应为和式中的第一项1。在循环体中每次把i的平方值累加到s上。

#include<stdio.h>

void main()

{

int i,s=1;

for(i=2;i<=50;i+=2) s+=i*i;

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

}

运行结果:s=22101

举例2:由勾股定理可知,在一个直角三角形中,两条直角边a和b与斜边c的关系为a2+b2=c2,编一程序求出每条直角边均不大于30的所有整数组解。如(3,4,5)、(5,12,13)就是该题的2组解。

分析:根据题意,需要使用三重循环来解决,设外循环变量用a表示,初值、终值和步长取1、30和1。内循环变量用b表示,初值、终值和步长取a+1,30和1。会出现象(3,4,5)和(4,3,5)这样的重复组。最内层循环的变量用c表示,它表示直角三角形的斜边,c>b同时c

1。

#include<stdio.h>

const int N=30;

void main()

{

int a,b,c;

for(a=1; a<=N; a++)

for(b=a+1; b<=N; b++) {

for(c=b+1; c<=b+a-1; c++) {

if(c*c==a*a+b*b)

&n

printf("(%d, %d, %d)\n",a,b,c);

p; }

}

}

运行结果: //共13组,前5组

(3, 4, 5)

(5, 12, 13)

(6, 8, 10)

(7, 24, 25)

(8, 15, 17)

 

最后修改: 2019年09月26日 Thursday 18:09