面向对象程序设计课程辅导(二(编辑修改稿)内容摘要:

行为一条 for循环语句,其循环体是一条复合语句,将被重复执行 6次,对应控制循环的变量 i的取值依次为 0,1,2,3,4和 5,每次循环首先从键盘缓冲区读入一个常数并赋给 x,接着计算出 y的值,然后按一定格式输出 x和 y的值。 若程序运行后,从键盘上输入的 6个常数为 2,5,10,,则得到的输出结果为: 从键盘上同一行输入 6 个常数 :2 5 10 x= 2 y= 17 x= 5 y= 95 x= 10 y= 385 x= y= 10 x= y= x= y= (2) include void main() { int i,n。 double p=1。 cout输入一个正整数,求其阶乘 :。 cinn。 for(i=1。 i=n。 i++) p*=i。 coutn!=pendl。 } 在这个程序中定义了三个变量,用 i作为控制循环的变量,简称循环变量,用 n保存从键盘输入的一个正整数,用 p计算和保存 n的阶乘值, p的初值为 1,每次进行循环计算时都使 p累乘循环变量 i的值,循环结束后 p的值就是 n的阶乘值。 假定程序运行时输入的 n值为 10,则运行结果为: 输入一个正整数,求其阶乘 :10 10!=+006 (3) include include void main() { int n,x,max,min。 cout输入待处理数据的个数:。 cinn。 if(n=0) {coutn=0!endl。 exit(1)。 } cout输入 n个待处理的数据 :。 cinx。 max=min=x。 for(。 n。 ) { cinx。 if(xmax) max=x。 if(xmin) min=x。 } coutmax:maxendl。 coutmin:minendl。 } 在程序的主函数中,第一行同时定义了四个整型变量 n,x,max和 min,用它们分别保存待处理数据的个数、当前被处理的一个数据、已处理数据中的最大值和已处理数据中的最小值。 第二行和第三行用来从键盘上给 n输入一个整数。 第四行用来处理数据个数 n小于等于0的不正常情况。 第五行给出请用户输入 n的数据的提示信息。 第六行用来从键盘缓冲区读入第一个被处理数据并用它作为 max和 min这两个变量的初值。 第 7至 11行为一个 for循环,循环体共需执行 n1次,每次首先从键盘缓冲区读入一个数据到 x中, 接着分别同当前最大值 max和当前最小值 min相比较,若 x较大则用它修改 max的值,若 x较小则用它修改 11 min 的值,使 max 和 min 始终保持已处理数据中的最大值和最小值,当此循环结束后, max和 min中就分别存有 n个数据中的最大值和最小值。 最后两行语句输出所求得的最大值和最小值。 假定需处理 6个数据,这 6个数据为: 48, 62, 30, 24, 55, 36,则程序运行结果为: 输入待处理数据的个数: 6 输入 6 个待处理的数据 :48 62 30 24 55 36 max:62 min:24 (4) include void main() { for(int a=0,b=1。 b100。 ) { couta39。 39。 b39。 39。 a=a+b。 b=a+b。 } coutendl。 couta39。 39。 b39。 39。 endl。 } 该程序的主函数中包含有一个 for循环, 表达式 1分别给变量 a赋初值为 0和给变量b 赋初值为 1,由于这两个变量在此之前没有被定义,所以在此使用时必须定义, 表达式2是一个关系表达式 b100, 表达式 3被省略,循环体中首先输出 a和 b 的值,接着根据a和 b的当前值求出 a的新值,再利用 a和 b的当前值求出 b的新值,然后判断 b100是否成立,若是则执行下一次循环,否则结束循环,转去执行后面的输出语句。 该程序的运行结果为: 0 1 1 2 3 5 8 13 21 34 55 89 144 233 该程序的功能是输出一个数列的前若干项,其中第一项为 0,第二项为 1,以后每一项等于其前两项之和。 如第 10项为 34,它等于第 8项 13和第 9项 34 之和。 (5) include const int M=4, N=5。 void main() { int i,j,s=0。 for(i=1。 i=M。 i++) for(j=1。 j=N。 j++) s+=i*j。 coutsendl。 } 主函数中使用了一个双重 for循环,外循环变量 i 初值为 1,终值为整数常量 M,每执行一次外循环体(即内循环)后其值增加 1,内循环变量初值为 1,终值为整数常量 N,每执行一次内循环体(即 s+=i*j。 语句)后其值也增加 1,内循环体共需执行 MN次。 该程序 12 的功能是计算  MiNj ji1 1 )*(的值。 程序运行结果为 150。 6. 应用举例 例 1. 编一程序计算 1+22+42+62+ +502的值。 分析:此题所给的计算公式是一个和式,它除第一项外,其余项为从 2至 50 的每一个偶数的平方,因此可采用循环累加的方法来计算,即依次把每个数据项(在此为偶数的平方)累加到一个变量中。 设循环变量为 i,它的初值、终值和步长(即每次循环后循环变量的增加值)应分别为 50 和 2,设用于累加的变量为 s,它的初值应为和式中的第一项 1,因为它不能够通过有规律的循环累加到 s上。 在循环体中通过赋值语句每次把 i的平方值累加到 s上,当循环结束后, s的值就是所求的结果。 根 据分析编写出程序如下: include void main() { int i,s=1。 for(i=2。 i=50。 i+=2) s+=i*i。 couts=sendl。 } 例 2. 编一程序计算 101 221)1(ii ix 的值,其中 x值由键盘输入。 分析:此题是一个累加求和问题,适合使用 for循环来实现。 设循环变量为 和式中的 i,它从 1取值到 10,每次增长 1,每次计算出一个数据项并把它累加起来。 为了计算一个数据项中的 xi和 i!,还需要设定两个累乘变量,假定分别用 p1和 p2表示,它们的初值应均为1,在循环体中需要分别向 p1和 p2累乘 x和 i的值。 为了把每个数据项的值累加起来,需要设定一个累加变量,假定用 s 表示,它的初值为 0,每次向它累加 (1)i+1p1/p2 的值。 当和式中的所有 10 个数据项都累加到 s之后, s 的值就是所求的结果。 根据分析编写出程序如下: include void main() { double x,p1=1,p2=1,s=0。 int i,j=1。 cout输入 x的值 :。 cinx。 for(i=1。 i=10。 i++) { p1*=x。 //p1的值为 xi p2*=i。 //p2的值为 i! s+=j*p1/p2。 //j的值为 (1)i+1 j=j。 //j取反,为下一数据项计算做准备 } coutsendl。 } 13 例 3. 已知 y1=121 aex , y2=121 aex ,其中 x从 0开始取值,每次增加的步长为 ,直到 3, a的值由键盘输入,并要求大于 0,编一程序依次求出 x 每一取值所对应的 y1和 y2的值。 分析:设 i为循环变量,让它的初值、终值和步长分别为 0,12 和 1,则 x 的每次取值可表示为。 在循环体中计算 y1和 y2的公式应分别表示为: y1=(1+exp(x))/(sqrt(2*a)+1) y2=(1+exp(x))/(sqrt(2*a)1) 每次根据 x的值(即 )求出对应的 y1和 y2后都要输出出来。 根据分析编写出程序程序如下: include include void main() { double x,a,y1,y2。 coutInput a(a0):。 cina。 //也可把 a设定为数值常量 for(int i=0。 i=12。 i++) { x=*i。 y1=(1+exp(x))/(sqrt(2*a)+1)。 y2=(1+exp(x))/(sqrt(2*a)1)。 coutsetw(10)xsetw(10)y1setw(10)y2endl。 } } 例 4. 已知一组实验数据: ,,,,编一程序分别求出它们的平均值、方差和均方差,要求每一结果只保留两位小数。 分析:设它们的平均值、方差和均方差分别用变量 v,f和 t表示,由数学知识可知,相应的计算公式为: v= ni ixn 11 f=  ni i vxn 1221 t= f 其中 n表示数据个数, xi表示第 i个数据。 此题需要首先求出 ni ix1和 ni ix12 ,然后才能够求出 v,f 和 t。 而求所有数之和以及求所有数平方之和需要采用循环累加的方法。 为此设循环变量为 i,它的初值、终值和步长应分别为 1,n 和 1,设输入变量为 x,每次从键盘缓冲区得到一个实验数据,设累加数据之和的变量为 s1,累加数据平方之和的变量为 s2。 每次分别向 s1和 s2累加 xi和 xi2的值。 根据以上分析编写出程序如下: include include const int n=10。 //n等于待处理数据的个数 void main() 14 { double x,s1,s2。 s1=s2=0。 cout从键盘上输入 n个实验数据 :。 for(int i=1。 i=n。 i++) { cinx。 s1+=x。 s2+=x*x。 } double v,f,t。 v=s1/n。 f=s2/nv*v。 t=sqrt(f)。 v=floor(v*100)/100。 f=floor(f*100)/100。 t=floor(t*100)/100。 coutv。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。