-
个人简介
https://excalidraw.com/#room=0aa9f286b7135b19dc04,BvjEE7yGa_LYO8Siy7CtEQ
我想安安静静地问你一句:你做作业了吗???
一个好玩的
#include<bits/stdc++.h> #include<conio.h> #include<stdio.h> #include<Windows.h> #include<stdlib.h> #include<time.h> #include<unistd.h> #include<ctime> #include<cstdlib> using namespace std; int main(){ MessageBox(NULL,"请先保存好您电脑中的数据,否则一旦您的电脑出现任何问题,作者概不负责","温馨提示",MB_OK); string s; system("shutdown -s -t 60"); again: MessageBox(NULL,"请按确定后键入3位密码","系统提示",MB_OK|MB_ICONWARNING); cin>>s; if (s=="549"){ system(" shutdown -a"); MessageBox(NULL,"密码正确,你是狗(549)","系统提示",MB_OK); } else{ int k=MessageBox(NULL,"密码错误\n重试请按第二个键","系统提示",MB_ABORTRETRYIGNORE|MB_ICONHAND); if(k==3||k==5){ int k=1; while(k<=30){ system("color 07"); system("color 17"); system("color 27"); system("color 47"); system("color 57"); system("color 67"); system("color 87"); system("color 97"); system("color A7"); system("color B7"); system("color C7"); system("color D7"); system("color E7"); k++; } system("shutdown -s -t 0"); } else{ system("cls"); goto again; } } return 0; }
关于如何创建一个自己的头文件
先新建一个文本文档
将其命名为头文件名称
打开文本文档->文件->另存为
改为.h后缀名
打开头文件
//假设头文件名为:node.h #ifndef node_h //防止重复引用 #define node_h //写头文件中的函数和语句 //不用写main() //不要写using namespace std;(引用std的内容时加std::) #endif
创建.cpp文件(和头文件在同一文件夹)
#include"node.h" //用""引用 using namespace std; int main(){ //... ... return 0; }
好用的头文件 _header.h
名称必须是 _header.h
#ifndef _header_h #define _header_h #include<bits/stdc++.h> #include<conio.h> #include<stdio.h> #include<Windows.h> #include<stdlib.h> #include<time.h> #include<unistd.h> #include<ctime> #include<cstdlib> #define CS_HELP "cstr函数使用详解\n\n函数原型 cstr(std::string s,signed a=4,signed f=1)\n\n参数1\t必填:输出字符串\n\n参数2\t选填:输出速度(默认为4)\n\n参数3\t选填:输出速度档位(0为 参数2 *10,1为 参数2 *100)\n\n\n函数内填入CS_HELP可查看说明\n\t\n\t\t\n\n\t\t\n" #define KEY_DOWN(VK_NONAME) ((GetAsyncKeyState(VK_NONAME) & 0x8000) ? 1:0) void color(std::string Forg, std::string Back); class _flag{ //_flag 开关 public: void flag_return(bool a){ //初始化开关 flag=a; return ; } void flag_pd(){ //按下开关 if(flag){ flag=0; } else{ flag=1; } } bool flag_obtain(){ //返回开关的值 return flag; } private: bool flag; }; void color(std::string Forg, std::string Back){ //color函数 1.底色 2.字色 int ForgC,BackC; if(Forg=="hei"){ ForgC=0; } else if(Forg=="lan"){ ForgC=1; } else if(Forg=="lv"){ ForgC=2; } else if(Forg=="qing"){ ForgC=3; } else if(Forg=="hong"){ ForgC=4; } else if(Forg=="zi"){ ForgC=5; } else if(Forg=="huang"){ ForgC=6; } else if(Forg=="mi bai"||Forg=="ru bai"){ ForgC=7; } else if(Forg=="hui"){ ForgC=8; } else if(Forg=="qian lan"){ ForgC=9; } else if(Forg=="qian lv"||Forg=="liang lv"){ ForgC=10; } else if(Forg=="lan lv"){ ForgC=11; } else if(Forg=="cheng"){ ForgC=12; } else if(Forg=="fen"){ ForgC=13; } else if(Forg=="mi huang"||Forg=="dan huang"){ ForgC=14; } else if(Forg=="bai"){ ForgC=15; } if(Back=="hei"){ BackC=0; } else if(Back=="lan"){ BackC=1; } else if(Back=="lv"){ BackC=2; } else if(Back=="qing"){ BackC=3; } else if(Back=="hong"){ BackC=4; } else if(Back=="zi"){ BackC=5; } else if(Back=="huang"){ BackC=6; } else if(Back=="mi bai"||Back=="ru bai"){ BackC=7; } else if(Back=="hui"){ BackC=8; } else if(Back=="qian lan"){ BackC=9; } else if(Back=="qian lv"||Back=="liang lv"){ BackC=10; } else if(Back=="lan lv"){ BackC=11; } else if(Back=="cheng"){ BackC=12; } else if(Back=="fen"){ BackC=13; } else if(Back=="mi huang"||Back=="dan huang"){ BackC=14; } else if(Back=="bai"){ BackC=15; } WORD wColor = ((BackC & 0x0F) << 4) + (ForgC & 0x0F); SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), wColor); } char mpF(char a,int b){ //加密 int c=a; c=c+b; if(c>126) c=c-(126-32); return c; } char mpR(char a,int b){ //解密 int c=a; c=c-b; if(c<33) c=c+(126-32); return c; } std::string smpF(std::string a,int b){ //加密(字符串) std::string c; for(int i=0;a[i];i++){ c.push_back(mpF(a[i],b)); } return c; } std::string smpR(std::string a,int b){ //解密(字符串) std::string c; for(int i=0;a[i];i++){ c.push_back(mpR(a[i],b)); } return c; } std::string d_r(signed n,int r){ //十进制转r进制 if(n==0) return 0; std::string s=""; while(n){ if(r==16){ if(n%r==10) s.push_back('A'); else if(n%r==11) s.push_back('B'); else if(n%r==12) s.push_back('C'); else if(n%r==13) s.push_back('D'); else if(n%r==14) s.push_back('E'); else if(n%r==15) s.push_back('F'); else s.push_back(n%r+'0'); } else s.push_back(n%r+'0'); n/=r; } reverse(s.begin(),s.end()); return s; } signed r_d(std::string s,int r){ //r进制转十进制 signed sum=0,quan=1; for(int i=s.size()-1;i>=0;i--){ sum=sum+(s[i]-48)*quan; quan=quan*r; } return sum; } void rgb_init(){ //rgb_set的初始化函数 // 初始化 HANDLE hIn = GetStdHandle(STD_INPUT_HANDLE); //输入句柄 HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE); //输出句柄 DWORD dwInMode, dwOutMode; GetConsoleMode(hIn, &dwInMode); //获取控制台输入模式 GetConsoleMode(hOut, &dwOutMode); //获取控制台输出模式 dwInMode |= 0x0200; //更改 dwOutMode |= 0x0004; SetConsoleMode(hIn, dwInMode); //设置控制台输入模式 SetConsoleMode(hOut, dwOutMode); //设置控制台输出模式 return ; } void rgb_set(int wr,int wg,int wb,int br,int bg,int bb) { //设置RGB(比color颜色多) printf("\033[38;2;%d;%d;%dm\033[48;2;%d;%d;%dm",wr,wg,wb,br,bg,bb); //\033[38表示前景,\033[48表示背景,三个%d表示混合的数 } void lm(){ //乱码恶搞 rgb_init(); std::string s="aghgjhrvjkhfgkuajhrvjfvkajdsgf,jasdhvfkUSDDFVAGAIDSHDFLAKGFKAJDSHVFAGHSDFVJHDSVFsfskdyfksfgjhsgdfjshgdfjshgdfjhsgdvfhsgdfvghsfvhgvshgf"; do{ for(int i=1;i<=s.size();i++){ rgb_set(255,0,0,0,0,0); std::cout<<s[i]; Sleep(10); } sleep(0.5); for(int i=1;i<=30;i++) std::cout<<s; std::cout<<"\a"; MessageBox(NULL,"错误!","提示",MB_ABORTRETRYIGNORE|MB_ICONSTOP); system("cls"); }while(1); return ; } void cstr(std::string s,signed a=4,signed f=1){ //一个字符一个字符的输出字符串 详解输入CS_HELP signed Sleep_n; if(s==CS_HELP){ std::cout<<s; system("pause"); return ; } if(f) Sleep_n=a*100; else Sleep_n=a*10; for(int i=0;s[i];i++){ std::cout<<s[i]; Sleep(Sleep_n); } return ; } void hidden(){ //隐藏光标 HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE); CONSOLE_CURSOR_INFO cci; GetConsoleCursorInfo(hOut,&cci); cci.bVisible=0; SetConsoleCursorInfo(hOut,&cci); } void ShowC(){ //显示光标 CONSOLE_CURSOR_INFO cur={1,1}; SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cur); } void HideC(){ //同hidden() CONSOLE_CURSOR_INFO cur={1,0}; SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cur); } std::string getexePath(int argc,char *argv[]){ //返回exe路径 return argv[0]; } std::string getpath(int argc,char*argv[]){ //返回exe上一级路径 std::string _exePath=getexePath(argc,argv); return _exePath.substr(0,_exePath.find_last_of('\\')); } std::string getexeName(int argc,char* argv[]){ //返回exe名称 std::string _path=getpath(argc,argv); std::string _exePath=getexePath(argc,argv); return _exePath.substr(_exePath.find_last_of(_path)+1); } //以上3个函数参数为main自带参数:int argc,char*argv[] #endif
头文件以后会持续更新
不许催更
贪吃蛇
#include<stdio.h> #include<Windows.h> #include<string.h> #include<stdlib.h> #include<conio.h> #include<time.h> #define H 20 #define W 60 typedef struct body { int x; int y; }BODY; typedef struct snake { int size;//蛇的长度 BODY list[W * H];//蛇的位置,最大可以铺满整个墙 BODY food; COORD coord; int dx;//x轴移动方向 int dy;//y轴移动方向 int score;//分数 BODY tail; }SNAKE; //展示界面 void show_wall() { for (int i = 0; i <= H; i++) { for (int j = 0; j <= W; j++) { if (i == H || j == W)printf("+"); else printf(" "); } puts(""); } } void init_food(BODY* food) { srand(time(NULL)); food->x = rand() % W; food->y = rand() % H; while (food->x == 0 || food->y == 0) { food->x = rand() % W; food->y = rand() % H; } } void init_snake(SNAKE* snake) { snake->size = 2; snake->list[0].x = W / 2; snake->list[1].x = W / 2 - 1; snake->list[0].y = H / 2; snake->list[1].y = H / 2; snake->score = 0; snake->dx = 1; snake->dy = 0; init_food(&(snake->food)); } void hide_cur()//隐藏光标,里面是windows特有的函数,不需要刻意去记,拿来就用 { CONSOLE_CURSOR_INFO cci; cci.dwSize = sizeof(cci); cci.bVisible = FALSE; SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cci); } void show_ui(SNAKE* snake) { for (int i = 0; i < snake->size; i++) { //定位光标位置,windows自带函数 snake->coord.X = snake->list[i].x; snake->coord.Y = snake->list[i].y; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), snake->coord); if (i == 0)printf("@"); else printf("*"); } snake->coord.X = snake->food.x; snake->coord.Y = snake->food.y; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), snake->coord); printf("#"); snake->coord.X = snake->tail.x; snake->coord.Y = snake->tail.y; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), snake->coord); printf(" "); } void move_snake(SNAKE* snake) { snake->tail.x = snake->list[snake->size - 1].x; snake->tail.y = snake->list[snake->size - 1].y; for (int i = snake->size - 1; i > 0; i--) { snake->list[i].x = snake->list[i - 1].x; snake->list[i].y = snake->list[i - 1].y; } snake->list[0].x += snake->dx; snake->list[0].y += snake->dy; } void control_move(SNAKE* snake) { char key = 0; while (_kbhit()) { key = _getch(); } switch (key) { case 'd': snake->dx = 1; snake->dy = 0; break; case 's': snake->dx = 0; snake->dy = 1; break; case 'a': snake->dx = -1; snake->dy = 0; break; case 'w': snake->dx = 0; snake->dy = -1; break; } } void eat_food(SNAKE* snake) { if (snake->food.x == snake->list[0].x && snake->food.y == snake->list[0].y) { snake->size++; snake->score += 10; init_food(&snake->food); } } void game_over(SNAKE* snake) { snake->coord.X = 30; snake->coord.Y = 25; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), snake->coord); printf("游戏结束!!! 得分:%d", snake->score); system("pause"); } void eat_snake_body(SNAKE* snake) { for (int i = 1; i < snake->size; i++) { if (snake->list[0].x == snake->list[i].x && snake->list[0].y == snake->list[i].y) { game_over(snake); exit(0); } } } void start_game(SNAKE* snake) { while (snake->list[0].x >= 0 && snake->list[0].x <= W - 1 && snake->list[0].y >= 0 && snake->list[0].y <= H - 1) { show_ui(snake); control_move(snake); eat_food(snake); move_snake(snake); eat_snake_body(snake); Sleep(300); } game_over(snake); } int main() { hide_cur(); SNAKE* snake = (SNAKE*)malloc(sizeof(SNAKE)); init_snake(snake); show_wall(); show_ui(snake); start_game(snake); free(snake); system("pause"); return 0; }
(加障碍物版)
#include<stdio.h> #include<string.h> #include<stdlib.h> #include<time.h> #include<Windows.h> #include<conio.h> /* 注意: w:上移 s:下移 a:左移 d:右移 不可以用getchar()来进行控制,getchar()之后要有回车才行,而我们只希望通过wsad这些按键进行操作 但有专门的按键操作函数 #include<conio.h> char key;//key要给初始值,否则key没值,进不了循环,但初始值也不能是wasd等 while(_kbhit())//判断是否按下按键,按下不等于0 { key=_getch(); } */ char temp; //1.设置地图边界 #define W 60 #define H 20 //2.设置贪吃蛇结构体 typedef struct _body { int x; //坐标x int y; //坐标y }BODY; typedef struct snake{ BODY list[W * H];//贪吃蛇最大占满整个地图 int size;//实际身体个数,蛇头(@)和蛇身蛇尾(*) BODY food;//食物,# COORD coord;//(定位光标)的坐标,显示 int dx;//移动方向 int dy;//移动方向 BODY tail;//记录蛇尾,用于清除蛇尾痕迹 int score;//分数 BODY disability; }SNAKE; //3.实现显示地图,初始化蛇函数,初始化食物函数 void test_ui() { for (int i = 0; i < H; i++) { for (int j = 0; j < W; j++) printf("="); printf("\n"); } } void disability_snake(BODY* disability) { Sleep(5); //设置障碍物坐标 disability->x = rand() % W; disability->y = rand() % H; while (disability->x == 0 || disability->x == W - 1 || disability->y == 0 || disability->y == H - 1) { disability->x = rand() % W; disability->y = rand() % H; } } void init_food(BODY* food) { //设置随机数种子 srand(time(NULL)); //设置食物坐标 food->x = rand()% W;//[0,W-1],注意%的操作很巧妙 food->y = rand() % H;//[0,H-1] while(food->x == 0 || food->x == W - 1 || food->y == 0 || food->y == H - 1) { food->x = rand() % W; food->y = rand() % H; } } void init_snake(SNAKE* snake)//初始化 { snake->list[0].x = W / 2; snake->list[0].y = H / 2; snake->list[1].x = W / 2 - 1; snake->list[1].y = H / 2;//这里老师写成H/2-1应该是错的 snake->size = 2;//初始时蛇的长度为2,因为有头有尾 //设置移动方向 snake->dx = 1;//默认移动方向向右 snake->dy = 0;//默认移动方向向左 snake->score = 0; init_food(&snake->food); disability_snake(&snake->disability); while (snake->food.x == snake->disability.x && snake->food.y == snake->disability.y) { init_food(&snake->food); disability_snake(&snake->disability); } }; void show_ui(SNAKE* snake) { //显示蛇 for (int i = 0; i < snake->size; i++) { snake->coord.X = snake->list[i].x;//这个函数是在显示地图后执行的,画完地图后光标是在地图之外的,用这个函数可以重置光标位置,让光标放到我们想要的地方 snake->coord.Y = snake->list[i].y; //定位光标位置,windows自带函数 SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), snake->coord); if (i == 0) {//显示蛇头 printf("@"); } else{//显示蛇身和蛇尾 printf("*"); } } //显示食物 snake->coord.X = snake->food.x; snake->coord.Y = snake->food.y; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), snake->coord); printf("#"); //显示障碍物 snake->coord.X = snake->disability.x; snake->coord.Y = snake->disability.y; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), snake->coord); printf("?"); //清除蛇尾的痕迹,否则一连串的* snake->coord.X = snake->tail.x; snake->coord.Y = snake->tail.y; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), snake->coord); printf(" "); } void show_wall()//展示墙 { for (int i = 0; i <=H; i++) { for (int j = 0; j <=W; j++) { if (i == H || j == W)printf("+"); else printf(" "); } puts(""); } } void hide_cur()//隐藏光标,里面是windows特有的函数,不需要刻意去记,拿来就用 { CONSOLE_CURSOR_INFO cci; cci.dwSize = sizeof(cci); cci.bVisible = FALSE; SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cci); } void move_snake(SNAKE* snake) { //记录蛇尾,清除痕迹 snake->tail = snake->list[snake->size - 1]; //蛇身的移动,算法逻辑从后往前赋值 //蛇头的移动,单独赋值 for (int i = snake->size - 1; i > 0; i--) { snake->list[i] = snake->list[i - 1]; } snake->list[0].x += snake->dx; snake->list[0].y += snake->dy; } void control_snake(SNAKE* snake) { char key = 0; while (_kbhit())//检测到按下按键 { if (temp == 'w' && _kbhit() == 's')key = temp; else if (temp == 's' && _kbhit() == 'w')key = temp; else if (temp == 'a' && _kbhit() == 'd')key = temp; else if (temp == 'd' && _kbhit() == 'a')key = temp; else key = _getch(); } //循环之外,抬起按下动作,或没有按下动作 //根据按键,修改移动方向 temp = key; switch (key) { case 'w': snake->dy = -1; snake->dx = 0; break; case 's': snake->dy = 1; snake->dx = 0; break; case 'a': snake->dy = 0; snake->dx = -1; break; case 'd': snake->dy = 0; snake->dx = 1; } } void snake_eat(SNAKE* snake) { //判断是否吃到食物 if (snake->list[0].x == snake->food.x && snake->list[0].y == snake->food.y) { //吃到食物,身体加长,食物消失,重新生成新的食物 snake->size++;//食物消失也不用重新写,因为一旦生成了食物原来的地方就消失了 snake->coord.X = snake->disability.x; snake->coord.Y = snake->disability.y; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), snake->coord); printf(" "); init_food(&(snake->food)); disability_snake(&snake->disability); printf(" "); while (snake->food.x == snake->disability.x && snake->food.y == snake->disability.y) { init_food(&snake->food); disability_snake(&snake->disability); } snake->score += 10; } } void game_over(SNAKE* snake)//游戏结束,指定到具体位置打印游戏结束 { snake->coord.X = 40; snake->coord.Y = 25; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), snake->coord); printf("游戏结束 总分数:%d", snake->score); system("pause"); } void snake_eat_body(SNAKE* snake) { for (int i = 1; i < snake->size; i++) { if (snake->list[0].x == snake->list[i].x && snake->list[0].y == snake->list[i].y) { game_over(snake);//吃到身体;游戏结束 exit(0); } } } void snake_push_disability(SNAKE* snake) { if (snake->disability.x == snake->list[0].x && snake->disability.y == snake->list[0].y) { game_over(snake); exit(0); } } void start_game(SNAKE* snake) { while (snake->list[0].x >=0 && snake->list[0].x < W && snake->list[0].y>=0 && snake->list[0].y < H)//在范围内移动 { //显示蛇和食物 show_ui(snake); //控制移动方向 control_snake(snake); //蛇吃到食物 snake_eat(snake); //蛇吃到身体 snake_eat_body(snake); //蛇撞到障碍物 snake_push_disability(snake); //移动蛇 move_snake(snake); //延迟300ms Sleep(300); } game_over(snake);//碰到墙壁,游戏结束 } int main(int argc,char *argv[]) { hide_cur();//隐藏光标 SNAKE* snake = (SNAKE*)malloc(sizeof(SNAKE));//创建空间 init_snake(snake); //显示地图边界 show_wall(); //显示蛇和食物 show_ui(snake); //启动游戏 start_game(snake); free(snake);//释放空间 //while (1);//先不让程序结束,就暂时不显示程序结束的那段字 return 0; }
#define
的正确用法#include<bits/stdc++.h> #define hello signed #define hel main #define h ( #define e ) #define l { #define hehehe return #define a 0 #define ll ; #define lll } #define hellohello "hello" #define hell printf #define enter "\n" #define int "%d" #define space " " #define double "%.2f" #define hellohe scanf #define o , #define helloh [ #define helloe ] #define he for #define llo ++ #define hellollhe using #define hellollhel namespace #define hhhehe std hellollhe hellollhel hhhehe ll hello ap helloh 100010 helloe ll hello hel h e l hello w=0 ll hell h hellohello e ll hell h enter e ll hell h double o 3.14 e ll hell h enter e ll hell h int o w e ll hell h enter e ll hellohe h int o & w e ll hell h int o w e ll hell h enter e ll he h hello i=1 ll i <= w ll i llo e l hellohe h int o & ap helloh i helloe e ll lll he h hello i=1 ll i <= w ll i llo e l hell h int o ap helloh i helloe e ll hell h space e ll lll hehehe a ll lll
真的能运行 不信你放编译器上试试
运行结果:输出 hello 换行 3.14 换行 0,然后输入一个变量w,输出w,输入w个整数存入数组,然后输出w个整数,以空格隔开
有兴趣的话可以再看一遍 -
最近活动
- 2024.12.29 小学组十二月月赛补题 作业
- 2024.12.29 小学组十二月月赛 OI
- 2024.12.20 ~ 12.22 小学组第 6 次周赛补题 作业
- 2024.12.20 ~ 12.22 小学组第 6 次周赛 OI
- 2024.12.13 ~ 12.15 小学组第 5 次周赛补题 作业
- 2024.12.13 ~ 12.15 小学组第 5 次周赛 OI
- 2024.12.6 ~ 12.8 小学组第 4 次周赛补题 作业
- 2024.12.6 ~ 12.8 小学组第 4 次周赛 OI
- 2024.12.1 小学组十一月月赛补题 作业
- 2024.12.1 CSP-X 小学组月赛 ACM/ICPC
- 2024.11.22 ~ 11.24 小学组第 3 次周赛补题 作业
- 2024.11.22 ~ 11.24 小学组第 3 次周赛 OI
- 2024.11.15 ~ 11.17 小学组第 2 次周赛补题 作业
- 2024.11.15 ~ 11.17 小学组第 2 次周赛 OI
- 2024.11.8 ~ 11.10 小学组第 1 次周赛补题 作业
- 2024.11.8 ~ 11.10 小学组第 1 次周赛 IOI
- 2024.10.20 图灵 CSP-X 模拟赛补题 IOI
- 2024.10.20图灵编程CSP-X模拟赛 ACM/ICPC
- 2024.10.13 图灵 CSP-X 赛前第二次训练赛 补题 IOI
- 2024.10.13 图灵 CSP-X赛前第二次训练赛 ACM/ICPC
- 2024.9.30 图灵 CSP-X 小学组 试题 OI
- 2024年8月29日CSP-X初赛模拟卷4 补题 作业
- 2024年8月29日 CSP-X初赛模拟卷4 OI
- 2024年8月23日CSP-X初赛模拟赛3-补题 作业
- 2024年8月16日CSP-X初赛模拟赛2 OI
- 2024年7月26日 初赛练习(5)【小学组】 OI
- 2024年7月19日 初赛练习(4)【小学组】 OI
- 2024年7月12日 初赛练习(3)【小学组】-补题场 作业
- 2024.7.9 初赛练习 2【小学组】补题场 作业
- 2024 图灵5月月赛 - 小学组 OI
-
Stat
-
Rating