资源描述:
《实验三 模块化程序设计.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验三模块化程序设计【实验目的】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)
2、(3.1)if(m%i==0)return0 (3.2)i=i+1 (4)return1#include#includeintisprime(intn){inti;doublek;i=2;k=sqrt(n);while(i<=k){if(n%i==0)return0;i++;}return1;}main(){inta;intt=1;printf("请输入一个整数");scanf("%d",&a);t=isprime(a);printf("%d",a);if(t==0)printf("不是素数");elseprintf("不是素
3、数");}2.编写函数Celsius返回华氏温度对应的摄氏温度,函数Fahrenheit返回摄氏温度对应的华氏温度。用这些函数编写程序,打印从0到100的所有摄氏温度及对应的华氏温度,32到212度的所有华氏温度及对应的摄氏温度。实验步骤与要求: (1)用整齐的表格形式输出。 (2)尽量减少输出行数,但要保持可读性。#includemain(){intfahr,celsius;intlower,upper;lower=0;upper=100;fahr=lower;while(fahr<=upper){celsius=5*(fahr-32)/9;pri
4、ntf("%dt%d",fahr,celsius);fahr++;};main();{intcelsius,fahr;intlower,upper;lower=32;upper=212;celsius=lower;while(celsius<=upper){fahr=9*celsius/5+32;printf("%dt%d",celsius,fahr);celsius++;}}}3.使用随机函数编写一个猜数字游戏程序。实验步骤与要求: 由程序随机生成一个1到1000的随机数,游戏者输入猜测值以后,如果正确,则显示“太棒了”;如果猜错了,则会显示“太高了”或“太低
5、了”这样的提示信息,然后进入循环,直到猜对为止。说明:使用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份,每一小份可以近似看成一个梯形,将所
6、有梯形面积累加求和,得到球积分公式为: s=h[f(a)+f(b)]/2+hf(a+kh),其中,h=(b-a)/n5.用递归方法编写程序,求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 elseif(n==1)p=x elsep=((2*n-1)*
7、x*p(n-1,x)-(n-1)*p(n-2,x))/n程序调试说明: 多模块的调试除了可以采用前面实验中采用的各种调试方法以外,还可以采用“回声打印”的调试方法。当函数之间要传递的数据较多时,容易出错。这时,在有关的输入数据之后加上输出语句,以便反映数据输入的情况。在函数之间有数据传递后,再用输出语句把传递后的数据输出,这样可以找到数据的错误处,以便分析原因,对于多函数程序,可以把这些函数存在不同的磁盘文件中分别进行编译,然后再连接、运行。如果编译有错时,可分别修改,这样便于调试。实验2和实验3也可