From d1bb1836e192009391c8b8885118d073ea13275f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AE=89=E5=B3=BB=E9=82=91?= <2294450067@qq.com> Date: Mon, 11 May 2026 08:59:26 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B7=B2=E5=AE=9E=E7=8E=B0=E5=9F=BA=E6=9C=AC?= =?UTF-8?q?=E6=A0=87=E9=87=8F=E4=BC=98=E5=8C=96=EF=BC=8C=E5=AE=9E=E7=8E=B0?= =?UTF-8?q?=E9=83=A8=E5=88=86=E5=AF=84=E5=AD=98=E5=99=A8=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sylib/sylib.c | 98 +++++++++++++++++++++++++++++++++++++++++++++++++++ sylib/sylib.h | 4 +++ 2 files changed, 102 insertions(+) create mode 100644 sylib/sylib.c create mode 100644 sylib/sylib.h diff --git a/sylib/sylib.c b/sylib/sylib.c new file mode 100644 index 00000000..9eb7c75c --- /dev/null +++ b/sylib/sylib.c @@ -0,0 +1,98 @@ +// SysY 运行库实现: +// - 按实验/评测规范提供 I/O 等函数实现 +// - 与编译器生成的目标代码链接,支撑运行时行为 + +#include +#include +#include +#include + +// 输入函数 +int getint() { + int value; + scanf("%d", &value); + return value; +} + +int getch() { + char ch; + scanf("%c", &ch); + return (int)ch; +} + +float getfloat() { + float value; + scanf("%f", &value); + return value; +} + +int getarray(int arr[]) { + int n; + scanf("%d", &n); + for (int i = 0; i < n; i++) { + scanf("%d", &arr[i]); + } + return n; +} + +int getfarray(float arr[]) { + int n; + scanf("%d", &n); + for (int i = 0; i < n; i++) { + scanf("%f", &arr[i]); + } + return n; +} + +// 输出函数 +void putint(int value) { + printf("%d", value); +} + +void putch(int ch) { + printf("%c", (char)ch); +} + +void putfloat(float value) { + printf("%a", value); +} + +void putarray(int n, int arr[]) { + printf("%d:", n); + for (int i = 0; i < n; i++) { + printf(" %d", arr[i]); + } + printf("\n"); +} + +void putfarray(int n, float arr[]) { + printf("%d:", n); + for (int i = 0; i < n; i++) { + printf(" %a", arr[i]); + } + printf("\n"); +} + +// putstr 在测试用例中定义 + +// 计时函数 +static clock_t start_time = 0; + +void starttime() { + start_time = clock(); +} + +void stoptime() { + clock_t end_time = clock(); + double elapsed = (double)(end_time - start_time) / CLOCKS_PER_SEC; + fprintf(stderr, "Total time: %.6f seconds\n", elapsed); +} + +// 内存管理函数(如果需要) +void* _sysy_allocate(int size) { + return malloc(size); +} + +void _sysy_deallocate(void* ptr) { + free(ptr); +} diff --git a/sylib/sylib.h b/sylib/sylib.h new file mode 100644 index 00000000..502d488e --- /dev/null +++ b/sylib/sylib.h @@ -0,0 +1,4 @@ +// SysY 运行库头文件: +// - 声明运行库函数原型(供编译器生成 call 或链接阶段引用) +// - 与 sylib.c 配套,按规范逐步补齐声明 +