Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

homework #16

Open
wants to merge 10 commits into
base: main
Choose a base branch
from
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
8 changes: 8 additions & 0 deletions level1/p01_running_letter/.idea/.gitignore

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions level1/p01_running_letter/.idea/modules.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions level1/p01_running_letter/.idea/p01_running_letter.iml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions level1/p01_running_letter/.idea/vcs.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

22 changes: 17 additions & 5 deletions level1/p01_running_letter/main.c
Original file line number Diff line number Diff line change
@@ -1,6 +1,18 @@
#include <printf.h>

#include <stdio.h>
#include <windows.h>
int main() {
printf("hello world!\n");
return 0;
}
for(int i=1;i<=50;i++){
for(int j=1;j<i;j++)printf(" ");
printf("C");
Sleep(100);
system("cls");
}

for(int i=50;i;i--){
for(int j=1;j<i;j++)printf(" ");
printf("C");
Sleep(100);
system("cls");
}
system("pause");
}
33 changes: 28 additions & 5 deletions level1/p02_is_prime/main.c
Original file line number Diff line number Diff line change
@@ -1,6 +1,29 @@
#include <printf.h>

#include<stdio.h>
#include<math.h>
#include<windows.h>
int Prime(){
int a;
printf("������һ����:");
scanf("%d",&a);
int k=sqrt(a);
k++;
if(a==1){
printf("�ⲻ��һ������\n");
return 0;
}
if(a==2){
printf("����һ��prime\n");
return 0;
}
for(int i=2;i<=k;i++){
if( !(a%i) ){
printf("�ⲻ��һ������\n");
return 0;
}
}
printf("����һ��prime\n");
}
int main() {
printf("hello world!\n");
return 0;
}
Prime();
system("pause");
}
31 changes: 26 additions & 5 deletions level1/p03_all_primes/main.c
Original file line number Diff line number Diff line change
@@ -1,6 +1,27 @@
#include <printf.h>

#include<stdio.h>
#include<windows.h>
#include<time.h>
#define MAX 1001
int prime[500],isP[1020];
void Prime(){
for(int i=1;i<=MAX;i++)isP[i]=1;
int num=1;
isP[1]=0,isP[2]=1;
for(int i=2;i<=MAX;i++){
if(isP[i]){
prime[num++]=i;
for(int j=2;j*i<=MAX;j++){
isP[j*i]=0;
}
}
}
}
int main() {
printf("hello world!\n");
return 0;
}
Prime();
for(int i=1;i<=1000;i++){
if(isP[i])printf("%d ",i);
}
printf("\n");
printf("所用时间:%.2lfs\n",(double)clock()/ CLOCKS_PER_SEC);
system("pause");
}
39 changes: 34 additions & 5 deletions level1/p04_goldbach/main.c
Original file line number Diff line number Diff line change
@@ -1,6 +1,35 @@
#include <printf.h>

#include<stdio.h>
#include<windows.h>
#include<time.h>
#define MAX 1001
int prime[500],isP[1020];
void Prime(){
for(int i=1;i<=MAX;i++)isP[i]=1;
int num=1;
isP[1]=0,isP[2]=1;
for(int i=2;i<=MAX;i++){
if(isP[i]){
prime[num++]=i;
for(int j=2;j*i<=MAX;j++){
isP[j*i]=0;
}
}
}
}
int main() {
printf("hello world!\n");
return 0;
}
Prime();
int flag=0;
for(int num=6;num<=100;num++){
flag=0;
for(int j=2;j<=num-4 && !flag;j++){
for(int k=2;k<=num-4 && !flag;k++){
int l=num-j-k;
if(isP[j]+isP[k]+isP[l]==3){
printf("%d=%d+%d+%d\n",num,j,k,l);
flag=1;
}
}
}
}
system("pause");
}
48 changes: 42 additions & 6 deletions level1/p05_encrypt_decrypt/main.c
Original file line number Diff line number Diff line change
@@ -1,6 +1,42 @@
#include <printf.h>

int main() {
printf("hello world!\n");
return 0;
}
#include<stdio.h>
#include<windows.h>
#include<string.h>
char word[800];
char secret[800];
char letter[800];
void encryption(){
int len=strlen(word);
len--;
for(int i=0;i<len;i++){
if(word[i]>='a' && word[i]<='z'){
secret[i]=word[i]+1;
}else if(word[i]>='0' && word[i]<='9'){
secret[i]=word[i]+1;
}else if(word[i]>='A' && word[i]<='Z'){
secret[i]=word[i]+1;
}else secret[i]=word[i];
}
printf("密文为:%s\n",secret);
}
void decryption(){
int len=strlen(secret);
for(int i=0;i<len;i++){
if(secret[i]>='a' && secret[i]<='z'){
letter[i]=secret[i]-1;
}else if(secret[i]>='0' && secret[i]<='9'){
letter[i]=word[i]-1;
}else if(secret[i]>='A' && secret[i]<='Z'){
letter[i]=secret[i]-1;
}else letter[i]=secret[i];
}
printf("明文为:%s\n",letter);
}
int main(){
for(int i=0;;i++){
word[i]=getchar();
if(word[i]=='\n')break;
}
encryption();
decryption();
system("pause");
}
23 changes: 19 additions & 4 deletions level1/p06_hanoi/main.c
Original file line number Diff line number Diff line change
@@ -1,6 +1,21 @@
#include <printf.h>

