实验三循环结构程序设计
实验三 循环结构程序设计
一、实验目的
(1) 掌握while、do~while、for语句的使用。
(2) 掌握循环体内使用break、continue语句的作用。
(3) 掌握循环及嵌套循环结构的程序设计方法。
二、实验准备
1.C语言实现循环的方法
① goto 和 if 构成的循环:由于goto是无条件转向,不符合结构化程序设计思想,所以不建议使用。
② while循环:实现“当型”循环,首先判断循环条件,当条件为真,执行循环体,再判断循环条件…… 此种循环有可能一次也不执行循环体。
③ do~while循环:实现“直到型”循环,与while循环的区别是先执行循环体,再判断循环条件,当循环条件为真,再执行循环体…… 此种循环至少执行一次循环体。
④ for循环:与while循环类似,一般用于知道循环变量初值、终值及步长值的循环。
2.break 和continue 语句
① break 语句: 可用在循环体或switch语句中,作用是跳出其所在的控制结构。若是在循环体中,则是跳出其所在的循环,使得循环不止一个出口。
② continue语句:只能用在循环体中,其作用是结束本层本次循环,注意不是退出循环。
3.阅读以下程序,并分析其功能,调试运行程序后再分析其运行结果。
① 掌握三种方法求1到100的累加和。
文件名为 ex3-1-1.c ,内容如下:
# include
main()
{ int sum=0,i=1;
while(i<=100)
sum+=i++; // 等价于:{ sum=sum+i; i++; }
printf("sum is %d\n",sum);
}
文件名为 ex3-1-2.c ,内容如下:
# include
main()
{ int sum=0,i=1;
do
sum+=i++;
while(i<=100);
printf("sum is %d\n",sum);
}
文件名为 ex3-1-3.c ,内容如下:
# include
main()
{ int sum=0,i;
for(i=1;i<=100;i++)
sum+=i;
printf("sum is %d\n",sum);
}
② 程序二,程序文件名为ex3-2.c 。(掌握递推算法(求值))
# include
# include
void main()
{ int s=1;
float n=1,t=1,pi=0;
while(fabs(t)>1e-6) //当前项实数t的绝对值大于1*10-6则执行循环体
{ pi=pi+t; //累加当前项
n=n+2; //推算下一项的分母
s=-s; //推算下一项的符号
t=s/n; //计算下一项的值
}
pi=pi*4;
printf("pi= %f\n",pi);
}
③ 程序三,程序文件名为 ex3-3.c 。(掌握迭代算法(处理fibonacci数列前40项))
# include
void main()
{ long f1=1,f2=1;
int i;
for(i=1;i<=20;i++)
{ printf("%12ld %12ld",f1,f2); //输出当前的两项
if(i%2==0) //循环2次后输出回车换行,即一行输出4个数
printf("\n");
f1=f1+f2; //推算之后的第一项
f2=f1+f2; //推算之后的第二项
}
}
④ 程序四,程序文件名为ex3-4.c 。(掌握穷举算法(判素数))
# include
# include
void main()
{ int m,i,k;
printf("Input m: ");
scanf("%d",&m);
k=sqrt(m); //可以改为:k=m-1; 或 k=m/2;
for(i=2;i<=k;i++) //穷举2~k之间的数作为除数判断和m能否整除
if(m%i==0) //若其中之一能够整除,则确定m不是素数,不再循环,此时i<=k
break;
if(i>k) //若i>k则说明以上循环中m不能被所有的i整除则确定m是素数
printf("%d 是素数!\n",m);
else
printf("%d 不是素数!\n",m);
}
三、实