C语言编程:帮助哈士奇找到正方形饼干

双十一到了,哈士奇买了很多饼干,因为他想吃胖。但是哈士奇只吃正方形的饼干。你来帮哈士奇找饼干吧!

现在告诉你4个点的坐标,问你能否以这4个点为顶点组成一个正方形。如果可以输出'yes',否则输出'no';

因为哈士奇的数学不怎么好,所以希望你可以帮助他吃到喜欢的饼干;

输入

输入格式: 输入数据有多组,输入8个整数,为4个点的坐标ax,ay,bx,by,cx,cy,dx,dy.(每个数字的绝对值都小于100),输入保证没有4个点相同的情况;

输出格式: 如果可以组成正方形输出yes,否则输出no。

输入样例:

0 0 1 0 0 1 1 1
1 2 2 3 4 5 5 6

输出样例:

yes
no

以下是使用C语言编写的解决方案:

#include <stdio.h>
#include <math.h>

int checkSquare(int ax, int ay, int bx, int by, int cx, int cy, int dx, int dy) {
    int d1 = (ax - bx) * (ax - bx) + (ay - by) * (ay - by); // 计算ab边的平方长度
    int d2 = (ax - cx) * (ax - cx) + (ay - cy) * (ay - cy); // 计算ac边的平方长度
    int d3 = (ax - dx) * (ax - dx) + (ay - dy) * (ay - dy); // 计算ad边的平方长度
    
    // 判断是否是正方形
    if (d1 == d2 && 2 * d1 == d3 && 2 * (bx - dx) * (bx - dx) == d1) {
        return 1;
    }
    
    return 0;
}

int main() {
    int ax, ay, bx, by, cx, cy, dx, dy;
    
    while (scanf("%d %d %d %d %d %d %d %d", &ax, &ay, &bx, &by, &cx, &cy, &dx, &dy) != EOF) {
        int result = checkSquare(ax, ay, bx, by, cx, cy, dx, dy);
        
        if (result == 1) {
            printf("yes\n");
        } else {
            printf("no\n");
        }
    }
    
    return 0;
}

解释:

  • 首先,定义一个函数checkSquare,用于检查给定的4个点是否可以组成一个正方形。函数的参数为4个点的坐标(ax, ay, bx, by, cx, cy, dx, dy)。
  • 在函数中,首先计算4个边的平方长度:d1为ab边的平方长度,d2为ac边的平方长度,d3为ad边的平方长度。
  • 判断是否可以组成正方形的条件是:d1等于d2,d3等于2 * d1,且2 * (bx - dx) * (bx - dx)等于d1。
  • 如果满足上述条件,返回1;否则,返回0。
  • main函数中,使用scanf函数读取8个整数,为4个点的坐标。
  • 调用checkSquare函数检查给定的4个点是否可以组成一个正方形。
  • 如果可以组成正方形,输出'yes';否则,输出'no'。
  • 注意:在示例代码中,我们假设输入的4个点的坐标没有相同的情况,并且每个坐标的绝对值都小于100。您可以根据实际情况进行调整。
C语言编程:帮助哈士奇找到正方形饼干

原文地址: https://www.cveoy.top/t/topic/bUiV 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录