diff --git a/C++_level1/queque.cpp b/C++_level1/queque.cpp new file mode 100644 index 00000000..c5e8d36c --- /dev/null +++ b/C++_level1/queque.cpp @@ -0,0 +1,87 @@ +#include +using namespace std; +typedef int Data_type; + +struct Linked_list +{ + Data_type data; + Linked_list * next; +}; + +class Queue +{ +public: + Queue() : head(0),tail(0),num(0) {} + void append (Data_type date); + Data_type pop(); + bool is_full() { return num >= Max_num; } + bool is_empty() { return num <= 0; } +private: + enum { Max_num = 100 }; + Linked_list *head,*tail; + int num; +}; + + +void Queue::append(Data_type data) +{ + if(is_full()) + { + cerr << "Fail to append, Queue is full!\n"; + return; + } + if(is_empty()) + { + head = tail = new Linked_list; + } + else + { + tail = tail->next = new Linked_list; + } + tail->data = data; + tail->next = 0; + num++; +} + +Data_type Queue::pop() +{ + if(is_empty()) + { + cerr << "Fail to pop, Queue is empty!\n"; + return -1; + } + Data_type data = head->data; + Linked_list *tmp = head; + head = head->next; + delete tmp; + num--; + return data; +} + + + +int main() +{ + Queue q; + q.append(1); + q.append(2); + q.append(3); + int data = q.pop(); + cout << noskipws << data << endl; + data = q.pop(); + cout << noskipws << data << endl; + data = q.pop(); + cout << noskipws << data << endl; + data = q.pop(); + cout << noskipws << data << endl; + + for(int i = 0; i < 100; i++) + { + q.append(i); + } + q.append(1); + q.append(1); + return 0; +} + + diff --git a/C++_level1/stack.cpp b/C++_level1/stack.cpp new file mode 100644 index 00000000..545bea99 --- /dev/null +++ b/C++_level1/stack.cpp @@ -0,0 +1,60 @@ +#include +using namespace std; +typedef int Data_type; +class Stack +{ +public: + Stack() : i(-1) {} + void push(Data_type data) + { + if(is_full()) + { + cerr << "Fail to push, Stack is full!\n"; + return; + } + arr[++i] = data; + } + Data_type pop() + { + if(is_empty()) + { + cerr << "Fail to pop, Stack is empty\n"; + return (-1); + } + return arr[i--]; + } + bool is_full() { return (i >= Size - 1); } + bool is_empty() { return (i < 0); } +private: + enum { Size = 100 }; + int i; + Data_type arr[Size]; +}; + + +int main() +{ + + Stack s; + s.push(1); + s.push(2); + s.push(3); + int data = s.pop(); + cout << noskipws << data << endl; + data = s.pop(); + cout << noskipws << data << endl; + data = s.pop(); + cout << noskipws << data << endl; + data = s.pop(); + cout << noskipws << data << endl; + + for(int i = 0; i < 100; i++) + { + s.push(i); + } + s.push(1); + s.push(1); + return 0; +} + + diff --git a/level1/0runningLetter.c b/level1/0runningLetter.c new file mode 100644 index 00000000..ce3d085e --- /dev/null +++ b/level1/0runningLetter.c @@ -0,0 +1,28 @@ +#include +#include +#define COLUMN 80 + +int main(){ + int blank,location; + + for (location = 1; location <=COLUMN ; location++){ + for (blank=1; blank < location; blank++){ + printf(" "); + } + putchar('A'); + usleep(2000000); + system("clear"); + } + for (location = location-1; location >=1; location--){ + for (blank=1; blank < location; blank++){ + printf(" "); + } + putchar('A'); + usleep(200000); + system("clear"); + } + return 0; +} + + + diff --git a/level1/Diophantus.c b/level1/Diophantus.c new file mode 100644 index 00000000..27244525 --- /dev/null +++ b/level1/Diophantus.c @@ -0,0 +1,12 @@ +#include + +int main() +{ + int x; + for(x=1; x<150; x++){ + if(x/6 + x/12 + x/7 + 5 + x/2 + 4 ==x) + break; + } + printf("The father had lived for %d years.\n",x); + return 0; +} diff --git a/level1/Goldbach.c b/level1/Goldbach.c new file mode 100644 index 00000000..bd865ae7 --- /dev/null +++ b/level1/Goldbach.c @@ -0,0 +1,30 @@ +#include +#include +#include + +int isPrime(int x) +{ + int i; + int dlm = sqrt((double)x); + + for (i=2; i<=dlm; i++) + { if (x%i==0) break; } + if (x==1) return 0; + else if (x==2 || x==3 || i>dlm) + { return 1; } + else return 0; + return 0; +} + +int main() +{ + int i,j; + + for (i=4; i<=100; i=i+2) + { for (j=2; j<=i/2; j++) + { if (isPrime(j) && isPrime(i-j)) + { printf("\n%d = prime%d + prime%d.",i,j,i-j); + break; } } } + return 0; +} + diff --git a/level1/allPrime.c b/level1/allPrime.c new file mode 100644 index 00000000..de34c762 --- /dev/null +++ b/level1/allPrime.c @@ -0,0 +1,22 @@ +#include +#include +#include + +int main() +{ + int i,j; + long begin,end; + + begin = time(NULL); + printf("\nThe primes are:\n%-7d",2); + for (i=3; i<1000; i=i+2){ + for (j=3; j<=(int)sqrt(i); j=j+2) + if (i%j == 0) break; + if (j > (int)sqrt(i) ) printf("%-7d",i); + } + end = time(NULL); + printf("\nThe begin time is: %d.",begin); + printf("\nThe end time is: %d.",end); + printf("\nThe total time is: %lf seconds.",(end-begin)/1000000.0); + return 0; +} diff --git a/level1/hanoi.c b/level1/hanoi.c new file mode 100644 index 00000000..cb7eb38b --- /dev/null +++ b/level1/hanoi.c @@ -0,0 +1,7 @@ +#include +#include +void( + +int mian() +{ + diff --git a/level1/isPrime.c b/level1/isPrime.c new file mode 100644 index 00000000..23290ede --- /dev/null +++ b/level1/isPrime.c @@ -0,0 +1,23 @@ +#include +#include + +int main() +{ + int i,num; + + printf("\nPlease enter a number: "); + scanf("%d",&num); + if (num == 2) + printf("\nIt's a prime.\n"); + else{ + for (i=2; i<=sqrt(num); i=i+2){ + if (num % i==0){ + printf("\nIt's not a prime.\n"); + break; + } + } + if (i > sqrt(num)) + printf("\nIt's a prime.\n"); + } + return 0; +} diff --git a/level1/narcissus.c b/level1/narcissus.c new file mode 100644 index 00000000..e4497908 --- /dev/null +++ b/level1/narcissus.c @@ -0,0 +1,14 @@ +#include + +int main() +{ + int i,ones,tens,hundreds; + for (i=100; i<1000; i++){ + ones = i % 10; + tens = i/10 %10; + hundreds = i/100; + if (ones*ones*ones + tens*tens*tens + hundreds*hundreds*hundreds == i) + printf("%7d\n",i); + } + return 0; +} diff --git a/level1/runningLetter.c b/level1/runningLetter.c new file mode 100644 index 00000000..4e32d400 --- /dev/null +++ b/level1/runningLetter.c @@ -0,0 +1,26 @@ +#include +#include +#define COLUMN 80 +#define PAUSE 100000 + +int main(){ + int blank,location=1,back=0; + + do + { for (blank=1; blank=1); + + return 0; + +} + + + diff --git a/level1_2/Goldbach.c b/level1_2/Goldbach.c new file mode 100644 index 00000000..bd865ae7 --- /dev/null +++ b/level1_2/Goldbach.c @@ -0,0 +1,30 @@ +#include +#include +#include + +int isPrime(int x) +{ + int i; + int dlm = sqrt((double)x); + + for (i=2; i<=dlm; i++) + { if (x%i==0) break; } + if (x==1) return 0; + else if (x==2 || x==3 || i>dlm) + { return 1; } + else return 0; + return 0; +} + +int main() +{ + int i,j; + + for (i=4; i<=100; i=i+2) + { for (j=2; j<=i/2; j++) + { if (isPrime(j) && isPrime(i-j)) + { printf("\n%d = prime%d + prime%d.",i,j,i-j); + break; } } } + return 0; +} + diff --git a/level1_2/a.out b/level1_2/a.out new file mode 100755 index 00000000..49af0920 Binary files /dev/null and b/level1_2/a.out differ diff --git a/level1_2/encryptDecrept b/level1_2/encryptDecrept new file mode 100755 index 00000000..128cd18f Binary files /dev/null and b/level1_2/encryptDecrept differ diff --git a/level1_2/encryptDecrept.c b/level1_2/encryptDecrept.c new file mode 100644 index 00000000..953d412a --- /dev/null +++ b/level1_2/encryptDecrept.c @@ -0,0 +1,89 @@ +#include +#include +#include +#include +#define MAXLINE 1000 +#define MAXPASSWD 100 +void encrypt(char text[]); +void decrypt(char text[]); +void getStr(char s[]); +int equalStr(char s1[],char s2[]); +/* is required to use this function */ + +int main() +{ + int i; + char c; + char text[MAXLINE]; + char passwd[MAXPASSWD]; + char confirm[MAXPASSWD]; + + printf("\nEnter the text to be encrypt: "); + getStr(text); + do { + printf("\nEnter your password: "); + getStr(passwd); + printf("\nConfirm your password: "); + getStr(confirm); + if (equalStr(passwd,confirm)) break; + printf("\nDifferent!\n"); } + while (1); + + encrypt(text); + + printf("\nWould you like to see your text after encrypt?\n"); + puts("Press 'y' as yes."); + if ((c = getchar()) == 'y' || c == 'Y') + { printf("%s\n",text); } + + getchar(); + for (i = 3; i >= 1; i--) + { puts("Enter your passward to decrypt your text: "); + getStr(confirm); + if (equalStr(passwd,confirm)) break; + puts("Incorrect passward!"); } + if (i > 0) + { decrypt(text); + printf("\n%s\n",text); } + else + { puts("You've run out of three chances, bye!"); } +} + + + +void getStr(char s[]) +{ + int i; + for (i = 0; (s[i] = getchar()) != '\n'; i++) + ; + s[i] = '\0'; +} + + + +int equalStr(char s1[],char s2[]) +{ + assert(s1[0] != '\0'); + int i; + if (strlen(s1) == strlen(s2)) + { for (i = 0; s1[i] != '\0'; i++) + { if (s1[i] != s2[i]) break; } } + if (s1[i] == '\0') return 1; + else return 0; +} + + + +void encrypt(char text[]) +{ + int i; + for (i = 0; text[i] != '\0'; i++) + { text[i] = ~text[i]; } +} + + + +void decrypt(char text[]) +{ + encrypt(text); +} diff --git a/level1_2/hanoi.c b/level1_2/hanoi.c new file mode 100644 index 00000000..cb7eb38b --- /dev/null +++ b/level1_2/hanoi.c @@ -0,0 +1,7 @@ +#include +#include +void( + +int mian() +{ + diff --git a/level1_2/maze b/level1_2/maze new file mode 100755 index 00000000..74416ac5 Binary files /dev/null and b/level1_2/maze differ diff --git a/level1_2/maze.c b/level1_2/maze.c new file mode 100644 index 00000000..026fcd45 --- /dev/null +++ b/level1_2/maze.c @@ -0,0 +1,70 @@ +/* Help the kid to go out of the maze. */ + +#include +#define LINE 10 +#define COLM 10 +#define BEGINX 1 +#define BEGINY 1 +#define ENDX 8 +#define ENDY 9 + +void drawMap(int kidx,int kidy,char map[LINE][COLM]); +void go(int *kidx,int *kidy,char map[LINE][COLM]); + +/* 1 stands for wall,2 stands for way,and 0 stands for the kid. */ +char map[LINE][COLM]={ {1,1,1,1,1,1,1,1,1,1}, + {1,2,2,2,1,2,2,2,2,1}, + {1,2,1,2,1,2,1,1,2,1}, + {1,2,1,2,1,2,1,1,2,1}, + {1,2,2,2,2,2,2,1,2,1}, + {1,1,1,1,1,1,2,1,2,1}, + {1,2,2,2,2,2,2,1,2,1}, + {1,1,2,1,1,1,2,1,2,1}, + {1,2,2,2,1,1,2,1,2,2}, + {1,1,1,1,1,1,1,1,1,1}}; + + +int main() +{ int kidx = BEGINX,kidy = BEGINY; + int success=0; + + drawMap(kidx,kidy,map); + printf("\nPress 'W' to go top,\nPrese 'S' to go down,\nPress 'A' to go left,\nPress 'D' to go right.\n"); + while (success!=1) + { go(&kidx,&kidy,map); + drawMap(kidx,kidy,map); + if (kidx== ENDX&& kidy==ENDY) success=1;} + printf("\n ********************"); + printf("\n * Congratulations! *"); + printf("\n ********************\n"); + return 0; +} + + +void drawMap(int kidx,int kidy,char map[LINE][COLM]) +{ + int i,j; + putchar('\n'); + map[kidx][kidy] = 0; + for (i=0; i + +main() +{ + char str[10]; + int i; + for (i = 0; i < 10; i++) str[i] = getchar(); + printf("\n%s\n",str); + for (i = 0; i < 10; i++) putchar(str[i]); + putchar('\n'); +}