判断某个点与某条直线的关系Word文档格式.docx
《判断某个点与某条直线的关系Word文档格式.docx》由会员分享,可在线阅读,更多相关《判断某个点与某条直线的关系Word文档格式.docx(13页珍藏版)》请在冰点文库上搜索。
课程设计说明书:
✧课程结束后,上交课程设计说明书和源程序。
课程设计说明书的内容参见提供的模板。
四、指导教师和学生签字
指导教师:
学生签名:
五、成绩
六、教师评语
一、需求分析1
二、程序流程图2
三、核心技术的实现说明及相应程序段8
四、个人总结10
五、参考文献11
六、完整源程序11
一、需求分析
经过对程序设计题目的分析可知,整个程序的设计实现大致分为三个模块,其中每一个模块对应一个函数,他们的功能分别是:
调用子函数,判断两数是否相等,带入预设函数判断点与直线关系。
在这些函数当中,前三个函数的实现严格按照题目的要求,而后面的清屏函数属于附加功能。
1、调用子函数通过switch来调用四个子函数;
2、判断两数是否相等用if函数判断所输入的两点是否能组成直线;
3、带入预设函数判断点与直线关系将待判断点带入预设函数,通过if判断此点是否在之前输入的两点所组成的直线上;
除上面介绍的功能之外,程序还具有退出功能,可以在程序的一次运行当中循环执行所有的功能,并根据需要终止程序的执行。
二、程序流程图
1、程序总体结构图
图1程序总体结构图
N
Y
Y
图2子函数工作细则
2、调用子函数
(1)主函数调用子函数
(2)判断两数是否相等
(3)带入预设函数判断点与直线关系
三、核心技术的实现说明及相应程序段
本程序主要由四个自定义函数和一个主函数组成,其中主函数以菜单的形式调用其他函数来实现要求的所有功能。
在这些函数当中,主函数调用子函数,判断所输入点是否能形成直线,判断点与直线关系是程序的重点,下面分别进行说明。
1、主函数调用子函数
通过while
(1)的真循环来进行switch的子函数调用,通过屏幕提示,来选择要进行的步骤,输入代码,通过switch……case……函数,来调用想运行的子函数。
直到当输入代码5时,想退出,函数通过return跳出while循环,函数运行结束。
voidmain()
{
charchoice;
menu();
choice=getch();
while
(1)
{
switch(choice)
{
case'
1'
:
m();
break;
2'
n();
3'
p();
4'
q();
5'
return;
}
}
}
2、判断两数是否相等
当调用子函数m时,进行输入两点坐标,并判断所输入的两点是否能构成直线,若不能,则重新输入,若能,则继续进行下一步骤。
子函数m通过do……while……语句来进行循环,在循环体中,用if函数进行判别,若x1==x2&
&
y1==y2成立,则显示“重新输入字样”,while判断为真,继续进行循环,直到x1==x2&
y1==y2值为0时,跳出,执行下一步骤。
voidm()
puts("
输入决定直线的2个坐标对:
"
);
do
scanf("
%f%f%f%f"
&
x1,&
y1,&
x2,&
y2);
if(x1==x2&
y1==y2)
puts("
以上2个坐标对无法决定1条直线,请重新输入2个不相同的坐标对:
while(x1==x2&
y1==y2);
3、带入预设函数判断点与直线关系
当调用子函数p时,将输入的待判断点带入之前的两点所组成的直线中,判断是否在该直线上。
通过事先编译a=(y1-y2)/(x1-x2);
b=(x1*y2-x2*y1)/(x1-x2);
计算出直线方程的a与b,再用if函数来判断点是否在直线上。
当a*x0+b==y0值为1时,显示“此直线通过这个点”当其值为0时,显示“此直线不通过这个点”
voidp()
floata,b;
a=(y1-y2)/(x1-x2);
b=(x1*y2-x2*y1)/(x1-x2);
if(a*x0+b==y0)
puts("
此直线通过这个点\n"
elseputs("
此直线不通过这个点\n"
四、个人总结
一周的C语言课程设计结束了,在这短短的一周时间里,不仅复习了上学期C语言中的一些知识点,而且还学到了新的知识,所以我认为自己在此次课程设计中有了很大的收获与体会。
我想这次课设的收获不仅仅是完成了题目要求,更多的是通过此次学习掌握了分析问题、解决问题的方法。
本程序重点在于算法,通过此次课程设计我较熟练地掌握了如何将数学算法的表达准确的用C语句实现,我想,这为今后的学习及专业课的课程设计打下了良好的基础。
本次程序完全实现了题目中的要求,输入数据,开始计算,清屏,退出等功能。
总之,要把学到的课本上的知识运用到实际中,实现其更高的价值。
五、参考文献
1谭浩强.C程序设计.北京:
清华大学出版社,2005。
2刘成,C语言程序设计实验指导与习题集,北京。
六、完整源程序
#include"
stdio.h"
conio.h"
//其中定义了getch()函数。
stdlib.h"
//其中定义了system()函数。
floatx1=0,x2=0,x0=0,y1=0,y2=0,y0=0;
voidmenu()
{
请选择您要进行的工作的序号,然后进行输入:
(123项请按顺序执行)"
1请输入决定直线的2个坐标对:
2请输入任意1个待判断的坐标对:
3判断2者关系"
4清屏"
5退出"
y1==y2)/*判断两点是否能组成直线*/
/*当条件值为1时继续循环,值为0时跳出*/
voidn()
输入1个待判断的坐标对:
scanf("
%f%f"
x0,&
y0);
/*计算出直线的ab值*/
if(a*x0+b==y0)/*判断点是否在直线上,值为1时在。
值为0时不在*/
voidq()
system("
cls"
/*清屏*/
switch(choice)/*通过switch选择要进行的步骤*/