資源描述:
《判斷某個(gè)點(diǎn)與某條直線的關(guān)系》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、課程設(shè)計(jì)任務(wù)書題目:判斷某個(gè)點(diǎn)與某條直線的關(guān)系一、課程設(shè)計(jì)時(shí)間20。二、課程設(shè)計(jì)內(nèi)容用C語言編寫軟件完成以下任務(wù):一條直線要么通過某個(gè)點(diǎn),要么不通過。用C語言寫程序,功能如下:從鍵盤先輸入1條直線的2個(gè)坐標(biāo)對(duì),然后再輸入任意1個(gè)坐標(biāo)對(duì),最后判斷2者的關(guān)系,并給予適當(dāng)?shù)年P(guān)系評(píng)價(jià)。三、課程設(shè)計(jì)要求程序質(zhì)量:2貫徹結(jié)構(gòu)化的程序設(shè)計(jì)思想。2至少有“輸入決定直線的2個(gè)坐標(biāo)對(duì)”、“輸入任意1個(gè)坐標(biāo)對(duì)”、“判斷2者關(guān)系”、“退出”四個(gè)菜單。2用戶界面友好,功能明確,操作方便。2代碼應(yīng)適當(dāng)縮進(jìn),并給出必要的注釋,以增強(qiáng)程序的可讀性。2代碼應(yīng)適當(dāng)縮進(jìn),并給出必要的注釋,以增強(qiáng)程序的可讀性。課程設(shè)計(jì)說明書
2、:2課程結(jié)束后,上交課程設(shè)計(jì)說明書和源程序。課程設(shè)計(jì)說明書的內(nèi)容參見提供的模板。四、指導(dǎo)教師和學(xué)生簽字指導(dǎo)教師:學(xué)生簽名:五、成績(jī)六、教師評(píng)語目錄一、需求分析1二、程序流程圖2三、核心技術(shù)的實(shí)現(xiàn)說明及相應(yīng)程序段8四、個(gè)人總結(jié)10五、參考文獻(xiàn)11六、完整源程序1113一、需求分析經(jīng)過對(duì)程序設(shè)計(jì)題目的分析可知,整個(gè)程序的設(shè)計(jì)實(shí)現(xiàn)大致分為三個(gè)模塊,其中每一個(gè)模塊對(duì)應(yīng)一個(gè)函數(shù),他們的功能分別是:調(diào)用子函數(shù),判斷兩數(shù)是否相等,帶入預(yù)設(shè)函數(shù)判斷點(diǎn)與直線關(guān)系。在這些函數(shù)當(dāng)中,前三個(gè)函數(shù)的實(shí)現(xiàn)嚴(yán)格按照題目的要求,而后面的清屏函數(shù)屬于附加功能。1、調(diào)用子函數(shù)通過switch來調(diào)用四個(gè)子函數(shù);2、判斷兩數(shù)
3、是否相等用if函數(shù)判斷所輸入的兩點(diǎn)是否能組成直線;3、帶入預(yù)設(shè)函數(shù)判斷點(diǎn)與直線關(guān)系將待判斷點(diǎn)帶入預(yù)設(shè)函數(shù),通過if判斷此點(diǎn)是否在之前輸入的兩點(diǎn)所組成的直線上;除上面介紹的功能之外,程序還具有退出功能,可以在程序的一次運(yùn)行當(dāng)中循環(huán)執(zhí)行所有的功能,并根據(jù)需要終止程序的執(zhí)行。13二、程序流程圖開始1、程序總體結(jié)構(gòu)圖菜單Switch選擇退出清屏判斷點(diǎn)直線關(guān)系輸入待判斷點(diǎn)輸入組成直線的兩點(diǎn)圖1程序總體結(jié)構(gòu)圖子函數(shù)(輸入組成直線的兩點(diǎn))13子函數(shù)(輸入組成直線的兩點(diǎn))輸入兩點(diǎn)坐標(biāo)x1y1,x2y2X1==x2&&y1==y2NY所輸入點(diǎn)不能組成直線子函數(shù)(輸入待判斷點(diǎn))13輸入待確定點(diǎn)子函數(shù)(判斷
4、點(diǎn)與直線關(guān)系)a=(y1-y2)/(x1-x2)b=(x1*y2-x2*y1)/(x1-x2)y0=a*x0+bNY此直線通過這個(gè)點(diǎn)此直線不通過這個(gè)點(diǎn)主函數(shù)圖2子函數(shù)工作細(xì)則132、調(diào)用子函數(shù)(1)主函數(shù)調(diào)用子函數(shù)開始菜單Switch選擇退出清屏判斷點(diǎn)直線關(guān)系輸入待判斷點(diǎn)輸入組成直線的兩點(diǎn)子函數(shù)(輸入組成直線的兩點(diǎn))(2)判斷兩數(shù)是否相等13輸入兩點(diǎn)坐標(biāo)x1y1,x2y2X1==x2&&y1==y2NY所輸入點(diǎn)不能組成直線子函數(shù)(輸入待判斷點(diǎn))(3)帶入預(yù)設(shè)函數(shù)判斷點(diǎn)與直線關(guān)系子函數(shù)(判斷點(diǎn)與直線關(guān)系)13a=(y1-y2)/(x1-x2)b=(x1*y2-x2*y1)/(x1-x2)
5、y0=a*x0+bNY此直線通過這個(gè)點(diǎn)此直線不通過這個(gè)點(diǎn)主函數(shù)三、核心技術(shù)的實(shí)現(xiàn)說明及相應(yīng)程序段本程序主要由四13個(gè)自定義函數(shù)和一個(gè)主函數(shù)組成,其中主函數(shù)以菜單的形式調(diào)用其他函數(shù)來實(shí)現(xiàn)要求的所有功能。在這些函數(shù)當(dāng)中,主函數(shù)調(diào)用子函數(shù),判斷所輸入點(diǎn)是否能形成直線,判斷點(diǎn)與直線關(guān)系是程序的重點(diǎn),下面分別進(jìn)行說明。1、主函數(shù)調(diào)用子函數(shù)通過while(1)的真循環(huán)來進(jìn)行switch的子函數(shù)調(diào)用,通過屏幕提示,來選擇要進(jìn)行的步驟,輸入代碼,通過switch……case……函數(shù),來調(diào)用想運(yùn)行的子函數(shù)。直到當(dāng)輸入代碼5時(shí),想退出,函數(shù)通過return跳出while循環(huán),函數(shù)運(yùn)行結(jié)束。voidmain
6、(){charchoice;menu();choice=getch();while(1){switch(choice){case'1':m();break;case'2':n();break;case'3':p();break;case'4':q();break;case'5':return;}13choice=getch();}}2、判斷兩數(shù)是否相等當(dāng)調(diào)用子函數(shù)m時(shí),進(jìn)行輸入兩點(diǎn)坐標(biāo),并判斷所輸入的兩點(diǎn)是否能構(gòu)成直線,若不能,則重新輸入,若能,則繼續(xù)進(jìn)行下一步驟。子函數(shù)m通過do……while……語句來進(jìn)行循環(huán),在循環(huán)體中,用if函數(shù)進(jìn)行判別,若x1==x2&&y1==y2成立,則顯
7、示“重新輸入字樣”,while判斷為真,繼續(xù)進(jìn)行循環(huán),直到x1==x2&&y1==y2值為0時(shí),跳出,執(zhí)行下一步驟。voidm(){puts("輸入決定直線的2個(gè)坐標(biāo)對(duì):");do{scanf("%f%f%f%f",&x1,&y1,&x2,&y2);if(x1==x2&&y1==y2)puts("以上2個(gè)坐標(biāo)對(duì)無法決定1條直線,請(qǐng)重新輸入2個(gè)不相同的坐標(biāo)對(duì):");}while(x1==x2&&y1==y2);}3、帶入預(yù)設(shè)函數(shù)判斷點(diǎn)與直線關(guān)系當(dāng)