#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>

#define WIDTH 80
#define HEIGHT 40

// 数据结构表示一个点
typedef struct {
    int x;
    int y;
    bool flag;
} Point;

// 初始化点集
void initializePoints(Point* points, int size) {
    memset(points, 0, sizeof(Point) * size);
}

// 添加一个点
void addPoint(Point* points, int x, int y, bool flag) {
    int i = 0;
    while (points[i].flag && i < HEIGHT * WIDTH) {
        i++;
    }
    if (i < HEIGHT * WIDTH) {
        points[i].x = x;
        points[i].y = y;
        points[i].flag = flag;
    }
}

// 根据点集绘制二维图
void drawGraph(Point* points, int size) {
    char graph[HEIGHT][WIDTH];
    memset(graph, ' ', sizeof(graph));

    for (int i = 0; i < size; i++) {
        if (points[i].flag) {
            int x = points[i].x + WIDTH / 2;
            int y = HEIGHT / 2 - points[i].y;
            if (x >= 0 && x < WIDTH && y >= 0 && y < HEIGHT) {
                graph[y][x] = 'o';
            }
        }
    }

    for (int i = 0; i < WIDTH + 2; i++) {
        printf('-');
    }
    printf('
');

    for (int i = 0; i < HEIGHT; i++) {
        printf('|');
        for (int j = 0; j < WIDTH; j++) {
            printf('%c', graph[i][j]);
        }
        printf('|\n');
    }

    for (int i = 0; i < WIDTH + 2; i++) {
        printf('-');
    }
    printf('
');
}

int main() {
    Point points[27]; // 存储27个点的数组
    initializePoints(points, 27); // 初始化点集

    // 添加27个点的坐标信息
    addPoint(points, -1080, 855, true);
    addPoint(points, -780, 955, true);
    addPoint(points, -1030, 425, true);
    addPoint(points, -1185, -120, true);
    addPoint(points, -300, 650, true);
    addPoint(points, -335, 120, true);
    addPoint(points, -140, -325, true);
    addPoint(points, 115, 545, true);
    addPoint(points, -460, -432, true);
    addPoint(points, 410, -220, true);
    addPoint(points, 230, -730, true);
    addPoint(points, 665, -495, true);
    addPoint(points, 1210, -560, true);
    addPoint(points, 980, -870, true);
    addPoint(points, 1080, -170, true);
    addPoint(points, 1355, -35, true);
    addPoint(points, 805, -135, true);
    addPoint(points, 1340, 1010, true);
    addPoint(points, 1100, 715, true);
    addPoint(points, 1530, 490, true);
    addPoint(points, 1415, 235, true);
    addPoint(points, 990, -385, true);
    addPoint(points, 690, 265, true);
    addPoint(points, 1045, 250, true);
    addPoint(points, 1535, -390, true);
    addPoint(points, 245, 175, true);
    addPoint(points, -250, -800, true);

    drawGraph(points, 27); // 绘制二维图

    return 0;
}
C语言实现二维平面散点图绘制

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

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