Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 36 additions & 0 deletions level1/p01_runningLetter/runningLetter.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#define SCREEN_WID 50
#define SLEEP_TIME 100

int main()
{
system("mode con cols=50 lines=20");
int length_word;
char words[50];
scanf("%s", &words);
length_word = strlen(words);
for (int space_left = 0; space_left <= SCREEN_WID - length_word; space_left++)
{
for (int n = 0; n < space_left; n++)
{
printf(" ");
}
printf("%s", words);
Sleep(100);
system("CLS");
}
for (int space_left = SCREEN_WID - length_word; space_left > 0; space_left--)
{
for (int n = space_left; n > 0; n--)
{
printf(" ");
}
printf("%s", words);
Sleep(SLEEP_TIME);
system("CLS");
}
return 0;
}
24 changes: 24 additions & 0 deletions level1/p02_isPrime/isPrime.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

void main()
{
int input_n;
scanf("%lld", &input_n);
if (input_n == 1)
{
printf("The number is not a Prime.\n");
goto bottom;
}
for (int n = 2; n*n <= input_n; n++)
{
if (input_n%n == 0)
{
printf("The number is not a Prime.\n");
break;
}
printf("The number is a Prime.\n");
}
getchar();
getchar();
}
21 changes: 21 additions & 0 deletions level1/p03_Diophantus/Diophantus.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

void main()
{
int d_age;
int s_age;
for (int n = 1; n < 1000; n++)
{
if (n % 12 == 0)
if (n % 7 == 0)
{
s_age = 5 + (n / 12) + (n / 7) + (n / 6);
d_age = s_age * 2;
break;
}
}
printf("Diophantus is %d years old.", d_age);
getchar();
getchar();
}
20 changes: 20 additions & 0 deletions level1/p04_ narcissus/narcissus.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int power(int num, int times);

void main()
{
int p1, p2, p3;
for (int n=100; n < 1000; n++)
{
p1 = n % 10;
p2 = (n % 100) / 10;
p3 = (n - p1 - p2) / 100;
if (n == p1 * p1*p1 + p2 * p2*p2 + p3 * p3*p3)
{
printf("%d\n", n);
}
}
getchar();
}
21 changes: 21 additions & 0 deletions level1/p05_allPrimes/allPrimes.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <time.h>
#include <windows.h>

void main()
{
printf("2\n3\n4\n");
for (int i = 2; i <= 1000; i++)
{
for (int n = 2; n*n <= i; n++)
{
if (i%n == 0)
break;
if ((n+1)*(n+1) > i)
printf("%d\n", i);
}
}
printf("total time is:%ld ms",clock());
getchar();
}
51 changes: 51 additions & 0 deletions level1/p06_Goldbach/Goldbach.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int make_primes(int *prime);

void main()
{
int n_prime = 26; //100内有25个质数和证明所需用到的1
int prime[26];
make_primes(prime);
for (int n = 3; n <= 100; n++)
{
for (int n1 = 0; n1 < 26; n1++)
{
for (int n2 = 1; n2 < 26; n2++)
{
if (prime[n1] + prime[n2] == n)
{
printf("%d = %d + %d\n", n, prime[n1], prime[n2]);
}
else if (prime[n1] + prime[n2] > n)
{
break;
}
}
}
}
getchar();
}

int make_primes(int *prime)
{
prime[0] = 1;
prime[1] = 2;
prime[2] = 3;
int n_p=3;
for (int i = 2; i <= 100; i++)
{
for (int j = 2; j*j <= i; j++)
{
if (i%j == 0)
break;
else if ((j + 1)*(j + 1) > i && (j + 1)*(j + 1) != i)
{
prime[n_p] = i;
n_p++;
break;
}
}
}
}
36 changes: 36 additions & 0 deletions level1/p07_encrypt_decrypt/encrypt_decrypt.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>

void encrypt(char *words_1, int n);
void decrypt(char *words_1, int n);

void main()
{
char words[10000];
scanf("%s", &words);
int l_words = strlen(words);
encrypt(words, l_words);
printf("%s", words);
getchar();
getchar();
decrypt(words, l_words);
printf("%s", words);
getchar();
}

