diff --git a/level1/p01_runningLetter/p01_runningLetter.c b/level1/p01_runningLetter/p01_runningLetter.c new file mode 100644 index 00000000..32d89234 --- /dev/null +++ b/level1/p01_runningLetter/p01_runningLetter.c @@ -0,0 +1,32 @@ +#include +#include +#define TIME 24 +#define WIDE 80 +#define TheChar 'A' + + +void run() +{ + int i,j; + + for (i=0;ii-WIDE;j--) + printf(" "); + printf("%c",TheChar); + Sleep(TIME); + system("cls"); + } + +} + +int main() +{ + system("mode con cols=81 lines=50"); + run(); + return 0; +} diff --git a/level1/p02_isPrime/p02_isPrime.c b/level1/p02_isPrime/p02_isPrime.c new file mode 100644 index 00000000..bf01cf12 --- /dev/null +++ b/level1/p02_isPrime/p02_isPrime.c @@ -0,0 +1,22 @@ +#include +#include +#include + +int main() +{ + long long n; + scanf("%lld",&n); + + long long i; + int flag=1; + for (i=2;i<=sqrt(n)+1;i++) + { + if (n%i == 0) flag=0; + } + if ( flag ) + printf("%lld is a prime.",n); + else + printf("%lld is not a prime.",n); + + return 0; +} diff --git a/level1/p03_Diophantus/p03_Diophantus.c b/level1/p03_Diophantus/p03_Diophantus.c new file mode 100644 index 00000000..39778717 --- /dev/null +++ b/level1/p03_Diophantus/p03_Diophantus.c @@ -0,0 +1,25 @@ +#include +#include +#define INTERVAL 4 + +int check(int x) +{ + int son_die=x-(x/6+x/12+x/7+5)-INTERVAL; + + if (son_die == x/2) + { + return 0; + } + return 1; +} + +int main() +{ + int the_age=1; + while ( check(the_age) ) + { + the_age++; + } + printf("The age of diophantus when his son died is %d",the_age-INTERVAL); + return 0; +} diff --git a/level1/p04_ narcissus/p04_ narcissus.c b/level1/p04_ narcissus/p04_ narcissus.c new file mode 100644 index 00000000..f97eb85d --- /dev/null +++ b/level1/p04_ narcissus/p04_ narcissus.c @@ -0,0 +1,39 @@ +#include +#include +#define MIN_N 100 +#define MAX_N 1000 + +int cube(int x) +{ + return(x*x*x); +} + +int check(int number) +{ + int bit,decade,hundred; + bit=number%10; + decade=(number/10)%10; + hundred=number/100; + + if (cube(bit)+cube(decade)+cube(hundred) == number) + { + printf("%d=%d^3+%d^3+%d^3\n",number,hundred,decade,bit); + return 1; + } + + return 0; +} + +int main() +{ + int i,num=0; + + for (i=MIN_N;i +#include +#include +#define MIN_N 2 +#define MAX_N 1000 + +int main() +{ + int time_start,time_end,a[MAX_N+5]={0}; + + time_start=clock(); + + int i,j,num=0; + for (i=MIN_N;i<=MAX_N/2+1;i++) + { + if ( !a[i] ) + for (j=2;j<=MAX_N/i;j++) + if (i*j<=MAX_N) a[i*j]=1; + + } + for (int i=MIN_N;i<=MAX_N;i++) + if ( !a[i] ) + { + printf("%d ",i); + num++; + if (num%10 == 0) printf("\n"); + } + printf("\n\nThe total number of prime is %d.",num); + + time_end=clock(); + + printf("\ntime use:%lf ms",(double)(time_end-time_start)); + return 0; +} diff --git a/level1/p06_Goldbach/p06_Goldbach.c b/level1/p06_Goldbach/p06_Goldbach.c new file mode 100644 index 00000000..d18d9c79 --- /dev/null +++ b/level1/p06_Goldbach/p06_Goldbach.c @@ -0,0 +1,29 @@ +#include +#include +#include +#define MIN_N 1 +#define MAX_N 50 + +int prime(int x) +{ + int i; + for (i=MIN_N+1;i<=sqrt(x)+1;i++) + if (x%i == 0) return 0; + return 1; +} + +int main() +{ + int i,j; + for (i=MIN_N;i<=MAX_N;i++) + { + for (j=MIN_N;j<=i*2;j++) + if (prime(j) && prime(2*i-j)) + { + printf("%d = %d + %d\n",2*i,j,2*i-j); + break; + } + } + printf("All even numbers within 100 accord with Goldbach's conjecture."); + return 0; +} diff --git a/level1/p07_encrypt_decrypt/p07_encrypt_decrypt.c b/level1/p07_encrypt_decrypt/p07_encrypt_decrypt.c new file mode 100644 index 00000000..763c96cf --- /dev/null +++ b/level1/p07_encrypt_decrypt/p07_encrypt_decrypt.c @@ -0,0 +1,39 @@ +#include +#include +#include +#define MAXN 1000005 + +char Original_string[MAXN]; +char After_handling[MAXN]; + +char encrypt(char c,int pos) +{ + return(c+(pos+1)*(pos+2)); +} + +char decrypt(char c,int pos) +{ + return(c-(pos+1)*(pos+2)); +} + + + +int main() +{ + scanf("%s",Original_string); + int len=strlen(Original_string); + + printf("After encrypt:"); + int i; + for (i=0;i +#include + +int tot=0; + +void move(char a,char c) +{ + tot++; + printf("Step %d: move from %c to %c\n",tot,a,c); +} + +void hanoi(char a,char b,char c,int n) +{ + if (n == 1) + { + move(a,c); + } + else + { + hanoi(a,c,b,n-1); + move(a,c); + hanoi(b,a,c,n-1); + } +} + +int main() +{ + int the_number; + printf("Please enter the size of hanoi:"); + scanf("%d",&the_number); + printf("\nThe solution is:\n"); + + hanoi('A','B','C',the_number); + + return 0; +} diff --git a/level1/p09_maze/p09_maze.c b/level1/p09_maze/p09_maze.c new file mode 100644 index 00000000..b2e0db7b --- /dev/null +++ b/level1/p09_maze/p09_maze.c @@ -0,0 +1,177 @@ +#include +#include +#include +#include +#include +#define MAXN 200 +#define LENGTH_OF_CONSOLE 102 //console 宽度 +#define WIDE_OF_CONSOLE 31 //console 高度 +#define UP 72 //上 +#define DOWN 80 //下 +#define LEFT 75 //左 +#define RIGHT 77 //右 +#define RESET 13 //重置 + + +int maze[MAXN][MAXN]={0}; +int nowx,nowy,temp,end=0; +int dealx[]={0,0,1,-1},dealy[]={1,-1,0,0}; //人物移动的操作数组 +void hide(); +void init(); +int check(int x,int y); +void make_a_maze(int x,int y); +void redraw_the_map(); +void settle(); + +int main() +{ + hide(); //隐藏光标 + init(); //初始化 随机生成地图 + char c; + int s; + while (c=getch()) + { + s=4; + switch (c) + { + case RESET: //重置 + { + system("cls"); + init(); + continue; + } + case UP:s=3;break; //上 + case DOWN:s=2;break; //下 + case LEFT:s=1;break; //左 + case RIGHT:s=0;break; //右 + default:continue; //遇到其他字符 重新读取 + } + if (s<4) + { + int tempx=nowx+dealx[s],tempy=nowy+dealy[s]; + if (check(tempx,tempy) && maze[tempx][tempy]!=1) + { + if (maze[tempx][tempy]==2) + { + settle(); //结算 + continue; + } + maze[tempx][tempy]=3; + maze[tempx-dealx[s]][tempy-dealy[s]]=0; + nowx=tempx; + nowy=tempy; + system("cls"); + redraw_the_map(); //移动人物 + } + } + continue; + } + return 0; +} + + +void hide() +{ + HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE); + CONSOLE_CURSOR_INFO CursorInfo; + GetConsoleCursorInfo(handle, &CursorInfo); + CursorInfo.bVisible = 0; + SetConsoleCursorInfo(handle, &CursorInfo); +} + +void init() +{ + system("mode con cols=102 lines=31"); //设置console窗口大小 + end=0; //是否胜利的标记 + memset(maze,0,sizeof(maze)); + nowx=WIDE_OF_CONSOLE,nowy=LENGTH_OF_CONSOLE/2; + int i,j; + for (i=1;i<=WIDE_OF_CONSOLE;i++) + for (j=1;j<=LENGTH_OF_CONSOLE/2;j++) + { + if (maze[i][j] == 0) + { + if (i%2==1 && j%2==1) maze[i][j]=0;else maze[i][j]=1; + } + } + make_a_maze(1,1); //dfs随机生成地图 + maze[1][1]=2; //设置出口 + maze[WIDE_OF_CONSOLE][LENGTH_OF_CONSOLE/2]=3; //设置入口 + redraw_the_map(); //打印地图 + + +} + +void make_a_maze(int x,int y) +{ + int order[4]={4,4,4,4},num=0,flag=0; + int i; + while (num<4) + { + int temp=rand()%4; //随机方向 + flag=0; + for (i=0;i<=num;i++) + if (order[i]==temp) + { + flag=1; + } + if (flag) continue; + order[num]=temp; + num++; + } + for (i=0;i<4;i++) + { + int s=order[i]; + int tempx=x+dealx[s]*2,tempy=y+dealy[s]*2; + if (check(tempx,tempy) && (maze[tempx][tempy]==0 || maze[tempx][tempy]==2)) + { + maze[tempx-dealx[s]][tempy-dealy[s]]=maze[tempx][tempy]=10; //联通 + make_a_maze(tempx,tempy); //dfs下一步 + } + } +} + +void redraw_the_map() +{ + int i,j; + for (i=1;i<=WIDE_OF_CONSOLE;i++) + for (j=1;j<=LENGTH_OF_CONSOLE/2;j++) + { + switch (maze[i][j]%10) + { + case 0:printf(" ");break; //空地 + case 1:printf("##");break; //墙 + case 2:printf("XX");break; //出口 + case 3:printf("!!");break; //入口 + default:continue; + } + if (j==LENGTH_OF_CONSOLE/2 && i0 && y>0 && y<=LENGTH_OF_CONSOLE/2 && x<=WIDE_OF_CONSOLE) return 1; + return 0; +} + +void settle() +{ + end=1; //标记胜利 + system("cls"); + char win[]="You Win !"; + char restart[]="If you want to start a new game, please press 'Enter' "; + char quit[]="If you want to quit the game, please press any one of 'F1'~'F9' or click 'X'"; + int i; + printf("\n\n\n\n\n\n\n"); + for (i=1;i<(LENGTH_OF_CONSOLE-strlen(win))/2;i++) printf(" "); + printf("%s\n\n\n\n\n",win); + for (i=1;i<(LENGTH_OF_CONSOLE-strlen(restart))/2;i++) printf(" "); + printf("%s\n\n\n\n\n",restart); + for (i=1;i<(LENGTH_OF_CONSOLE-strlen(quit))/2;i++) printf(" "); + printf("%s",quit); +} + + diff --git "a/level1/p09_maze/\350\203\234\345\210\251\351\242\204\350\247\210\345\233\276.png" "b/level1/p09_maze/\350\203\234\345\210\251\351\242\204\350\247\210\345\233\276.png" new file mode 100644 index 00000000..1bcfea60 Binary files /dev/null and "b/level1/p09_maze/\350\203\234\345\210\251\351\242\204\350\247\210\345\233\276.png" differ diff --git "a/level1/p09_maze/\350\277\267\345\256\253\351\242\204\350\247\210\345\233\2761.png" "b/level1/p09_maze/\350\277\267\345\256\253\351\242\204\350\247\210\345\233\2761.png" new file mode 100644 index 00000000..3ce769d3 Binary files /dev/null and "b/level1/p09_maze/\350\277\267\345\256\253\351\242\204\350\247\210\345\233\2761.png" differ diff --git "a/level1/p09_maze/\350\277\267\345\256\253\351\242\204\350\247\210\345\233\2762.png" "b/level1/p09_maze/\350\277\267\345\256\253\351\242\204\350\247\210\345\233\2762.png" new file mode 100644 index 00000000..a3049c25 Binary files /dev/null and "b/level1/p09_maze/\350\277\267\345\256\253\351\242\204\350\247\210\345\233\2762.png" differ diff --git "a/level1/p09_maze/\350\277\267\345\256\253\351\242\204\350\247\210\345\233\2763.png" "b/level1/p09_maze/\350\277\267\345\256\253\351\242\204\350\247\210\345\233\2763.png" new file mode 100644 index 00000000..2dc46a4d Binary files /dev/null and "b/level1/p09_maze/\350\277\267\345\256\253\351\242\204\350\247\210\345\233\2763.png" differ diff --git a/level1/p10_pushBoxes/map1.txt b/level1/p10_pushBoxes/map1.txt new file mode 100644 index 00000000..d191452f --- /dev/null +++ b/level1/p10_pushBoxes/map1.txt @@ -0,0 +1,8 @@ +00111000 +00121000 +00101111 +11140421 +12043111 +11114100 +00012100 +00011100 diff --git a/level1/p10_pushBoxes/map2.txt b/level1/p10_pushBoxes/map2.txt new file mode 100644 index 00000000..46b6613c --- /dev/null +++ b/level1/p10_pushBoxes/map2.txt @@ -0,0 +1,9 @@ +111110000 +100010000 +104010111 +104310121 +111411121 +011000021 +010001001 +010001111 +011111000 diff --git a/level1/p10_pushBoxes/map3.txt b/level1/p10_pushBoxes/map3.txt new file mode 100644 index 00000000..6a304cab --- /dev/null +++ b/level1/p10_pushBoxes/map3.txt @@ -0,0 +1,10 @@ +0111111100 +0000100000 +0111111100 +0100000111 +1141110001 +1003400401 +1022104011 +1122100010 +0111111110 +0000000000 \ No newline at end of file diff --git a/level1/p10_pushBoxes/map4.txt b/level1/p10_pushBoxes/map4.txt new file mode 100644 index 00000000..69e8b4f9 --- /dev/null +++ b/level1/p10_pushBoxes/map4.txt @@ -0,0 +1,8 @@ +01111100 +01031110 +01040010 +11101011 +12101001 +12400101 +12000401 +11111111 \ No newline at end of file diff --git a/level1/p10_pushBoxes/map5.txt b/level1/p10_pushBoxes/map5.txt new file mode 100644 index 00000000..b92ccf61 --- /dev/null +++ b/level1/p10_pushBoxes/map5.txt @@ -0,0 +1,10 @@ +0000000000 +0001111111 +0011001031 +0010001401 +0014004001 +0010411001 +1110401011 +1222220010 +1111111110 +0000000000 \ No newline at end of file diff --git a/level1/p10_pushBoxes/map6.txt b/level1/p10_pushBoxes/map6.txt new file mode 100644 index 00000000..0e7c36cb --- /dev/null +++ b/level1/p10_pushBoxes/map6.txt @@ -0,0 +1,8 @@ +00000000 +01111110 +11000011 +10404401 +12222221 +10440401 +11103111 +00111100 diff --git a/level1/p10_pushBoxes/pushBoxes.c b/level1/p10_pushBoxes/pushBoxes.c new file mode 100644 index 00000000..49d60421 --- /dev/null +++ b/level1/p10_pushBoxes/pushBoxes.c @@ -0,0 +1,241 @@ +#include +#include +#include +#include +#include +#define MAXN 100 +#define N 10000 +#define LENGTH_OF_CONSOLE 100 +#define WIDE_OF_CONSOLE 30 +#define UP 72 //上 +#define DOWN 80 //下 +#define LEFT 75 //左 +#define RIGHT 77 //右 +#define RESET 13 //重置 + +void hide(); +void login(); +void read_the_map(int level); +void redraw_the_map(); +void init(); +void settle(); + +int size[]={8,9,10,8,10,8}; +int reminder[]={1,1,1,1,1,1,1}; +int intial_map[MAXN][MAXN],now_map[MAXN][MAXN]; +int dealx[]={0,1,-1,0},dealy[]={1,0,0,-1}; //存放操作动作的数组 +int end=0,now_step=0,tot_step=0,nowx,nowy,left_box,tot_box,victory; +int level=1; + + +int main() +{ + login(); + hide(); + init(); //初始化 + char c; + int push; + while (c=getch()) + { + int s=4; + switch (c) + { + case RESET: + { + tot_step=tot_step-now_step; + init(); + break; + } + case UP:s=2;break; + case DOWN:s=1;break; + case LEFT:s=3;break; + case RIGHT:s=0;break; + default:continue; + } + if (s<4) + { + int tempx=nowx+dealx[s],tempy=nowy+dealy[s]; + if (now_map[tempx][tempy]!='1' && !end) + { + if (now_map[tempx][tempy]=='4') + { + if (intial_map[tempx+dealx[s]][tempy+dealy[s]]=='1' || now_map[tempx+dealx[s]][tempy+dealy[s]]=='4') + { + continue; + } + if (now_map[tempx+dealx[s]][tempy+dealy[s]]=='2' && intial_map[tempx][tempy]!='2') + { + left_box--; + } + now_map[tempx+dealx[s]][tempy+dealy[s]]='4'; + } + now_map[nowx][nowy]=intial_map[nowx][nowy]=='2'?'2':'0'; + now_map[tempx][tempy]='3'; + nowx=tempx; + nowy=tempy; + tot_step++; //记录总步数 + now_step++; //记录当前关卡步数 + redraw_the_map(); + if (! left_box ) + { + level++; + victory=1; + init(); + continue; + } + } + } + } + return 0; +} + +void login() +{ + system("mode con cols=102 lines=31"); + + char welcome[]="Welcome to the game! please login your name:"; + char name[MAXN]; + int i; + for (i=0;i<=(WIDE_OF_CONSOLE-size[level-1])/2;i++) printf("\n"); + for (i=1;i<=(LENGTH_OF_CONSOLE-strlen(welcome))/2-7;i++) printf(" "); + printf("%s",welcome); + gets(name); + + time_t now; + struct tm *tm_now; + time(&now); + tm_now=localtime(&now); + + FILE *fp1; + fp1=fopen("userlog.txt","a"); + fprintf(fp1,"\n\n%d-%d-%d %d:%d:%d\n",tm_now->tm_year+1900, tm_now->tm_mon+1, tm_now->tm_mday, tm_now->tm_hour, tm_now->tm_min, tm_now->tm_sec) ; + fprintf(fp1,"Player:%s\n",name); + fclose(fp1); //将玩家每次的游戏记录储存在文本"userlog.txt"中 包括游戏的时间 玩家用户名以及每关分数 +} + +void init() +{ + FILE *fp1; + fp1=fopen("userlog.txt","a"); + if (!reminder[level-1] && victory) + { + fprintf(fp1,"%d\n",now_step); + } + if (reminder[level]) + { + fprintf(fp1,"level %d:",level); + reminder[level]=0; + } + fclose(fp1); //数据存入文件 + + victory=0; + now_step=0; + read_the_map(level); + if (! end) redraw_the_map(); +} + +void hide() +{ + HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE); + CONSOLE_CURSOR_INFO CursorInfo; + GetConsoleCursorInfo(handle, &CursorInfo); + CursorInfo.bVisible = 0; + SetConsoleCursorInfo(handle, &CursorInfo); +} + +void read_the_map(int level) //读入地图 +{ + int i,j; + FILE *fp1,*fp2; + switch (level) + { + case 1:fp1 = fopen("map1.txt","r");break; + case 2:fp1 = fopen("map2.txt","r");break; + case 3:fp1 = fopen("map3.txt","r");break; + case 4:fp1 = fopen("map4.txt","r");break; + case 5:fp1 = fopen("map5.txt","r");break; + case 6:fp1 = fopen("map6.txt","r");break; + default: + { + end=1; + settle(); //通关 + return; + } + } + char temp; + left_box=0; + for (i=1;i<=size[level-1];i++) + { + for (j=1;j<=size[level-1]+1;j++) + { + fscanf(fp1,"%c",&temp); + if (temp>='0' && temp<='4') + { + if (temp=='3') + { + nowx=i; + nowy=j; + } + if (temp>='4') left_box++; + intial_map[i][j]=now_map[i][j]=temp; + } + } + } + tot_box=left_box; + fclose(fp1); +} + +void redraw_the_map() //绘制地图 包括当前关卡和步数 +{ + system("cls"); + char nowlevel[]="Level:"; + char yourstep_now[]="The steps you cost in this level:"; + char yourstep_tot[]="The steps you cost in total:"; + + int i,j; + char temp; + printf("%s %d\n",nowlevel,level); + printf("%s %d\n",yourstep_now,now_step); + printf("%s %d\n",yourstep_tot,tot_step); + + for (i=1;i<=(WIDE_OF_CONSOLE-size[level-1])/2-3;i++) printf("\n"); + for (i=1;i<=size[level-1];i++) + { + for (j=1;j<(LENGTH_OF_CONSOLE-size[level-1])/2-1;j++) printf(" "); + for (j=1;j<=size[level-1]+1;j++) + { + switch (now_map[i][j]) + { + case '\n':continue; + case '0':printf(" ");break; //空地 + case '1':printf("##");break; //墙 + case '2':printf("@@");break; //地点 + case '3':printf("!!");break; //人物 + case '4':printf("$$");break; //箱子 + default:continue; + } + } + printf("\n"); + } +} + +void settle() //通关后显示赢得游戏胜利 +{ + system("cls"); + char quit[]="If you want to quit the game, please press any one of 'F1'~'F9' or click 'X'"; + char win[]="Congratulations! You just won all the games !"; + + int i; + for (i=0;i<=(WIDE_OF_CONSOLE-size[level-1])/2;i++) + printf("\n"); + for (i=1;i<=(LENGTH_OF_CONSOLE-strlen(win))/2-1;i++) + printf(" "); + printf("%s\n\n\n\n",win); + for (i=1;i<=(LENGTH_OF_CONSOLE-strlen(quit))/2-1;i++) + printf(" "); + printf("%s",quit); + for (i=1;i<=(WIDE_OF_CONSOLE-size[level-1])/2-3;i++) + printf("\n"); +} + + diff --git a/level1/p10_pushBoxes/userlog.txt b/level1/p10_pushBoxes/userlog.txt new file mode 100644 index 00000000..9790ec11 --- /dev/null +++ b/level1/p10_pushBoxes/userlog.txt @@ -0,0 +1,62 @@ + + +2018-3-31 9:49:17 +Player:admin +level 1:11 +level 2: + +2018-3-31 9:49:49 +Player:admin +level 1: + +2018-3-31 9:50:12 +Player:admin +level 1:10 +level 2:95 +level 3: + +2018-3-31 9:51:8 +Player:admin +level 1:10 +level 2: + +2018-3-31 9:51:26 +Player:admin +level 1: + +2018-3-31 9:52:40 +Player:admin +level 1:10 +level 2: + +2018-3-31 9:55:58 +Player:admin +level 1:10 +level 2:95 +level 3: + +2018-3-31 10:2:29 +Player:admin +level 1:10 +level 2: + +2018-3-31 10:4:10 +Player:admin +level 1: + +2018-3-31 10:5:43 +Player:admin +level 1: + +2018-3-31 10:5:50 +Player:admin +level 1: + +2018-3-31 10:7:53 +Player:admin +level 1: + +2018-3-31 10:10:54 +Player:admin +level 1:10 +level 2: \ No newline at end of file diff --git "a/level1/p10_pushBoxes/\351\242\204\350\247\210\345\233\2761.png" "b/level1/p10_pushBoxes/\351\242\204\350\247\210\345\233\2761.png" new file mode 100644 index 00000000..729937b1 Binary files /dev/null and "b/level1/p10_pushBoxes/\351\242\204\350\247\210\345\233\2761.png" differ diff --git "a/level1/p10_pushBoxes/\351\242\204\350\247\210\345\233\2762.png" "b/level1/p10_pushBoxes/\351\242\204\350\247\210\345\233\2762.png" new file mode 100644 index 00000000..363a3a1d Binary files /dev/null and "b/level1/p10_pushBoxes/\351\242\204\350\247\210\345\233\2762.png" differ diff --git "a/level1/p10_pushBoxes/\351\242\204\350\247\210\345\233\2763.png" "b/level1/p10_pushBoxes/\351\242\204\350\247\210\345\233\2763.png" new file mode 100644 index 00000000..88858112 Binary files /dev/null and "b/level1/p10_pushBoxes/\351\242\204\350\247\210\345\233\2763.png" differ diff --git "a/level1/p10_pushBoxes/\351\242\204\350\247\210\345\233\2764.png" "b/level1/p10_pushBoxes/\351\242\204\350\247\210\345\233\2764.png" new file mode 100644 index 00000000..95997daf Binary files /dev/null and "b/level1/p10_pushBoxes/\351\242\204\350\247\210\345\233\2764.png" differ diff --git "a/level1/p10_pushBoxes/\351\242\204\350\247\210\345\233\2765.png" "b/level1/p10_pushBoxes/\351\242\204\350\247\210\345\233\2765.png" new file mode 100644 index 00000000..98404541 Binary files /dev/null and "b/level1/p10_pushBoxes/\351\242\204\350\247\210\345\233\2765.png" differ diff --git a/level1/p11_linkedList/p11_linkedList.c b/level1/p11_linkedList/p11_linkedList.c new file mode 100644 index 00000000..6e20e602 --- /dev/null +++ b/level1/p11_linkedList/p11_linkedList.c @@ -0,0 +1,150 @@ +#include +#include +#include +#define NUMBER 5 + +struct node +{ + int data; + int num; + struct node *next; +}; + +struct node *head; +int L; + +void make_a_list(); +void show_the_list(); +void reserve_the_list(); +void find_the_data(); +int random_number(); + +int main() +{ + printf("Please enter the length of the list:"); + scanf("%d",&L); + make_a_list(); + + printf("The list:\n"); + show_the_list(); + + reserve_the_list(); + printf("\nAfter reserving:\n"); + show_the_list(); + + printf("\nThe positions of NUMBER 5 is:\n"); + find_the_data(); + return 0; +} + +void make_a_list() +{ + struct node *p,*temp; + int count=0; + head=p=(struct node *)malloc(sizeof(struct node)); + + srand((unsigned)time(NULL)); + head->data=random_number(); + while (1) + { + p->num=++count; + if (count==L) break; + temp=p; + p=(struct node *)malloc(sizeof(struct node)); + p->data=random_number(); + temp->next=p; + } + p->next=NULL; +} + + +int random_number() +{ + return (rand()%10); +} + + +void show_the_list() +{ + struct node *temp; + temp=head; + while (1) + { + printf("Number:%d Data:%d\n",temp->num,temp->data); + if (temp->next==NULL) break; + else + { + temp=temp->next; + } + } +} + + +void reserve_the_list() +{ + if (L==1) return; + if (L==2) + { + struct node *p,*temp; + p=head->next; + temp=head; + head=p; + p=temp; + } + if (L > 2) + { + struct node *p_left,*p_middle,*p_right; + p_left=head; + p_middle=p_left->next; + p_right=p_middle->next; + while (1) + { + p_middle->next=p_left; + p_left->num=L+1-p_left->num; + if (p_right->next==NULL) break; + p_left=p_middle; + p_middle=p_right; + p_right=p_right->next; + } + p_right->num=L+1-p_right->num; + p_middle->num=L+1-p_middle->num; + p_right->next=p_middle; + head->next=NULL; + head=p_right; + } +} + +void find_the_data() +{ + struct node *temp; + temp=head; + while (1) + { + if (temp->data==NUMBER) + { + printf("%d ",temp->num); + } + if (temp->next==NULL) break; + else + { + temp=temp->next; + } + } + if (temp->data!=NUMBER) printf("-1"); +} + + + + + + + + + + + + + + + + diff --git "a/level1/p11_linkedList/\351\242\204\350\247\210\345\233\2761.png" "b/level1/p11_linkedList/\351\242\204\350\247\210\345\233\2761.png" new file mode 100644 index 00000000..1c49ab27 Binary files /dev/null and "b/level1/p11_linkedList/\351\242\204\350\247\210\345\233\2761.png" differ diff --git "a/level1/p11_linkedList/\351\242\204\350\247\210\345\233\2762.png" "b/level1/p11_linkedList/\351\242\204\350\247\210\345\233\2762.png" new file mode 100644 index 00000000..48d61c2f Binary files /dev/null and "b/level1/p11_linkedList/\351\242\204\350\247\210\345\233\2762.png" differ diff --git a/level1/p12_warehouse/Data.txt b/level1/p12_warehouse/Data.txt new file mode 100644 index 00000000..c504867e --- /dev/null +++ b/level1/p12_warehouse/Data.txt @@ -0,0 +1,3 @@ +2 +233 apple 3 +1 hahaha 233 diff --git a/level1/p12_warehouse/Log.txt b/level1/p12_warehouse/Log.txt new file mode 100644 index 00000000..6d874d62 --- /dev/null +++ b/level1/p12_warehouse/Log.txt @@ -0,0 +1,3 @@ +in:233 apple 2 +in:233 apple 1 +in:233 apple 5 diff --git a/level1/p12_warehouse/p12_warehouse.c b/level1/p12_warehouse/p12_warehouse.c new file mode 100644 index 00000000..ef690f76 --- /dev/null +++ b/level1/p12_warehouse/p12_warehouse.c @@ -0,0 +1,177 @@ +#include +#include +#include +#define SHOW 1 +#define PUTIN 2 +#define PUTOUT 3 +#define QUIT 4 + +char names[1000][20]; +int ids[1000],amounts[1000],n=0; + + +void init(); +void show_the_menu(); +void show_the_inventory(); +void modify(int op); + + +int main() +{ + int option; + while (1) + { + init(); + show_the_menu(); + scanf("%d",&option); + switch(option) + { + case SHOW: + { + show_the_inventory(); + break; + } + case PUTIN: + { + printf("in:"); + int add=1; + modify(add); + break; + } + case PUTOUT: + { + printf("out:"); + int del=-1; + modify(del); + break; + } + case QUIT: + { + return 0; + } + } + } + return 0; +} + + + +void show_the_menu() +{ + printf("-------------------------------------------------\n"); + printf("| Welcome to the system ! |\n"); + printf("| **************************** |\n"); + printf("| * Menu * |\n"); + printf("| * * |\n"); + printf("| * 1-show the inventory * |\n"); + printf("| * 2-be put in storage * |\n"); + printf("| * 3-be put out of storage * |\n"); + printf("| * 4-quit the system * |\n"); + printf("| * * |\n"); + printf("| **************************** |\n"); + printf("| Please enter a number to continue.. |\n"); + printf("-------------------------------------------------\n"); + printf("\nThe option you want to choose is :"); +} + +void init() +{ + FILE *fp; + fp=fopen("Data.txt","r"); + int tot,id,amount; + n=0; + char name[100]; + fscanf(fp,"%d",&tot); + while (tot--) + { + fscanf(fp,"%d%s%d",&id,name,&amount); + int i; + for (i=0;i0) + { + printf("|%3d%12s%9d |\n",ids[i],names[i],amounts[i]); + } + } + printf("--------------------------------\n\n\n\n"); + +} + +void modify(int op) +{ + int id,amount; + char name[100]; + scanf("%d %s %d",&id,name,&amount); + int i,flag=1; + for (i=0;i0) + { + fprintf(fp,"%d %s %d\n",ids[i],names[i],amounts[i]); + } + } + fclose(fp); + + fpp=fopen("Log.txt","a"); + if (op) + { + fprintf(fpp,"in:"); + } + else + { + fprintf(fpp,"out:"); + } + fprintf(fpp,"%d %s %d\n",id,name,amount); + fclose(fpp); + + printf("Completed!\n"); +} + + + + + + + + + + diff --git "a/level1/p12_warehouse/\351\242\204\350\247\210\345\233\2761.png" "b/level1/p12_warehouse/\351\242\204\350\247\210\345\233\2761.png" new file mode 100644 index 00000000..854c556e Binary files /dev/null and "b/level1/p12_warehouse/\351\242\204\350\247\210\345\233\2761.png" differ diff --git "a/level1/p12_warehouse/\351\242\204\350\247\210\345\233\2762.png" "b/level1/p12_warehouse/\351\242\204\350\247\210\345\233\2762.png" new file mode 100644 index 00000000..965e1518 Binary files /dev/null and "b/level1/p12_warehouse/\351\242\204\350\247\210\345\233\2762.png" differ