一、实验目的
(一)掌握使用for,while,do-while语句实现循环嵌套的方法;
(二)巩固break和continue语句的使用。
二、预习内容
预习教材中有关用for,while,do-while语句实现循环嵌套的方法以及循环嵌套的执行过程。
三、实验内容
(一)根据公式:sum=,计算sum的值。
注意:根据题目,考虑所定义的各个变量应该为何种类型。
编程提示:定义一个变量存放最后的求和结果(假设为sum),sum的数据类型应为实型,定义变量t计算整数的阶乘。使用双重循环,程序的基本结构为:
for(i=1,sum=0; i<=20; i++)
{ t赋初值1 ;
for( j=1; j<=i; j++ )
变量t连乘求积;
变量sum累加t的倒数;
}
注意上述程序结构和内循环变量的终值。想一想是否可以将t=1放在外循环之前?
1. /* c5-1.c 求数列和 */ 2. #include "stdio.h" 3. int main() 4. { 5. float sum=0; int i,j,t; 6. for(i=1;i<=5;i++) 7. { 8. t=1; 9. for(j=1;j<=i;j++) 10. t=t*j; 11. sum=sum+1.0/t; 12. } 13. printf("%f\n",sum); 14. return 0; 15. }
(二)编程输出九九乘法表。
编程提示:我们日常看到的乘法表是:
1×1=1
1×2=2 2×2=4
1×3=3 2×3=6 3×3=9
…
1×9=9 … … … 9×9=81
每个算式可以归为:i×j=?的形式,而且每行中的算式数量随着行数变化。考虑外层循环变量和内层循环变量应当取何值呢?
程序的基本结构为:
for( i=1; i<=9; i++ )
{ for(j=1; __________; j++ )
输出乘法算式;
输出回车换行符;
}
1. /* c5-2.c 输出九九乘法表 */ 2. #include "stdio.h" 3. void main() 4. { 5. int i,j; 6. for(i=1;i<=9;i++) 7. { 8. for(j=1;j<=i;j++) 9. printf("%dx%d=%d ",j,i,j*i); 10. printf("\n"); 11. } 12. }
(三)编程输出以下图形。
*
***
*****
编程提示:输出图形的这一类问题,首先要看一看图形的特点,找到规律:一共有几行,每行先输出什么字符,输出几个;后输出什么字符,输出几个。一般外循环变量控制行数,内循环变量控制各种字符的数量。
程序的基本结构为:
for(i=0; i<=2; i++)
{ 连续输出若干空格;
连续输出若干个“*”;
输出一个换行;
}
1. /* c5-4.c 输出字符图形 */ 2. #include "stdio.h" 3. void main() 4. { 5. int i,j,n; 6. for(i=0;i<=2;i++) 7. { 8. for(j=0;j<=2-i;j++) 9. printf(" "); 10. for(n=0;n<=2*i;n++) 11. printf("*"); 12. printf("\n"); 13. } 14. }
(五)运行以下程序,分析程序的运行结果并上机验证。
1. /* c5-5.c 循环结构程序 */ 2. #include "stdio.h" 3. void main( ) 4. { int i=0, a=0; 5. while( i<20 ) 6. { for( ; ; ) 7. { if((i%10)==0) break; 8. else i--;} 9. i+=11;a+=i; 10. } 11. printf("%d\n",a); 12. }
四、实验注意事项
(一)对于双重循环来说,外层循环往往是控制变化较慢的参数(例如所求结果的数据项的个数、图形的行数等),而内层循环变化快,一般控制数据项的计算、图形中各种字符的数量等。
(二)注意在循环结构程序设计中,正确使用{ }构成复合语句。
(三)外层循环变量增值一次,内层循环变量从初值到终值执行一遍。
(四)程序书写时,最好使用缩进结构以使程序结构清晰。