一、实验目的和要求
1.熟悉掌握用while语句、do-while语句和for语句实现循环的语句。
2.掌握在程序设计中用循环的方法实现一些常用的算法。
3.进一步学习调用程序。
二、实验内容和原理
1.输入一行字符,分别统计出其中的英文字母、空格、数字和其他字符的数。
在得到正确结果后,请修改程序使之能分别统计大小写字母、空格、数字和其他字符的个数。
2.用牛顿迭代法求方程 2x3-4x2+3x-6=0在1.5附近的根。
在得到正确结果后,请修改程序是所设的值由1.5
改为100、1000、10000,在运行,观察结果,分析不同的X初值对结果有没有影响,为什么?
修改程序,使之能输出迭代的次数和每次迭代的结果,分析不同的x初
值对迭代的次数有无影响。
3.猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾
又多吃了一个。第二天早上有将剩下的挑子吃掉一半,又多吃了一个。
后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃是,
只剩下一个挑子了。求第一天共摘了多少桃子。
在得到正确结果后,修改题目,改为猴子每天吃了前一天剩下的一半后
再吃俩个。请修改程序并运行,检查结果是否正确。
三、实验环境
1.
硬件环境:每生一台品牌机
2.
软件环境:Turbo C 3.0
四、算法描述及实验步骤
1.
算法描述(可以用流程图、伪代码或源程序描述)
(实验一):
#include <stdio.h>
void main( )
{char c;
int letters=0,space=0,digit=0,other=0;
printf("请输入一行字符:");
while((c=getchar( ))!=’\n’)
{
if
(c>=’a’&&c<=’z’||
c>=’A’&&c<=’Z’)
letters++;
else if (c= =’ ’)
space++;
else
if(c>=’0’&&c<=’9’)
digit++;
else
other++;
}
printf(“%d,%d,%d,%d”,letters,space,digit,other);
}
修改后的程序:
#include <stdio.h>
void main( )
{char c;
int
letters=0,LETTERS=0,space=0,digit=0,other=0;
printf("请输入一行字符:");
while((c=getchar( ))!=’\n’)
{
if
(c>=’a’&&c<=’z’)
letters++;
else if
(c>=’A’&&c<=’Z’)
LETTERS++;
else if (c= =’ ’)
space++;
else
if(c>=’0’&&c<=’9’)
digit++;
else
other++;
}
printf(“%d,%d,%d,%d,%d”,letters,LETTERS,space,digit,other);
}
(实验二):
#include<stdio.h>
#include<math.h>
void main()
{float x1=1.5,x0,f,f1;
while(fabs(x1-x0)>=le-5)
{x0=x1;
f=((2*x0-4)*x0+3)*x0-6;
f1=(6*x0-8)*x0+3;
x1=x0-f/f1;
}
printf(“ %5.2f\n”,x1);
}
修改后的程序:
#include<stdio.h>
#include<math.h>
void main()
{int i=0,float x1=1.5,x0,f,f1;
do
{x0=x1;i=0;
f=((2*x0-4)*x0+3)*x0-6;
f1=(6*x0-8)*x0+3;
x1=x0-f/f1;
i++;
printf("%5.2\n",x1);
}
while(fabs(x1-x0)>=le-5)
printf(“ %5.2f\n”,x1);
printf(“%d”,i);
}
(实验三):
#include<stdio.h>
void main()
{int day,m,n;
while(day>0)
{m=2*(n+1);
n=m;
day--;
}
printf(“all=%d”,m);
}
修改后的程序为:
#include<stdio.h>
void main()
{int day,m,n;
while(day>0)
{m=2*(n+2);
n=m;
day--;
}
printf(“all=%d”,m);
}
2.
实验步骤
l
输入源代码
l
进行编译
l
进行测试,使用的测试用例:
(实验一)输入:请输入一行字符:I am 20 years
old.
预期输出:11,4,2,1
(实验二)输入:无
预期输出:2.00
(实验三)输入:无
预期输出:all=1534
五、编译和调试过程
1.编译过程
记录算法实现中发现的语法错误及改正
程序编写过程中没发现任何语法错误。
2.调试过程
记录算法实现中发现的逻辑错误及改正,对每个测试用例,记录实际输出,并与预期输出进行比较,如果不同,分析产生错误的原因并改正。
(实验一)输入:请输入一行字符:I am 20 years old.
预期输出:11,4,2,1
实际输出:11,4,2,1
分析:预期输出和实际输出一致,说明程序无错误。
(实验二)输入:无
预期输出:2.00
实际输出:2.00
分析:预期输出和实际输出一致,说明程序无错误。
(实验三)输入:无
预期输出:all=1534
实际输出:all=1534
分析:预期输出和实际输出一致,说明程序无错误。
六、实验结果
用与测试用例不同的输入数据运行算法,写出得到的结果,并分析结果是否正确。
(实验一)输入:请输入一行字符:Your adress is #123BJ road.
输出结果:15,3,4,3,2
结果分析:运行结果正确。
(实验二)输入:无
输出结果:2.00
结果分析:运行结果正确。
将x的值由1.5改为100、1000、10000时运行结果还是2.00,所以不同的x
值对结果无影响,但对迭代的次数有影响。
(实验三)输入:无
输出结果:all=2556
结果分析:运行结果正确。
七、总结
加载中,请稍候......