实验三-模块化程序设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验三模块化程序设计

【实验目的】

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也可以使用这样的调试方法。

【问题讨论】

相关文档
最新文档