void encrypt(char *words_1, int n)
{
for (int i = 0; i < n; i++)
{
words_1[i] = words_1[i] + 1;
}
}

void decrypt(char *words_1, int n)
{
for (int i = 0; i < n; i++)
{
words_1[i] = words_1[i] - 1;
}
}
27 changes: 27 additions & 0 deletions level1/p08_hanoi/hanoi.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
#include<stdio.h>
#define LEVEL_HANOI 64

void move(int level, char A, char B, char C);

void main()
{
char A = 'A';
char B = 'B';
char C = 'C';
move(LEVEL_HANOI, A, B, C);
getchar();
}

void move(int level, char A, char B, char C)
{
if (level == 1)
{
printf("%c --> %c\n", A, C);
}
else
{
move(level - 1, A, C, B);
printf("%c --> %c\n", A, C);
move(level - 1, B, A, C);
}
}
125 changes: 125 additions & 0 deletions level1/p09_maze/maze.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <Windows.h>
#include <stdlib.h>
#include <conio.h>

void create_maze(int maze[][20]);
void draw(int maze[][20]);
enum symbol{ empty, wall, player, terminal };

void main()
{
system("mode con cols=50 lines=22");
int dir;
int maze[20][20];
int posi[2] = {1,1};
replay:
dir = 0;
create_maze(maze);
maze[1][1] = player;
draw(maze);
while(maze[18][18] != player)
{
dir = _getch();
switch (dir)
{
case 72: //up
if (maze[posi[0] - 1][posi[1]] == empty || maze[posi[0] - 1][posi[1]] == terminal)
{
maze[posi[0]][posi[1]] = empty;
posi[0] = posi[0] - 1;
maze[posi[0]][posi[1]] = player;
draw(maze);
}
break;
case 80: //down
if (maze[posi[0] + 1][posi[1]] == empty || maze[posi[0] + 1][posi[1]] == terminal)
{
maze[posi[0]][posi[1]] = empty;
posi[0] = posi[0] + 1;
maze[posi[0]][posi[1]] = player;
draw(maze);
}
break;
case 75: //left
if (maze[posi[0]][posi[1] - 1] == empty || maze[posi[0]][posi[1] - 1] == terminal)
{
maze[posi[0]][posi[1]] = empty;
posi[1] = posi[1] - 1;
maze[posi[0]][posi[1]] = player;
draw(maze);
}
break;
case 77: //right
if (maze[posi[0]][posi[1] + 1] == empty || maze[posi[0]][posi[1] + 1] == terminal)
{
maze[posi[0]][posi[1]] = empty;
posi[1] = posi[1] + 1;
maze[posi[0]][posi[1]] = player;
draw(maze);
}
break;
case 'r': //recreate a maze
{
goto replay;
break;
}
default:;
}
}

}

void create_maze(int maze[][20])
{
for (int n1 = 1; n1 < 19; n1++)
{
for (int n2 = 1; n2 < 19; n2++)
{
if (rand() % 4 + 1 > 1)
{
maze[n1][n2] = empty;
}
else
{
maze[n1][n2] = wall;
}
}
}
for (int n = 0; n < 20; n++)
{
maze[0][n] = wall;
maze[19][n] = wall;
maze[n][0] = wall;
maze[n][19] = wall;
}
maze[18][18] = terminal;
}

void draw(int maze[][20])
{
system("cls");
for (int i = 0; i < 20; i++)
{
for (int j = 0; j < 20; j++)
{
switch (maze[i][j])
{
case empty:
printf(" ");
break;
case wall:
printf("墙");
break;
case player:
printf("你");
break;
case terminal:
printf("终");
break;
}
}
printf("\n");
}
}
15 changes: 15 additions & 0 deletions level1/p10_pushBoxes/level1.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
111111111111111
120100000000001
100100111100001
100004000100001
100000000101401
111111100101001
100000000101001
100100001100001
104100000000001
100111001111001
100100000000001
111111111100001
100000000000001
133300000000001
111111111111111
Loading