实验三-模块化程序设计
- 格式:doc
- 大小:25.50 KB
- 文档页数:5
实验三模块化程序设计
【实验目的】
1.理解和掌握多模块的程序设计与调试的方法;
2.掌握函数的定义和调用的方法;
3.学会使用递归方法进行程序设计。
【实验内容】
1.编写一个函数,判断一个数是不是素数。在主函数中输入一个整数,输出是否是素数的信息。
实验步骤与要求:
(1) 编写一个函数isprime(n),如果n是素数返回1,否则返回0。
(2) 编写一个主函数,输入一个整数,调用isprime( )函数,判断此整数是否为素数,并输出结果。
函数isprime(n)算法说明:
(1) k = sqrt(n)
(2) i = 2
(3) 当i <= k时,执行(3.1)(3.2),否则转(4)
(3.1) if ( m % i == 0 ) return 0
(3.2) i=i+1
(4) return 1
#include
#include
int isprime(int n)
{
int i;
double k;
i=2;
k = sqrt(n);
while(i<=k)
{
if(n%i==0) return 0;
i++;
}
return 1;
}
main()
{
int a;
int t=1;
printf("请输入一个整数\n");
scanf("%d",&a);
t=isprime(a);
printf("%d",a);
if(t==0) printf("不是素数\n");
else printf("不是素数\n");
}
2.编写函数Celsius返回华氏温度对应的摄氏温度,函数Fahrenheit返回摄氏温度对应的华氏温度。用这些函数编写程序,打印从0到100的所有摄氏温度及对应的华氏温度,32到212度的所有华氏温度及对应的摄氏温度。
实验步骤与要求:
(1)用整齐的表格形式输出。
(2)尽量减少输出行数,但要保持可读性。
#include
main()
{
int fahr,celsius;
int lower,upper;
lower=0;
upper=100;
fahr=lower;
while(fahr<=upper){celsius=5*(fahr-32)/9;
printf("%d\t%d\n",fahr,celsius);
fahr++;};
main()
;{
int celsius,fahr;
int lower,upper;
lower=32;
upper=212;
celsius=lower;
while(celsius<=upper){fahr=9*celsius/5+32;
printf("%d\t%d\n",celsius,fahr);
celsius++;}
}
}
3.使用随机函数编写一个猜数字游戏程序。
实验步骤与要求:
由程序随机生成一个1到1000的随机数,游戏者输入猜测值以后,如果正确,则显示“太棒了”;如果猜错了,则会显示“太高了”或“太低了”这样的提示信息,然后进入循环,直到猜对为止。
说明:使用rand()和srand()函数编程,这两个函数的原型在stdlib.h头文件中。
4.用梯形法求函数f(x)=1+x2在0到1上的定积分。
实验步骤与要求:
(1)编制一个函数sab(a,b,n)求函数f(x)在[a,b]上的定积分,其中n为区间[a,b]的等分数。
(2)编制一个主函数及计算被积函数值的函数f(x),在主函数中调用sab()函数计算并输出积分值。
说明:
用梯形法求f(x)在a,b区间的定积分,即求f(x)与x=a、x=b和y=0围成的区间的面积,将此区间分为n份,每一小份可以近似看成一个梯形,将所有梯形面积累加求和,得到球积分公式为:
s=h[f(a)+f(b)]/2+hf(a+kh),其中,h=(b-a)/n
5.用递归方法编写程序,求n阶勒让德多项式的值,递归公式为
实验步骤与要求:
(1)根据递归公式编制计算n阶勒让德多项式的递归函数p(n,x)
(2)编制一个主函数,由键盘输入n,x,调用函数p(n,x)计算n阶勒让德多项式的值。
(3)输入(n,x)=(4,2)运行该程序。然后自定义几组数据再运行该程序。
P(n,x)递归函数算法说明:
if (n==0) p=1
else if (n==1) p=x
else p=((2*n-1)*x*p(n-1,x)-(n-1)*p(n-2,x))/n
程序调试说明:
多模块的调试除了可以采用前面实验中采用的各种调试方法以外,还可以采用“回声打印”的调试方法。当函数之间要传递的数据较多时,容易出错。这时,在有关的输入数据之后加上输出语句,以便反映数据输入的情况。在函数之间有数据传递后,再用输出语句把传递后的数据输出,这样可以找到数据的错误处,以便分析原因,对于多函数程序,可以把这些函数存在不同的磁盘文件中分别进行编译,然后再连接、运行。如果编译有错时,可分别修改,这样便于调试。实验2和实验3也可以使用这样的调试方法。
【问题讨论】