1、实验十一 循环结构程序设计(二) 实验要点在循环语句执行的过程中,注意要实现循环必须要保证的五个条件:循环初值、循环终值,循环体、循环增量和进行循环的条件。循环体重可以是单语句,也可以是多个语句,甚至可以是空语句。若循环体包含多个语句(语句是以分号结束的) ,这多个语句必须用大括号括起来,构成复合语句。for 语句的使用比较灵活,for 语句的格式为:for(表达式 1;表达式 2;表达式 3) 循环体语句for 循环结构的执行过程:首先进行表达式 1 的运算,然后计算表达式 2 的值,若结果为真(非零) ,则执行循环体语句,最后进行表达式 3 的运算。再次计算表达式 2 的值,若结果为“真”
2、 (非零) ,再执行循环体语句,最后再进行表达式 3 的运算。如此循环重复下去,直到计算表达式 2 的结果为“假” (零)时,循环结束,流程控制转到循环结构的下一语句。除了掌握 for 语句的格式外,还必须注意以下几点:1) 用 for 循环结构也具有“ 先判断,后执行”的特点。 for 循环结构相当如下形式的 while 结构:表达式 1;while(表达式 2) 循环体 ;表达式 3;2) 从语法上看,for 的三个成分都是表达式,它们之间都以分号“;” 隔开。3) 表达式 1 和表达式 3 常常是赋值表达式或函数调用,有时也可以是逗号表达式,一般用来实现对循环控制变量初始化和循环控制变量
3、增(减)值。表达式 2 常常是关系表达式或逻辑表达式,但也可以是其它类型的表达式,它是用来表示循环继续的条件,只要其值为非零,就可执行循环体,否则推出循环。例如:for (i=1,sum=0;imain()int num=0;while(num+main()int i;for(i=1;imain() long s,n,k,i;scanf(“ ”,k=2*n-1 ;for(i=1 ;imain() long s ,n,i=1;scanf(“%ld”,while( ) s+=i ;printf(“1+3+%ld=%ldn”,2*n-1,s) ;方法三:用 dowhile 语句实现#includem
4、ain() long s=0,n,i= ;scanf(“%ld”,do s+=i ;i+;while( )printf(“1+3+%ld=%ldn”,2*n-1,s) ;要求:将程序填写完整,并对源程序进行调试运行。(二)程序设计1、用 for 语句的循环嵌套,输出一个九九乘法表。要求:(1)、输出时每个数据占 4 列,即以“%4d”格式输出。(2)、输出格式如下图所示。*1 2 3 4 5 6 7 8 92 4 6 8 10 12 14 16 183 6 9 12 15 16 21 24 274 8 12 16 20 24 28 32 365 10 15 20 25 30 35 40 456
5、 12 18 24 30 36 42 48 547 14 21 28 35 42 49 56 638 16 24 32 40 48 56 64 729 18 27 36 45 54 63 72 81*2、打印输出所有的“水仙花数” ,所谓“水仙花数”是指一个 3 位数,其各位数字立方和等于该数本身。例如,153 是一水仙花数,因为 153=13+53+33。3、求 1!+2!+n! 。(n 要求从键盘输入。)4、输入两个正整数 m 和 n,求它们的最大公约数和最小公倍数。5、求解百鸡问题:已知公鸡每只 5 元、母鸡每只 3 元、小鸡 1 元 3 只。用 100元买 100 只鸡,问公鸡、母鸡、
6、小鸡分别为多少只?在此写源程序。1、2、3、4、5、四、改错题:1、以下程序中“/* N * /”的下一行中有错误,请改正(注意:不得加行、减行、加句、减句) 。该程序功能:输入 m、 n(要求输入数均大于 0,且m=n) ,输出它们的最小公倍数。#include void main() int m,n,k;/* 1 */while(scanf(“%d%d“,while(scanf(“%d%d“,for( _2_; n%k!=0|m%k!=0; k-);printf(“%dn“,k);3、以下程序中“_ N _“是根据程序功能需要填充部分,请完成程序填充(注意:不得加行、减行、加句、减句) 。该程序功能:对 x=1,2,.,10,求 f(x)=x*x-5*x+sin(x)的最大值。#include #include #define f(x) x*x-5*x+sin(x)void main() int x; float max;_1_for(x=2;x=10;x+)_2_printf(“%fn“,max);