24点1.0制作方案与代码

mac2022-06-30  24

今天,我给大家带来一个24点的代码: 首先是初始化:

#include<cstdio> #include<cstring> #include<algorithm> #include<iostream> #include<ctime> #include<cstdlib> #define random(x) (rand()%x) int a[6];int k=0;

然后我们学要打两个函数来进行数据的出现:

bool dfs(int x,int y,int z) { int s=a[1]; if(x==1) s=s+a[2]; if(x==2) s=s-a[2]; if(x==3) s=s*a[2]; if(y==1) s=s+a[3]; if(y==2) s=s-a[3]; if(y==3) s=s*a[3]; if(z==1) s=s+a[4]; if(z==2) s=s-a[4]; if(z==3) s=s*a[4]; if(s==24) return true; else return false; } bool bk=false; void shuju() { a[1]=random(13);a[2]=random(13);a[3]=random(13);a[4]=random(13); for(int i=1;i<=3;i++) { for(int j=1;j<=3;j++) { for(int l=1;l<=3;l++) { if(dfs(i,j,l)==true) bk=true; } } } if(bk==true) { for(int i=1;i<=4;i++) printf("%d ",a[i]); } else shuju(); }

接下来就是主函数(中间要给玩家进行适当的领导):

int main() { printf("Weilcome to the 24points\n"); while(1) { memset(a,0,sizeof(a)); int b=random(2); printf("Now give your four numbers:\n"); if(b==2) { for(int i=1;i<=4;i++) printf("%d ",random(13)); } else shuju(); int ans=0; printf("\n"); printf("You can use these are +,-,*\n"); printf("Whatever the symbol, the operation is fixed from left to right\n"); printf("When you think that these four numbers may not be able to come t ogether 24, you can enter N\n"); printf("Now give me your answer.Please.\n"); char s[9];scanf("%s",s+1); int len=strlen(s+1); s[0]='+'; for(int i=0;i<=len;i++) { if(s[i+1]>='0' && s[i+1]<='13' && s[i]!='+' && s[i]!='*' && s[i]!='-') { if(s[i-1]=='+') ans+=(s[i]-'0')*10; if(s[i-1]=='-') ans-=(s[i]-'0')*10; if(s[i-1]=='*') ans*=(s[i]-'0')*10; if(s[i-1]=='/') ans/=(s[i]-'0')*10; s[i+1]='Z'; } else { if(s[i-1]=='+') ans+=(s[i]-'0'); if(s[i-1]=='-') ans-=(s[i]-'0'); if(s[i-1]=='*') ans*=(s[i]-'0'); if(s[i-1]=='/') ans/=(s[i]-'0'); } } if(s[len]=='N') printf("Oh,you're right\n"); if(ans==24) printf("Oh,you're right\n"); else printf("Sorry,your answer is wrong\n"); } }

代码简单易懂,但也想了几天,所以也不算简单。 个人想在这个发文章之后,开始从c++零基础的一些题一道一道的讲给一些刚开始学c++语言的人。 最后如果你认为代码哪里可以望完善更好,欢迎在评论区里提出!

最新回复(0)