‘壹’ 如何用c语言判断四边形四个点的位置
以不规则四边形为例,我说下思路吧~ 坐标系 x右为大.y上为大
定义2个数组a[4] = {x1,...}; b[4] = {y1...};
各对数组a和b内的元素进行排序,得到2个大小关系的式子.
将 x1 和 y1 的名次相加,后面也是如此,对这4个值进行排序, 最小的为左下角的坐标
其余3个点,x的值最小为左上角的坐标
剩余2个点的y值,小的为右下角的坐标,大的为右上角的坐标
‘贰’ C语言编‘写用二维数组判断五个坐标是否在同一直线上’
#include<stdio.h>
intmain()
{
floatpoint[5][2]={{2,3},{3,4},{5,5},{6,5},{8,5}};
floatk;
k=(point[0][1]-point[1][1])/(point[0][0]-point[1][0]);
for(i=2;i<5;i++)
{
ki=(point[0][1]-point[i][1])/(point[0][0]-point[i][0]);
if(ki!==k)
{
printf("这5个点不在同一直线上 ");
break;
}
}
if(i>=5)printf("这5个点在同一直线上 ");
return0;
}
解题思路:求两点(a和b)连线的斜率为(ya-yb)/(xa-xb),因此先用前两个点计算一个斜率k,然后分别计算第1个点和剩下3个点的连线斜率ki,如果ki==k,表示它们在同一条直线上,否则就不在同一条直线上
‘叁’ 用C语言编‘写用二维数组判断五个坐标是否在同一直线上’
#include<stdio.h>
intmain()
{
floatpoint[5][2]={{0,0},{3,3},{5,5},{6,6},{8,8}};
floatk;
inti;
floatki;
k=(point[0][1]-point[1][1])/(point[0][0]-point[1][0]);
for(i=2;i<5;i++)
{
ki=(point[0][1]-point[i][1])/(point[0][0]-point[i][0]);
if(ki!=k)
{
printf("这5个点不在同一直线上
");
break;
}
}
if(i>=5)printf("这5个点在同一直线上
");
return0;
}
我是雷锋!!!!!
‘肆’ C语言怎么判断4个坐标坐标是否构成矩形
代码:
#include <stdio.h>
typedef struct {
double x;
double y;
}point;
int is_rectangle(point a,point b,point c,point d){
int ab_y = a.y - b.y;
int ab_x = a.x - b.x;
int cd_y = c.y - d.y;
int cd_x = c.x - d.x;
// 首先判断ab是否平行于cd
if (ab_x == 0 || cd_x == 0){
if(ab_x != cd_x){
return 0;
}
}else{
if(ab_y/ab_x != cd_y/cd_x){
return 0;
}
}
// 再判断ab是否等于cd
if(ab_y*ab_y + ab_x*ab_x != cd_y*cd_y + cd_x*cd_x){
return 0;
}
// 然后判断ab是否垂直于ac
int ac_y = a.y - c.y;
int ac_x = a.x - c.x;
if(ab_x == 0 ){
if(ac_y != 0)
return 0;
}else if(ac_x == 0){
if(ab_y != 0)
return 0;
}else if((ac_y/ac_x)*(ab_y/ab_x) != -1){
return 0;
}
return 1;
}
int main(){
printf("输入4个坐标值: ");
point a,b,c,d;
scanf("%lf %lf",&a.x,&a.y);
scanf("%lf %lf",&b.x,&b.y);
scanf("%lf %lf",&c.x,&c.y);
scanf("%lf %lf",&d.x,&d.y);
if(is_rectangle(a,b,c,d)){
printf("能构成矩形 ");
}else{
printf("无法构成矩形 ");
}
return 0;
}
运行结果:
‘伍’ C语言 判断点在第几象限
#include <stdio.h>
int main()
{ int x,y;
scanf("%d%d",&x,&y); //输入(x,y)点
if(x>0&&y>0) printf("第一象限");
if(x>0&&y<0) printf("第四象限");
if(x<0&&y>0) printf("第二象限");
if(x<0&&y<0) printf("第三象限");
}
‘陆’ c语言,,,有一半径为15的圆,圆心坐标为(0,0)从键盘任意输入一个坐标(a,b)判断这个坐标在
#include<stdio.h>
intmain(){
floatx=0,y=0,temp=0;
scanf("%f%f",&x,&y);
temp=x*x+y*y;
if(temp==15.0*15.0)
printf("点在圆上 ");
elseif(temp>15.0*15.0)
printf("点在圆外 ");
else
printf("点在圆内 ");
return0;
}
‘柒’ 用C语言说下如何快速在一个表中确认这些数字的坐标的思路
用2维数组,比如:a[9][7]; //9行7列
将表中的值作为它的元素,然后你进行比较,如果你输入的数字(例如10)等于表中的某个数,就输出它的下标i,j;比如10的下标应该为(4,1)
‘捌’ C语言推箱子:如何记录目的地坐标并判断胜利
不用指针,那你就建个数组用来存,目的地坐标,如果目的地数目一样的话,数组大小就确定了,每副图目的地数目不一样的话,那你就以最大个数为准。再用一个变量存目的地数目。
b[N][2]
这样你在判断目的在哪时,就不用m,n ,把坐标存入 b[k][0] b[k][1]中
后面 a[b[0][0]][b[0][1]]!='@'&&a[b[1][0]][b[1][1]]!='@'&&..这样来判断。
也可以在前面用个循环来判断。
第二种方法,定义一个变量k 在你把 a[x][x]的'+'变为 '@'时 k++ a[x][x]的'@'变为 '+'时 k--
当k等于目的数时就结束。
‘玖’ c语言中判断坐标的题
#includeintmain(){intx,y;scanf("%d%d",&x,&y);//输入(x,y)点if(x>0&&y>0)printf("第一象限");if(x>0&&y