From 1d5061624b59cb66d5468f496c08e0a2816b7b34 Mon Sep 17 00:00:00 2001 From: gongmuchangnan <32336474+gongmuchangnan@users.noreply.github.com> Date: Sun, 11 Mar 2018 20:44:14 +0800 Subject: [PATCH 1/5] RunningLetters --- level1/p01_runningLetter/runningletter.c | 31 ++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 level1/p01_runningLetter/runningletter.c diff --git a/level1/p01_runningLetter/runningletter.c b/level1/p01_runningLetter/runningletter.c new file mode 100644 index 00000000..225725e6 --- /dev/null +++ b/level1/p01_runningLetter/runningletter.c @@ -0,0 +1,31 @@ +# include +# include +# include + +# define WAITTIME 40 +# define LENGTH 75 + +void print_space(int cnt); +int main(void) +{ + int cnt; + int a, b, c; + for(cnt = 0;; cnt++) + { + a = cnt % LENGTH; + b = (cnt / LENGTH) % 2; + c = abs(LENGTH * b - a); + print_space(c); + printf("R"); + Sleep(WAITTIME); + system("cls"); + } +} +void print_space(int cnt) +{ + int temp; + for(temp = 0; temp < cnt; temp++) + { + printf(" "); + } +} From 21ff0ba175009dd476d71cf7e4ee0cc6608cf949 Mon Sep 17 00:00:00 2001 From: gongmuchangnan <32336474+gongmuchangnan@users.noreply.github.com> Date: Sun, 11 Mar 2018 22:34:36 +0800 Subject: [PATCH 2/5] RunningLetters --- level1/p01_runningLetter/runningletter.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/level1/p01_runningLetter/runningletter.c b/level1/p01_runningLetter/runningletter.c index 225725e6..3e2136a3 100644 --- a/level1/p01_runningLetter/runningletter.c +++ b/level1/p01_runningLetter/runningletter.c @@ -1,25 +1,36 @@ # include # include # include +#include # define WAITTIME 40 -# define LENGTH 75 void print_space(int cnt); int main(void) { + //获取屏幕宽度 + HANDLE handle_out; //定义一个句柄 + CONSOLE_SCREEN_BUFFER_INFO screen_info; //定义窗口缓冲区信息结构体 + COORD pos = {0, 0}; //定义一个坐标结构体 + handle_out = GetStdHandle(STD_OUTPUT_HANDLE); //获得标准输出设备句柄 + GetConsoleScreenBufferInfo(handle_out, &screen_info); //获取窗口信息 + const int LENGTH = screen_info.dwSize.X - 1; //screen_info.dwSize.X(缓冲区宽度,也就是横坐标最大值加1) + //功能实现 int cnt; int a, b, c; for(cnt = 0;; cnt++) { + //主体逻辑部分, 实现循环 a = cnt % LENGTH; b = (cnt / LENGTH) % 2; c = abs(LENGTH * b - a); print_space(c); + printf("R"); Sleep(WAITTIME); system("cls"); } + CloseHandle(handle_out); //关闭标准输出设备句柄 } void print_space(int cnt) { From 36c992f23a7a664d63edc36bf0a9d9c6c7386e7a Mon Sep 17 00:00:00 2001 From: gongmuchangnan <32336474+gongmuchangnan@users.noreply.github.com> Date: Mon, 12 Mar 2018 08:21:39 +0800 Subject: [PATCH 3/5] RunningLetters --- level1/p01_runningLetter/runningletter.c | 1 - 1 file changed, 1 deletion(-) diff --git a/level1/p01_runningLetter/runningletter.c b/level1/p01_runningLetter/runningletter.c index 3e2136a3..d87674f6 100644 --- a/level1/p01_runningLetter/runningletter.c +++ b/level1/p01_runningLetter/runningletter.c @@ -11,7 +11,6 @@ int main(void) //获取屏幕宽度 HANDLE handle_out; //定义一个句柄 CONSOLE_SCREEN_BUFFER_INFO screen_info; //定义窗口缓冲区信息结构体 - COORD pos = {0, 0}; //定义一个坐标结构体 handle_out = GetStdHandle(STD_OUTPUT_HANDLE); //获得标准输出设备句柄 GetConsoleScreenBufferInfo(handle_out, &screen_info); //获取窗口信息 const int LENGTH = screen_info.dwSize.X - 1; //screen_info.dwSize.X(缓冲区宽度,也就是横坐标最大值加1) From fcf8b45e30b928f4cd542aaa985e79978cc711dd Mon Sep 17 00:00:00 2001 From: gongmuchangnan <32336474+gongmuchangnan@users.noreply.github.com> Date: Sun, 18 Mar 2018 16:16:47 +0800 Subject: [PATCH 4/5] hanoi --- level1/p01_runningLetter/runningletter.c | 38 ++++++++--------- level1/p02_isPrime/isprime.c | 36 ++++++++++++++++ level1/p03_Diophantus/diophantus.c | 14 ++++++ level1/p04_ narcissus/narcissus.c | 31 ++++++++++++++ level1/p05_allPrimes/allprimes.c | 48 +++++++++++++++++++++ level1/p06_Goldbach/goldbach.c | 54 ++++++++++++++++++++++++ level1/p08_hanoi/hanoi.c | 29 +++++++++++++ 7 files changed, 230 insertions(+), 20 deletions(-) create mode 100644 level1/p02_isPrime/isprime.c create mode 100644 level1/p03_Diophantus/diophantus.c create mode 100644 level1/p04_ narcissus/narcissus.c create mode 100644 level1/p05_allPrimes/allprimes.c create mode 100644 level1/p06_Goldbach/goldbach.c create mode 100644 level1/p08_hanoi/hanoi.c diff --git a/level1/p01_runningLetter/runningletter.c b/level1/p01_runningLetter/runningletter.c index d87674f6..810882f3 100644 --- a/level1/p01_runningLetter/runningletter.c +++ b/level1/p01_runningLetter/runningletter.c @@ -1,40 +1,38 @@ # include # include # include -#include +# include # define WAITTIME 40 void print_space(int cnt); int main(void) { - //获取屏幕宽度 - HANDLE handle_out; //定义一个句柄 - CONSOLE_SCREEN_BUFFER_INFO screen_info; //定义窗口缓冲区信息结构体 - handle_out = GetStdHandle(STD_OUTPUT_HANDLE); //获得标准输出设备句柄 - GetConsoleScreenBufferInfo(handle_out, &screen_info); //获取窗口信息 - const int LENGTH = screen_info.dwSize.X - 1; //screen_info.dwSize.X(缓冲区宽度,也就是横坐标最大值加1) - //功能实现 - int cnt; - int a, b, c; - for(cnt = 0;; cnt++) + //鑾峰彇灞忓箷瀹藉害 + HANDLE handle_out; //瀹氫箟涓涓彞鏌 + CONSOLE_SCREEN_BUFFER_INFO screen_info; //瀹氫箟绐楀彛缂撳啿鍖轰俊鎭粨鏋勪綋 + handle_out = GetStdHandle(STD_OUTPUT_HANDLE); //鑾峰緱鏍囧噯杈撳嚭璁惧鍙ユ焺 + GetConsoleScreenBufferInfo(handle_out, &screen_info); //鑾峰彇绐楀彛淇℃伅 + const int LENGTH = screen_info.dwSize.X - 1; //screen_info.dwSize.X(缂撳啿鍖哄搴︼紝涔熷氨鏄í鍧愭爣鏈澶у煎姞1) + //鍔熻兘瀹炵幇 + int remainder, flag, steps; + for(int cnt = 0;; cnt++) { - //主体逻辑部分, 实现循环 - a = cnt % LENGTH; - b = (cnt / LENGTH) % 2; - c = abs(LENGTH * b - a); - print_space(c); + //涓讳綋閫昏緫閮ㄥ垎, 瀹炵幇寰幆 remainder鍜宖lag鍏卞悓鎺у埗鏂瑰悜 + remainder = cnt % LENGTH; + flag = (cnt / LENGTH) % 2; + steps = abs(LENGTH * flag - remainder); + print_space(steps); printf("R"); Sleep(WAITTIME); system("cls"); } - CloseHandle(handle_out); //关闭标准输出设备句柄 + CloseHandle(handle_out); //鍏抽棴鏍囧噯杈撳嚭璁惧鍙ユ焺 } -void print_space(int cnt) +void print_space(int steps) { - int temp; - for(temp = 0; temp < cnt; temp++) + for(int i = 0; i < steps; i++) { printf(" "); } diff --git a/level1/p02_isPrime/isprime.c b/level1/p02_isPrime/isprime.c new file mode 100644 index 00000000..dde5ff40 --- /dev/null +++ b/level1/p02_isPrime/isprime.c @@ -0,0 +1,36 @@ +# include +# include + +void is_prime(int n); +int main(void) +{ + long long int n; + printf("璇疯緭鍏ヤ竴涓暣鏁:"); + if(scanf("%lld", &n)) + { + is_prime(n); + } + else + { + printf("Oops!浣犲簲璇ヨ緭鍏ヤ竴涓暣鏁!"); + } + return 0; +} +void is_prime(int n) +{ + int i; + int sqrt_of_n = (int)sqrt(n); + for(i = 2; i <= sqrt_of_n; i++) + { + if(n % i == 0) break; + } + if(i > sqrt_of_n) + { + printf("鎮ㄦ墍杈撳叆鐨%d鏄礌鏁癨n", n); + } + else + { + printf("鎮ㄨ緭鍏ョ殑涓嶆槸绱犳暟\n"); + } + +} diff --git a/level1/p03_Diophantus/diophantus.c b/level1/p03_Diophantus/diophantus.c new file mode 100644 index 00000000..a6ac1259 --- /dev/null +++ b/level1/p03_Diophantus/diophantus.c @@ -0,0 +1,14 @@ +# include +# define UPPERLIMIT 250 + +int main(void) +{ + for(double i = 0; i < UPPERLIMIT; i++) + { + if((i / 12 + i / 6 + i / 7 + 5 + i / 2 + 4) == i) + { + printf("褰撳効瀛愭鏃, 涓㈢暘鍥剧殑骞撮緞涓%.0f\n", i - 4); + break; + } + } +} diff --git a/level1/p04_ narcissus/narcissus.c b/level1/p04_ narcissus/narcissus.c new file mode 100644 index 00000000..691ea26f --- /dev/null +++ b/level1/p04_ narcissus/narcissus.c @@ -0,0 +1,31 @@ +# include +# include + +# define LOWERLIMIT 100 +# define UPPERLIMIT 1000 + +int main(void) +{ + printf("3浣嶆按浠欒姳鏁颁负:\n"); + int number[3] = {0}; + for(int i = LOWERLIMIT; i < UPPERLIMIT; i++) + { + int j = 0, sum = 0; + int temp = i; + do + { + number[j++] = temp % 10; + temp /= 10; + } while(temp); + for(j = 0; j < 3; j++) + { + sum += pow(number[j], 3); + } + if(sum == i) + { + printf("%d\t", i); + } + } + printf("\n"); + return 0; +} diff --git a/level1/p05_allPrimes/allprimes.c b/level1/p05_allPrimes/allprimes.c new file mode 100644 index 00000000..ff4a1810 --- /dev/null +++ b/level1/p05_allPrimes/allprimes.c @@ -0,0 +1,48 @@ +# include +# include +# include + +# define LOWERLIMIT 2 +# define UPPERLIMIT 1000 + +int is_prime(int i); +int main(void) +{ + //娴嬮噺鏃堕棿 + clock_t start, finish; + double duration; + start = clock(); + //鎵撳嵃绱犳暟 + printf("2-1000鍐呮墍鏈夌殑绱犳暟涓:\n"); + for(int i = LOWERLIMIT; i <= UPPERLIMIT; i++) + { + if(is_prime(i)) + { + printf("%d\t", i); + } + } + //娴嬮噺鏃堕棿 + finish = clock(); + duration = (double)(finish - start) / CLOCKS_PER_SEC; + printf("\n璇ョ▼搴忚繍琛屾绘椂闂翠负: %f seconds\n", duration); + return 0; +} + +int is_prime(int i) +{ + int sqrt_of_i = (int)sqrt(i); + int j, if_is_prime; + for(j = 2; j <= sqrt_of_i; j++) + { + if(i % j == 0) break; + } + if(j > sqrt_of_i) + { + if_is_prime = 1; + } + else + { + if_is_prime = 0; + } + return if_is_prime; +} diff --git a/level1/p06_Goldbach/goldbach.c b/level1/p06_Goldbach/goldbach.c new file mode 100644 index 00000000..c47d061c --- /dev/null +++ b/level1/p06_Goldbach/goldbach.c @@ -0,0 +1,54 @@ +//Goldbach +# include +# include + +# define LENGTH 25 +# define LOWERLIMIT 2 +# define UPPERLIMIT 100 +# define LOWERLIMIT1 4 +# define UPPERLIMIT1 100 + +int is_prime(int n); +int main(void) +{ + int primes[LENGTH] = {0}; + for(int i = LOWERLIMIT, j = 0; i <= UPPERLIMIT; i++) + { + if(is_prime(i)) + { + primes[j++] = i; + } + } + for(int i = LOWERLIMIT1;i <= UPPERLIMIT; i += 2) + { + for(int j = 0; j < LENGTH; j++) + { + for(int k = 0; k < LENGTH; k++) + { + if(primes[j] + primes[k] == i) + { + printf("%d == %d + %d\n", i, primes[j], primes[k]); + } + } + } + } + return 0; +} +int is_prime(int n) +{ + int sqrt_of_n = (int)sqrt(n); + int i, if_is_prime; + for(i = 2; i <= sqrt_of_n; i++) + { + if(n % i == 0) break; + } + if(i > sqrt_of_n) + { + if_is_prime = 1; + } + else + { + if_is_prime = 0; + } + return if_is_prime; +} diff --git a/level1/p08_hanoi/hanoi.c b/level1/p08_hanoi/hanoi.c new file mode 100644 index 00000000..242c1706 --- /dev/null +++ b/level1/p08_hanoi/hanoi.c @@ -0,0 +1,29 @@ +/* +瑙e喅鎬濇兂 +1.灏咥涓婇潰鐨刵-1涓氳繃B鎸埌C涓 +2.灏咥涓婄殑鍙︿竴涓洏绉诲埌B涓 +3.閲嶅姝ラ鍗冲彲瀹炵幇 +4.閲囩敤閫掑綊瀹炵幇 +*/ +# include + +void move(int steps, char A, char B, char C); +int main(void) +{ + int steps; + printf("璇疯緭鍏ヨ绉诲姩鐨勫潡鏁帮細"); + scanf("%d", &steps); + move(steps, 'A', 'B', 'C'); +} +void move(int steps, char A, char B, char C) +{ + if(steps == 1) + { + printf("%c --> %c\n", A, C);//褰搒teps鍙湁涓涓殑鏃跺欑洿鎺ヤ粠a绉诲姩鍒癰涓 + } else + { + move(steps - 1, A, C, B);//绗琻-1涓浠巃閫氳繃b绉诲姩鍒癱 + printf("%c --> %c\n", A, C); + move(steps - 1, B, A, C);//n-1涓Щ鍔ㄨ嚜鍚巆鍙樻垚浜嗗垵濮嬶紝c閫氳繃a绉诲姩鍒癱 + } +} From 14fc995507b49269f10498a71e70950f197849ad Mon Sep 17 00:00:00 2001 From: gongmuchangnan <32336474+gongmuchangnan@users.noreply.github.com> Date: Sun, 18 Mar 2018 16:24:13 +0800 Subject: [PATCH 5/5] Update runningletter.c --- level1/p01_runningLetter/runningletter.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/level1/p01_runningLetter/runningletter.c b/level1/p01_runningLetter/runningletter.c index 810882f3..b3eca3ea 100644 --- a/level1/p01_runningLetter/runningletter.c +++ b/level1/p01_runningLetter/runningletter.c @@ -12,9 +12,9 @@ int main(void) HANDLE handle_out; //瀹氫箟涓涓彞鏌 CONSOLE_SCREEN_BUFFER_INFO screen_info; //瀹氫箟绐楀彛缂撳啿鍖轰俊鎭粨鏋勪綋 handle_out = GetStdHandle(STD_OUTPUT_HANDLE); //鑾峰緱鏍囧噯杈撳嚭璁惧鍙ユ焺 - GetConsoleScreenBufferInfo(handle_out, &screen_info); //鑾峰彇绐楀彛淇℃伅 - const int LENGTH = screen_info.dwSize.X - 1; //screen_info.dwSize.X(缂撳啿鍖哄搴︼紝涔熷氨鏄í鍧愭爣鏈澶у煎姞1) - //鍔熻兘瀹炵幇 + GetConsoleScreenBufferInfo(handle_out, &screen_info); //鑾峰彇绐楀彛淇℃伅 + const int LENGTH = screen_info.dwSize.X - 1; //screen_info.dwSize.X(缂撳啿鍖哄搴︼紝涔熷氨鏄í鍧愭爣鏈澶у煎姞1) + //鍔熻兘瀹炵幇 int remainder, flag, steps; for(int cnt = 0;; cnt++) {