南京邮电大学通达学院c语言实验报告,南京邮电大学通达学院c语言程序报告.docx...

南京邮电大学通达学院c语言程序报告

南京邮电大学通达学院程序设计(上机)报告

题 目: R015M P008E

专 业 学 生 姓 名 班 级 学 号 指 导 教 师 日 期 2015年5月

评 分 细 则评分项优秀良好中等及格不及格遵守机房规章制度上机表现学习态度基础知识水平程序设计能力课题功能实现情况算法设计合理性用户界面友好性报告书写认真程度报告内容完整性文字表达清楚程度问题回答准确性评 分 等 级教师签名:年月日备 注实验一 R015M判断点与多边形位置关系问题一、问题描述:课题要求及总体功能描述课题要求:给定n个点的坐标,这n个点依次围成一闭合多边形,再给一点(x,y),判断它是否在多边形中。总体功能描述:首先随机输入一个大于2小于1000的整数n利用循环结构产生n个坐标输入需要判断的坐标(x,y)利用判断语句与之前产生的n个坐标进行依次比较得出判断结果二、课题分析:分析解决问题的思路,描述功能模块分解及每个模块的输入,输出和功能通过仔细分析问题,首先发现以下几个问题:如何随机产生n个坐标?如何将确定的坐标(x,y)与产生的n个坐标进行比较?总结:发现本问题着重对循环结构、判断语句、输入输出语句有很高的要求。本问题可以分解为4个功能模块:利用循环语言,定义一个1000行2列的数组,每一行看成一个坐标点,在1000内输入一个n值,再输入n个坐标点,找出这些点x坐标的最大值和最小值,y坐标的最大值和最小值模块一:n个坐标产生

输入确定的坐标(x,y)

模块二:输入目的坐标

利用判断语言,将目的坐标(x,y)坐标与n个坐标进行比较判断,判断是否在多边形内。

模块三:判断模块

通过对坐标的判断得出结果

模块四:得出判断结果

三、算法描述:自然语言自然语言(其中S1,S2,S3…为算法步骤);S1输入一个大于2小于1000的整数n;S2输入n个坐标点;S3如果前一个坐标x值大于后一个,则max1=前一个x值,否则max1=后一个x值;S4如果前一个坐标x值小于后一个,则min1=前一个x值,否则min1=后一个x值;S5如果前一个坐标y值大于后一个,则max2=前一个y值,否则max2=后一个y值;S6如果前一个坐标y值大于后一个,则min2=前一个y值,否则min2=后一个y值;S7输入需要判断的坐标x,y;S8如果xmax1||ymax2,则在多边形外,否则,在多边形内;

四、源程序:重要的代码及其说明#includevoid main(){int n,i,j;float x,y,a[1000][2],min1,max1,min2,max2;printf("请输入一个大于2小于1000的整数:\n");scanf("%d",&n);printf("请输入%d个坐标点\n",n);for(i=0;i=a[i-1][0]) max1=a[i][0]; else max1=a[i-1][0]; if(a[i][0]<=a[i-1][0]) min1=a[i][0]; else min1=a[i-1][0];}max2=a[0][1];min2=a[0][1];for(i=0;i<=n;i++){if(a[i][1]>=a[i-1][1]) max2=a[i][1]; else max2=a[i-1][1]; if(a[i][1]<=a[i-1][1]) min2=a[i][1]; else min2=a[i-1][1];}printf("请输入(x,y)坐标:\n");scanf("%f%f",&x,&y);if(xmax1||ymax2) printf("Not in the

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值