1、实验五循环结构程序设计实验名称循环结构程序设计成绩姓 名学号班级实验地点完成日期一、实验目的1) 熟悉并掌握用while语句,do-while语句和for语句实现循环的方法。2) 掌握在程序设计中用循环的方法实现一些常用算法(如穷举、迭代、递推等)。3) 进一步学习调试程序。二、实验内容与步骤本实验编程序并上机调试运行。(1).输入两个正整数m和n,求它们的最大公约数和最小公倍数。在运行时,输入的值mn,观察结果是否正确。再输入时,使mn,观察结果是否正确。修改程序,不论m和n为何值(包括负整数),都能得到正确结果。#include#includemain()int n,m,a,b,x;int
2、 i;printf(输入两整数m n: );scanf(%d %d,&a,&b);/输入两整数m=abs(a);/取绝对值n=abs(b); if(m=0 | n=0)printf(不能为0.n); elseif(nm)x=m,m=n,n=x; /m为较大的数,n为较小的数,m,n辗转相减。while(m-n!=0)x=abs(m-n);m=n;n=x;/辗转相减法求得最大公约数(m)i=abs(a*b/m);/i为最小公倍数printf(na,b最大公约数: %dn,m);printf(a,b最小公倍数: %dn,i); (2). 输入一行字符,分别统计出其中的英文字母、空格、数字和其它字符
3、的个数。在得到正确结果后,请修改程序使之能分别统计大小写字母、空格、数字和其它字符的个数。#include#includemain()char s200;/定义字符串数组int L,i, qt,kg,zmxx,zmdx,num;/定义计量数:长度、位置、其他、字母小写、大写、数字。qt=kg=zmxx=zmdx=num=0;/计量数初始化printf(字符串:);gets(s);/输入字符串L=strlen(s);/取得字符串长度for(i=0;i=48 & si=97 & si=65 & si=90)zmdx+;/大写字母elseqt+; /其他字符qt=qt-1;/除去“0”这一个位pri
4、ntf(空格:%dn数字:%dn字母:%d大写:%d 小写:%dn其他:%dn,kg,num,zmdx+zmxx,zmdx,zmxx,qt); (3).用牛顿迭代法求方程2x3-4x2+3x-6=0在1.5附近的根。在得到正确结果后,请修改程序使所设的x初值由1.5改变为100、1000、10000,再运行,观察结果,分析不同的x初值对结果有没有影响,为什么?修改程序,使之能输出迭代的次数和每次迭代的结果,分析不同的x初始值对迭代的次数有无影响。#include#includemain()int i;long double y,x,y1;x=1.5;for(i=1;i=20;i+)y=2*po
5、w(x,3)-4*pow(x,2)+3*x-6;y1=6*x*x-8*x+3;x=x-y/y1;printf(%d x=%.10fn,i,x); 可见,初始值不同,不影响结果,但影响迭代次数。(4).猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩一个桃子了。求第一天共摘了多少桃子。在得到正确结果后,修改题目,改为猴子每天吃了前一天剩下的一半后,再吃两个。请修改程序,并运行,检查结果是否正确。#includemain()int a ,i;a=1;printf(每天吃一半零2个.nn);printf(第%2d 天不吃也只剩%4d 只n,10,a);for(i=10-1;i0;i-)a=(a+2)*2;printf(第%2d 天未吃前剩下%4d 只n,i,a);printf(第 1 天总共摘来了%4d 只n,a);三、实验心得