#include<stdio.h>
#include<windows.h>
void work(char a,char b,int k){
if(k==1){
printf("%c -> %c\n",a,b);
return ;
}
char d='A'+'B'+'C'-a-b;
work(a,d,k-1);
work(a,b,1);
work(b,d,k-1);
}
int main() {
printf("hello world!\n");
int num;
printf("请输入汉诺塔圆盘个数:");
scanf("%d",&num);
work('A','C',num);
system("pause");
return 0;
}

}
116 changes: 111 additions & 5 deletions level1/p07_maze/main.c
Original file line number Diff line number Diff line change
@@ -1,6 +1,112 @@
#include <printf.h>

int main() {
printf("hello world!\n");
#include<stdio.h>
#include<conio.h>
#include<windows.h>
#include<time.h>
HANDLE out;
int maze[40][40],footprint[40][40],game=0;
struct foorward{
int x,y;
}way[4];
void setcursor(int x,int y){
SetConsoleCursorPosition( out , (COORD){x,y} );
}
void explanation(){
setcursor(45,5),printf("迷宫游戏");
setcursor(35,7),printf("请通过方向键移动‘A’,使其到达终点'6'");
setcursor(0,0);
}
int barrier(int x,int y){
if( (x*y)<=0 || x>25 || y>25 || footprint[x][y] )return 1;
return 0;
}
}
void mazestruct(int x,int y);
void step(int x,int y){
int a;// 0左 1上 2右 3下
while(1){
a=rand()%4;
if( !barrier( x+way[a].x , y+way[a].y) )break;
}
maze[(x+x+way[a].x)/2][(y+y+way[a].y)/2]=0;
mazestruct(x+way[a].x,y+way[a].y);
}
int flag=0;
void mazestruct(int x,int y){
footprint[x][y]=1;
if( barrier(x-2,y) && barrier(x+2,y) && barrier(x,y+2) && barrier(x,y-2) ){
flag=1;
return ;
}
step(x,y);
if(flag){
if( barrier(x-2,y) && barrier(x+2,y) && barrier(x,y+2) && barrier(x,y-2) )return ;
flag--;
step(x,y);
}
}
void mazemake(){
way[0].x=-2,way[0].y=0,way[1].x=0,way[1].y=-2;
way[2].x=2,way[2].y=0,way[3].x=0,way[3].y=2;
for(int i=0;i<=26;i++)
for(int j=0;j<=26;j++)
maze[i][j]=1,footprint[i][j]=0;
for(int i=1;i<=25;i+=2)
for(int j=1;j<=25;j+=2)
maze[i][j]=0;
maze[25][25]=2;
srand( (unsigned)time(NULL) );
mazestruct(1,1);
for(int j=0;j<=26;j++){
for(int i=0;i<=26;i++){
if(maze[i][j]==1)printf("#");
if(maze[i][j]==0)printf(" ");
if(maze[i][j]==2)printf("6");
}
printf("\n");
}
maze[25][25]=0;
}
int movecheck(COORD k,int key){//左 75 上 72 右 77 下 80
if(key==75 && maze[k.X-1][k.Y])return 0;
if(key==72 && maze[k.X][k.Y-1])return 0;
if(key==77 && maze[k.X+1][k.Y])return 0;
if(key==80 && maze[k.X][k.Y+1])return 0;
return 1;
}
void move( COORD *k , int key ){
if(key==75)k->X--;
if(key==72)k->Y--;
if(key==77)k->X++;
if(key==80)k->Y++;
SetConsoleCursorPosition(out,*k);
printf("A");
if(k->X==25 && k->Y==25)game=1;
}
void gamerun(){
setcursor(1,1);printf("A");
COORD A={1,1};
while(1){
if(kbhit()){
int key=getch();
if( movecheck(A,key) ){
setcursor(A.X,A.Y);printf(" ");
move(&A,key);
}
}
if(game){
system("cls");
printf("你赢啦!\n 按任意键继续游戏");
char ch=getchar();
return ;
}
}
}
int main(){
while(1){
game=0;
out= GetStdHandle(STD_OUTPUT_HANDLE);
explanation();
mazemake();
gamerun();
}

}
Loading