沈阳 航空工 业学院
课程设计
学号2008040703027
班级
姓名原毅
指导教师王晓岩
2011 年 9 月 21 E)
目录
TOC \o "1-5" \h \z \o "Current Document" 一、需求分析1
\o "Current Document" 二、程序流程图2
\o "Current Document" 三、核心技术的实现说明及相应程序段4
四、课设总结6
\o "Current Document" 五、参考文献7
\o "Current Document" 六、源程序9
一、需求分析
经过对程序设计题目的分析可知,整个程序的设计实 现大致分为三个模块,其中每一个模块对应一个函数,它 们的功能分别是:输入a, b和n值的函数(Input),开始 计算的函数(Calculatebegin),退出的函数(exit)。其中,开 始计算函数(Calculatebegin)中又嵌套调用了累计梯形面积 的函数(fun),以实现求定积分f(2x2 +3x + l皿 的目的。
1、输入a, b和n值的函数 主耍实现程序最初运行时 数据的录入。a为积分下限,b为积分上限,n为积分段个 数。也就是说,将曲边梯形分成n个高相等的曲边梯形, 当n的数值足够大时,每个小曲边梯形可近似看成矩形, 将它们累加起來也就实现了积分的目的;
2、开始计算的函数按照题目的具体要求实现定积分
f(2,+3x + l)dx 的计算;
3、清屏清除前面计算以留下的算式和数值。
4、退出的函数根据需要终止程序的执行。
二、程序流程图
1、程序总体结构图(见图1)
输入n值
输入a,b,n值
的函数
Input ()
计算积分值
函数Cal()
函数exit()继续
图1程序总体结构图
2、具体功能框图
输入a, b和n值的函数Input ()(见图2)
当1时
输入a,b和n的值
图2输入a, b和n值的函数
(2)计算定积分的函数Calculatebegin ()(见图3)
当2时
当i
0=> sum
0 => i
2*pow(a+i*(b?a)/n,2)+3*pow(a+i*(b?a)/n,l)+l =>
m
sum+(b?a)/n*m => sum
Sum => fun()
fun(a,b,n) => c
输出:积分下限a) 积分上限b 积分段个数n 积分结果c
图3计算定积分的函数
清屏函数clear()
当3时
system(” cis”)清屏
退出的函数exit()(见图4)
当4时
exit(O)退出
图4退岀的函数
三、核心技术的实现说明及相应程序段
本程序主要由三个口定义函数和一个主函数组成,其
屮主函数以菜单的形式调用其他函数来实现要求的所有 功能。在这些函数当中,开始计算函数是程序中较为核心 的部分,下面对其进行说明。
开始计算
此题口要求用“累计梯形面积”法求定积分 ((2亍+3x + l)dx的值。我的设计思想是,将曲边梯形分 成n个高相等的曲边梯形,当n的数值足够大时,每个小 曲边梯形可近似看成矩形,将它们累加起来也就实现了积 分的目的。由于积分函数中包括幕次关系,所以用函数 2*pow(a+i*(b?a)/n,2)+3*pow(a+i*(b?a)/n,l)+l 实现,把它 看成矩形的高,i的值每加1高就改变到另一值,然后再 与宽(b-a)/n相乘便得到了每个矩形的面积,最后再用for 循环把这些矩形累加起来就得到了积分的结果。具体程序 段如下:
float Calculatebegin()
{
float c;
float fun(float a,float b,float n);
c=fun(a^b,n);
printf(tt??????????????>\nn);
printf(H积分下限是:%f\nM,a);
printf(M积分上限是:%f\nH,b);
printfC1积分段个数是:%f\nH,n);
printf(H积分结果是:%f\iT,c);
printf(tt??????????????>\nn);
float fun(float ajloat b Jloat n)
{
float sum3^m;
sum=0;
for(i=0;i
{
m=2*pow(a+i*(b-a)/n,2)+3*pow(a+i*(b-a)/n,l)+l; sum=sum+(b-a)/n*m;/*计算每个梯形的面积旬
}
return(sum);
!1!课设总结
!1!
课设总结
通过编写该程序,熟悉了 C语言的基本语法,选择, 循环等结构,深入练习了函数的调用方法,和文件的读写 方法,