24点游戏源码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>

#define N 5

typedef struct 
{
	int elem[50];
	int top;
}seqstack;

unsigned char pri[7][7] = {     
      '>','>','<','<','<','>','>',
	  '>','>','<','<','<','>','>',
	  '>','>','>','>','<','>','>',
	  '>','>','>','>','<','>','>',	
	  '<','<','<','<','<','=',' ',
	  '>','>','>','>',' ','>','>',
	  '<','<','<','<','<',' ','='
};

char operator_arr[8]={'+' , '-' , '*' , '/' ,'(' , ')' , '#'};
unsigned int operator_int[7] = {43,45,42,47,40,41,35};
char retchar;
int rad_num[4];
int *p;
int arr_len;

void stack_init(seqstack *s)
{
	s->top = -1;
}

int stack_pop(seqstack *s,int *x)
{
	if(s->top == -1) //栈已空
	{
		return -1;
	}

	*x = s->elem[s->top];
	s->top--;
	return 0;
}

int stack_push(seqstack *s,int x)
{
	if(s->top == 49) //栈已满
	{
		return -1;
	}

	s->top++;
	s->elem[s->top] = x;
	return 0;
}

int get_stack_top(seqstack *s)
{
	if(s->top == -1) //栈已空
	{
		return -1;
	}
    
	return s->elem[s->top];
}

int counter(int num1,int operat,int num2)
{
	if(operat == 43)
	{
		return num1+num2;
	}
	else if(operat == 45)
	{
		return num1-num2;
	}
	else if(operat == 42)
	{
		return num1*num2;
	}
	else if(operat == 47)
	{
		if(num2 == 0)
		{
			return num1;
		}
		return num1/num2;
	}
	else
	{
		return 0;
	}
}

char priority(char a,char b)
{
	int i,j;
	int pos1,pos2;

	for(i=0;i<7;i++)
	{
		if(a == operator_arr[i])
		{
			pos1 = i;
		}
	}

	for(j=0;j<7;j++)
	{
		if(b == operator_arr[j])
		{
			pos2 = j;
		}
	}
	retchar = pri[pos1][pos2];
	if((pos1==4&&pos2==6)||(pos1==6&&pos2==5))
	{
		printf("pos1=%d,pos2=%d\n",pos1,pos2);
	}
	return retchar;
}


//计算表达式的值
int calc_expr_int(int arr[])
{
	int i=0,ret,tmp;
	int opera,num1,num2;
	char pri;
	seqstack  stack_char;    
    seqstack  stack_num;   

    stack_init(&stack_char);
    stack_push(&stack_char, 35);
    stack_init(&stack_num);

    tmp=arr[i];

    while (tmp!= 35 || get_stack_top(&stack_char)!=35)
	{	
		if((arr[i]>=40&&arr[i]<=43) || arr[i]==45 ||arr[i]==47||arr[i]==35)
		{		
			 pri = priority(get_stack_top(&stack_char), tmp);

			 if(pri == '=')
			 {
				stack_pop(&stack_char, &tmp);    				 
			    i++;
			    tmp=arr[i];								 					  
			 }
			 else if(pri == '<')
			 {
				stack_push(&stack_char,tmp);  				 
			    i++;
				tmp=arr[i];								 					  
			 }
			 else if(pri == '>')
			 {	
			 	//无需从表达式中取出下一个值
				stack_pop(&stack_char, &opera);
   	            stack_pop(&stack_num, &num2);  
   	            stack_pop(&stack_num, &num1);
   	            stack_push(&stack_num, counter(num1, opera,num2)); 		
			 }
			 else
			 {
				printf("%c\n",pri);
	 		    printf("运算符有问题\n");
				return 0;	
			 }
		}
	    else  
		{		// 不是运算符则进栈
	            stack_push(&stack_num,tmp);
	 		    i++;
			    tmp=arr[i];		 
	    } 		 
    }
     ret=get_stack_top(&stack_num);
     return ret;
}

//随机产生四个数字
void random_num()
{
	int tmp;
	int i;
	for(i=0;i<4;i++)
	{
		tmp = rand();
		tmp = tmp % 13 + 1;
		rad_num[i] = tmp;
	}
}


//将用户输入的字符型表达式转化为整形存放到数组中
int* str_to_int(char *str,int *ilen)
{
	int len,num1,num2,num;
	int j=0,flag = 0;
	unsigned k;
	int i;
	len = strlen(str);
	p = (int *)malloc(sizeof(int)*len+1);

	for(k=0;k<strlen(str);k++)
	{
		if(str[k]>47&&str[k]<58&&flag==0)//字符0-9转换成整数0-9
	    {
			num1=(int)str[k]-48;
			flag++;
		}
		else if(str[k]>47&&str[k]<58&&flag==1)//输入的字符可能是10-13所以用t=1表示这是在处理个位数
	    {
			num2=(int)str[k]-48;
			num=num1*10+num2;
			flag++;
        }
		else if((str[k]>=40&&str[k]<=43) || str[k]==35 || str[k]==45 ||str[k]==47) 
        {
			if(flag==1)//将0-9插入数组
			{
                p[j] = num1;
				j++;
			}
			else if(flag==2)  //将10-13插入数组
			{
				p[j] = num;
				j++;
			}
			//将字符插入数组
     		p[j] = str[k];
			j++;
            flag=0;
		}
		else 
		{
			printf("%c是错误的字符!\n",str[k]);
		}
	}   

	//因为前面是遇到运算符才将数字插入数组,所以还剩最后一个整数没插入
	i=strlen(str)-1;
	if(str[i]>47&&str[i]<58)
	{
		if(str[i-1]>47&&str[i-1]<58)
		{
		       p[j] = num;
			   j++;
	    }
		else 
		{
			p[j] = num1;
			j++;
		}
	}

	p[j]=35;
	*ilen = j;
	return p;
   }	

//(a (b c)) d
int express_1(int *exp)
{
	int expr[12];
	int p,q,m,n;
	int i,j,k;
	int a,ret;
	
	for(m=0;m<4;m++)
	{
		for(n=0;n<4;n++)
		{	
				if(n==m)
				{
					continue;
				}
				for(p=0;p<4;p++)
				{	
					if(p==n||p==m)
					{
						continue;
					}
					for(q=0;q<4;q++)
					{
						if(q==p||q==m||q==n)
						{
							continue;
						}
						
						expr[1] = exp[m];
						expr[4] = exp[n];
						expr[6] = exp[p];
						expr[10] = exp[q];
						for(i=0;i<4;i++)
						{
							for(j=0;j<4;j++)
							{
								for(k=0;k<4;k++)
								{
									expr[2]  = operator_int[i];
									expr[5]  = operator_int[j];
									expr[9]  = operator_int[k];

									expr[0]  = operator_int[4];
									expr[8]  = operator_int[5];
									expr[3]  = operator_int[4];
									expr[7]  = operator_int[5];
									expr[11] = operator_int[6];

									ret  = calc_expr_int(expr);
									if( ret == 24)
									{	
										printf("可以计算出结果为24的表达式为:");
										for(a=0;a<11;a++)
										{	
											if(expr[a]<=39||expr[a]>57||expr[a]==44||expr[a]==46)
											{
												printf("%d",expr[a]);
											}
											else
											{
												printf("%c",expr[a]);
											}
										}
										printf("\n");
										return 1;
									}
								}
							}
						}
						
					}
				}
		}
	}
	
	return 0;
}

//((a b) c) d
int express_2(int *exp)
{
	int expr[12];
	int p,q,m,n;
	int i,j,k;
	int a;
	for(m=0;m<4;m++)
	{
		for(n=0;n<4;n++)
		{	
				if(n==m)
				{
					continue;
				}
				for(p=0;p<4;p++)
				{	
					if(p==n||p==m)
					{
						continue;
					}
					for(q=0;q<4;q++)
					{
						if(q==p||q==m||q==n)
						{
							continue;
						}
						
						expr[2]  = exp[q];
						expr[4]  = exp[p];
						expr[7]  = exp[n];
						expr[10] = exp[m];
						
						for(i=0;i<4;i++)
						{
							for(j=0;j<4;j++)
							{
								for(k=0;k<4;k++)
								{
									expr[3]  = operator_int[k];
									expr[6]  = operator_int[j];
									expr[9]  = operator_int[i];
									expr[0]  = operator_int[4];
									expr[8]  = operator_int[5];
									expr[1]  = operator_int[4];
									expr[5]  = operator_int[5];
									expr[11] = operator_int[6];
									if(calc_expr_int(expr) == 24)
									{
										printf("可以计算出结果为24的表达式为:");
										for(a=0;a<11;a++)
										{	
											if(expr[a]<=39||expr[a]>57||expr[a]==44||expr[a]==46)
											{
												printf("%d",expr[a]);
											}
											else
											{
												printf("%c",expr[a]);
											}
										}
										printf("\n");
										return 1;
									}
								}
							}
						}
						
					}
				}
		}
	}
	//printf("2222\n");
	return 0;
}

//a (b c) d
int express_3(int *exp)
{
	int expr[10];
	int p,q,m,n;
	int i,j,k;
	int a;
	for(m=0;m<4;m++)
	{
		for(n=0;n<4;n++)
		{	
				if(n==m)
				{
					continue;
				}
				for(p=0;p<4;p++)
				{	
					if(p==n||p==m)
					{
						continue;
					}
					for(q=0;q<4;q++)
					{
						if(q==p||q==m||q==n)
						{
							continue;
						}
						
						expr[0] = exp[q];		
						expr[3] = exp[p];
						expr[5] = exp[n];				
						expr[8] = exp[m];
						
						for(i=0;i<4;i++)
						{
							for(j=0;j<4;j++)
							{
								for(k=0;k<4;k++)
								{
									expr[1] = operator_int[k];
									expr[4] = operator_int[j];
									expr[7] = operator_int[i];

									expr[2] = operator_int[4];
									expr[6] = operator_int[5];
									expr[9] = operator_int[6];

									if(calc_expr_int(expr) == 24)
									{
										printf("可以计算出结果为24的表达式为:");
										for(a=0;a<9;a++)
										{	
											if(expr[a]<=39||expr[a]>57||expr[a]==44||expr[a]==46)
											{
												printf("%d",expr[a]);
											}
											else
											{
												printf("%c",expr[a]);
											}
										}
										printf("\n");
										return 1;
									}
								}
							}
						}
						
					}
				}
		}
	}
	//printf("3333\n");
	return 0;
}

//(a b) (c d)
int express_4(int *exp)
{
	int expr[12];
	int p,q,m,n;
	int i,j,k;
	int a;
	for(m=0;m<4;m++)
	{
		for(n=0;n<4;n++)
		{	
				if(n==m)
				{
					continue;
				}
				for(p=0;p<4;p++)
				{	
					if(p==n||p==m)
					{
						continue;
					}
					for(q=0;q<4;q++)
					{
						if(q==p||q==m||q==n)
						{
							continue;
						}
						
						expr[1] = exp[q];
						expr[3] = exp[p];
						expr[7] = exp[n];
						expr[9] = exp[m];

						
						for(i=0;i<4;i++)
						{
							for(j=0;j<4;j++)
							{
								for(k=0;k<4;k++)
								{
									expr[2] = operator_int[k];
									expr[5] = operator_int[j];
									expr[8] = operator_int[i];

									expr[0]  = operator_int[4];
									expr[4]  = operator_int[5];
									expr[6]  = operator_int[4];
									expr[10] = operator_int[5];
									expr[11] = operator_int[6];
									
									if(calc_expr_int(expr) == 24)
									{
										printf("可以计算出结果为24的表达式为:");
										for(a=0;a<11;a++)
										{	
											if(expr[a]<=39||expr[a]>57||expr[a]==44||expr[a]==46)
											{
												printf("%d",expr[a]);
											}
											else
											{
												printf("%c",expr[a]);
											}
										}
										printf("\n");
										return 1;
									}
								}
							}
						}
						
					}
				}
		}
	}
//	printf("4444\n");
	return 0;
}


//a*b*c*d
int express_5(int *exp)
{
	int expr[8];
	int p,q,m,n;
	int i,j,k;
	int a;
	for(m=0;m<4;m++)
	{
		for(n=0;n<4;n++)
		{	
				if(n==m)
				{
					continue;
				}
				for(p=0;p<4;p++)
				{	
					if(p==n||p==m)
					{
						continue;
					}
					for(q=0;q<4;q++)
					{
						if(q==p||q==m||q==n)
						{
							continue;
						}
						
						expr[0] = exp[q];
						expr[2] = exp[p];
						expr[4] = exp[n];
						expr[6] = exp[m];
						
						for(i=0;i<4;i++)
						{
							for(j=0;j<4;j++)
							{
								for(k=0;k<4;k++)
								{
									expr[1] = operator_int[k];
									expr[3] = operator_int[j];
									expr[5] = operator_int[i];
									expr[7] = operator_int[6];
									if(calc_expr_int(expr) == 24)
									{
										printf("可以计算出结果为24的表达式为:");
										for(a=0;a<7;a++)
										{	
											if(expr[a]<=39||expr[a]>57||expr[a]==44||expr[a]==46)
											{
												printf("%d",expr[a]);
											}
											else
											{
												printf("%c",expr[a]);
											}
										}
										printf("\n");
										return 1;
									}
								}
							}
						}
						
					}
				}
		}
	}
	//printf("5555\n");
	return 0;
}

//(a b c) d
int express_6(int *exp)
{
	int expr[10];
	int p,q,m,n;
	int i,j,k;
	int a;
	for(m=0;m<4;m++)
	{
		for(n=0;n<4;n++)
		{	
				if(n==m)
				{
					continue;
				}
				for(p=0;p<4;p++)
				{	
					if(p==n||p==m)
					{
						continue;
					}
					for(q=0;q<4;q++)
					{
						if(q==p||q==m||q==n)
						{
							continue;
						}
						
						expr[1] = exp[q];
						expr[3] = exp[p];
						expr[5] = exp[n];
						expr[8] = exp[m];

						
						for(i=0;i<4;i++)
						{
							for(j=0;j<4;j++)
							{
								for(k=0;k<4;k++)
								{
									expr[2] = operator_int[k];
									expr[4] = operator_int[j];
									expr[7] = operator_int[i];									
									expr[0] = operator_int[4];
									expr[6] = operator_int[5];
									expr[9] = operator_int[6];
									if(calc_expr_int(expr) == 24)
									{
										printf("可以计算出结果为24的表达式为:");
										for(a=0;a<9;a++)
										{	
											if(expr[a]<=39||expr[a]>57||expr[a]==44||expr[a]==46)
											{
												printf("%d",expr[a]);
											}
											else
											{
												printf("%c",expr[a]);
											}
										}
										printf("\n");
										return 1;
									}
								}
							}
						}
						
					}
				}
		}
	}
//	printf("6666\n");
	return 0;
}


//(a b) c d
int express_7(int *exp)
{
	int expr[10];
	int p,q,m,n;
	int i,j,k;
	int a;
	for(m=0;m<4;m++)
	{
		for(n=0;n<4;n++)
		{	
				if(n==m)
				{
					continue;
				}
				for(p=0;p<4;p++)
				{	
					if(p==n||p==m)
					{
						continue;
					}
					for(q=0;q<4;q++)
					{
						if(q==p||q==m||q==n)
						{
							continue;
						}
						
						expr[1] = exp[q];
						expr[3] = exp[p];
						expr[6] = exp[n];
						expr[8] = exp[m];

						
						for(i=0;i<4;i++)
						{
							for(j=0;j<4;j++)
							{
								for(k=0;k<4;k++)
								{
									expr[2] = operator_int[k];
									expr[5] = operator_int[j];
									expr[7] = operator_int[i];
									
									expr[0] = operator_int[4];
									expr[4] = operator_int[5];
									expr[9] = operator_int[6];
									if(calc_expr_int(expr) == 24)
									{
										printf("可以计算出结果为24的表达式为:");
										for(a=0;a<9;a++)
										{	
											if(expr[a]<=39||expr[a]>57||expr[a]==44||expr[a]==46)
											{
												printf("%d",expr[a]);
											}
											else
											{
												printf("%c",expr[a]);
											}
										}
										printf("\n\n");
										return 1;
									}
								}
							}
						}
						
					}
				}
		}
	}
	//printf("7777\n");
	return 0;
}

int calculation24(int *arr)
{
	if(express_1(arr)) 
	{
		return 1;
	}
	else if(express_2(arr))
	{
		return 1;
	}
	else if(express_3(arr))
	{
		return 1;
	}
	else if(express_4(arr))
	{
		return 1;
	}
	else if(express_5(arr))
	{
		return 1;
	}
	else if(express_6(arr))
	{
		return 1;
	}
	else if(express_7(arr))
	{
		return 1;
	}
	else
	{
		return 0;
	}
}

/*对用户输入的表达式进行检测
1.输入的数字可能不是给出的四位数字
2.输入错误的运算符
3.重复使用给出的某个数字
*/
int check_num(char *arr)
{	
	int i,j,k;
	int *iarr;
	int tmp[4];
	//解决第三个问题
	for(k=0;k<4;k++)
	{
		tmp[k] = rad_num[k];
	}

	iarr = str_to_int(arr,&arr_len);
//	printf("%d\n",arr_len);
	for(i=0;i<arr_len;i++)
	{	
		if((iarr[i]>=0&&iarr[i]<=13)||(iarr[i]>=40&&iarr[i]<=43) || iarr[i]==35 || iarr[i]==45 ||iarr[i]==47)
		{	
			if(iarr[i]>=0&&iarr[i]<=13)
			{
				for(j=0;j<4;j++)
				{
					if(iarr[i] == tmp[j])
					{	
						tmp[j] = -1;//使用tmp数组作为标记,如果不能全部清零证明重复使用给出的某个数字
						break;
					}
				}
				if(j>=4)
				{
					//printf("你的表达式含有错误的字符\n");
					return 0;
				}
			}
			else
			{
				for(j=0;j<7;j++)
				{
					if(iarr[i] == operator_int[j])
					{
						break;
					}	
				}
				if(j>=7)
				{
					//printf("的表达式含有错误的字符\n");
					return 0;
				}
			}
		}
		else
		{	
			//printf("输入表达式有错误!!!\n");
			return 0;
		}
	}

	for(k=0;k<4;k++)
	{
		if(tmp[k] > 0)
		{
			return 0;
		}
	}
	return 1;
}

//enter函数
void enter(int x)
{
	for(int i=0;i<x;i++)
		printf("\n");
}
//tab函数
void tab(int x)
{
	for(int i=0;i<x;i++)
		printf("\t");
}


void start()
{
	system("cls");
	int kk,i;
	for(kk=0;kk<2;kk++)
	{
			system("color B");
			
			enter(7);
			tab(3);
			printf("      24点游戏      ");
			enter(2);
			tab(3);
			printf("  ■");
			enter(1);
			tab(4);
			for(i=0;i<100000000;i++)
			{}
			system("cls");					//circle 1 end
			
			enter(7);
			tab(3);
			printf("      24点游戏      ");
			enter(2);
			tab(3);
			printf("   ■");
			enter(1);
			tab(4);
			for(i=0;i<100000000;i++)
			{}
			system("cls");					//circle 2 end
			
			enter(7);
			tab(3);
			printf("      24点游戏      ");
			enter(2);
			tab(3);
			printf("    ■");
			enter(1);
			tab(4);
			for(i=0;i<100000000;i++)
			{}
			system("cls");					//circle 3 end		
			
			enter(7);
			tab(3);
			printf("      24点游戏      ");
			enter(2);
			tab(3);
			printf("     ■");
			enter(1);
			tab(4);			
			for(i=0;i<100000000;i++)
			{}
			system("cls");					//circle 4 end
			
			enter(7);
			tab(3);
			printf("      24点游戏      ");
			enter(2);
			tab(3);
			printf("      ■");
			enter(1);
			tab(4);
			for(i=0;i<100000000;i++)
			{}
			system("cls");					//circle 5 end
			
			enter(7);
			tab(3);
			printf("      24点游戏      ");
			enter(2);
			tab(3);
			printf("       ■");
			enter(1);
			tab(4);
			for(i=0;i<100000000;i++)
			{}
			system("cls");					//circle 6 end
			
			enter(7);
			tab(3);
			printf("      24点游戏      ");
			enter(2);
			tab(3);
			printf("        ■");
			enter(1);
			tab(4);
			for(i=0;i<100000000;i++)
			{}
			system("cls");					//circle 7 end
			
			enter(7);
			tab(3);
			printf("      24点游戏      ");
			enter(2);
			tab(3);
			printf("         ■");
			enter(1);
			tab(4);
			for(i=0;i<100000000;i++)
			{}
			system("cls");					//circle 8 end
			
			enter(7);
			tab(3);
			printf("      24点游戏      ");
			enter(2);
			tab(3);
			printf("          ■");
			enter(1);
			tab(4);
			for(i=0;i<100000000;i++)
			{}
			system("cls");					//circle 9 end

			enter(7);
			tab(3);
			printf("      24点游戏      ");
			enter(2);
			tab(3);
			printf("           ■");
			enter(1);
			tab(4);
			for(i=0;i<100000000;i++)
			{}
			system("cls");					//circle 9 end

			enter(7);
			tab(3);
			printf("      24点游戏      ");
			enter(2);
			tab(3);
			printf("            ■");
			enter(1);
			tab(4);
			for(i=0;i<100000000;i++)
			{}
			system("cls");					//circle 9 end

			enter(7);
			tab(3);
			printf("      24点游戏      ");
			enter(2);
			tab(3);
			printf("             ■");
			enter(1);
			tab(4);
			for(i=0;i<100000000;i++)
			{}
			system("cls");					//circle 9 end

			enter(7);
			tab(3);
			printf("      24点游戏      ");
			enter(2);
			tab(3);
			printf("              ■");
			enter(1);
			tab(4);
			for(i=0;i<100000000;i++)
			{}
			system("cls");					//circle 9 end
	}
}


char name[20] = "wuzhaowen";
char password[20] = "123456";

void login()
{	
	char count[20];
	char pass[20];
	int i;
	while(1)
	{	
		//int flag = 0;
		system("cls");
		enter(7);
		tab(3);
		printf("             游戏账号登录      ");
		enter(2);
		tab(4);
		printf("Count:");
		scanf("%s",count);

		if(strcmp(count,name)==0)
		{
			//flag = 1;
leap:		system("cls");
			enter(7);
			tab(3);
			printf("             游戏账号登录      ");
			enter(2);
			tab(4);
			printf("Password:");
			scanf("%s",pass);
			getchar();
			if(strcmp(pass,password) == 0)
			{	
				break;
			}
			else
			{		
				tab(4);
				printf("Your password is error! try again!\n");
				for(i=0;i<500000000;i++);
				goto leap;
			}
		}
		else
		{
			tab(4);
			printf("Your password is error! try again!\n");
			for(i=0;i<500000000;i++);
		}
	}
}

int main()
{	
	char c,q;
	int y_n = 1;
	int curr_mode = 1;
	int mode = 1;
	int right_count = 0;
	int all_count = 0;
	char express[50];
	int quit = 0;
	
	start();
	
	login();
	
	

	while(!quit)
	{	
		system("cls");
		printf("          **************************************************\n");
		printf("          *[0]:游戏给你四个数字,你输入正确表达式!         *\n");
		printf("          *[1]:输入你喜欢的数字,让程序来计算符合的表达式! *\n");
		printf("          *[2]:游戏退出!                                   *\n");
		printf("          **************************************************\n");
		printf("\n\n\n");
		printf("你想怎么玩?请你选择:");
		c = getchar();
		//printf("c=%c\n",c);
		getchar();
		printf("\n");

		system("cls");

		if(c == '0')
		{	
			curr_mode = 1;
			while(curr_mode)
			{	
				random_num();
				printf("游戏给你的4个数字为:%d %d %d %d\n",rad_num[0],rad_num[1],rad_num[2],rad_num[3]);
				printf("请你输入正确的表达式,如果你认为给出的数字不能构建结果为24的表达式请输入'?'\n");
				printf(":");
				scanf("%s",express);
				getchar();
				if(strcmp("?",express) == 0)
				{	
					system("cls");
					if(calculation24(rad_num))
					{
						all_count++;
						printf("不好意思,给出的数字是能够计算出24的!  o(︶︿︶)o唉\n\n");
					}
					else
					{	
						printf("恭喜,你答对了!   o(≧v≦)o~~好棒\n\n");
						all_count++;
						right_count++;
					}
				}
				else
				{	
					while(!check_num(express))
					{
						printf("你的表达式格式不正确,请重新输入:");
						scanf("%s",express);
						getchar();
					}
					printf("\n");
					system("cls");
					if(calc_expr_int(str_to_int(express,&arr_len)) != 24)
					{
						all_count++;
						printf("不好意思,你答错了!你的表达式不能算出24!!!  o(︶︿︶)o唉\n\n");
					}
					else
					{	
						printf("恭喜,你答对了!   o(≧v≦)o~~好棒\n\n");
						all_count++;
						right_count++;
					}
				}

				printf("请问,你还想在此模式下玩下去吗?(Y|N):");
				//printf("\n");
				y_n = 1;
				while(y_n)
				{	
					q = getchar();
					getchar();
					if(q == 'y'|| q == 'Y')
					{
						curr_mode = 1;
						y_n = 0;
						printf("\n");

					}
					else if(q == 'N' || q == 'n')
					{
						curr_mode = 0;
						y_n = 0;
						printf("\n");
					}
					else
					{	
						printf("\n");
						printf("输入错误,请重新输入[Y|N]:");
						y_n = 1;
					}
				}
			}
			printf("请问你是想继续玩游戏[Y],还是想退出[N]?(Y|N):");
			y_n = 1;
			while(y_n)
			{	
				scanf("%c",&c);
				getchar();
				
				if(c == 'Y'||c == 'y')
				{
					quit = 0;
					y_n = 0;
					printf("\n");
				}
				else if(c == 'N' || c == 'n')
				{	
					quit = 1;
					y_n  = 0;
					printf("\n");
					printf("\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t************\n");
					printf("\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t*  答题:%d  *\n",all_count);
					printf("\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t*  答对:%d  *\n",right_count);
					printf("\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t************\n");
					printf("\t\t\t\t游戏退出成功!!!\n\n\n\n\n");
				}
				else
				{	
					printf("\n");
					printf("输入错误,请选择:");
					y_n = 1;
				}
			}
		}
		
		else if(c == '1')
		{	
			int ret;
			mode = 1;
			while(mode == 1)
			{
				printf("请输入0-13之间的4个数字:");
				scanf("%d%d%d%d",&rad_num[0],&rad_num[1],&rad_num[2],&rad_num[3]);
				getchar();

				while(rad_num[0] > 13 || rad_num[0] < 0 || rad_num[1] > 13 || rad_num[1] < 0 ||rad_num[2] > 13 || rad_num[2] < 0 || rad_num[3] > 13 || rad_num[3] < 0)
				{
					printf("不好意思,你输入的每一个数字必须为0-13之间,重新输入:");
					scanf("%d%d%d%d",&rad_num[0],&rad_num[1],&rad_num[2],&rad_num[3]);
					getchar();
				}
				
				system("cls");
				ret = calculation24(rad_num);
				if(ret == 0)
				{	
					all_count++;
					printf("错误!你输入的数字不能构造一个值为24的表达式!  o(︶︿︶)o唉\n\n");
					printf("\n");
				}
				else
				{	
					printf("恭喜,你答对了!   o(≧v≦)o~~好棒\n\n");
					all_count++;
					right_count++;
				}

				printf("请问,你还想在此模式下玩下去吗?(Y|N):");
				y_n = 1;
				while(y_n)
				{	
					scanf("%c",&q);
					getchar();
					//printf("q=%c\n",q);
					if(q == 'y'|| q == 'Y')
					{
						mode = 1;
						y_n = 0;
						printf("\n");

					}
					else if(q == 'N' || q == 'n')
					{
						mode = 0;
						y_n = 0;
						printf("\n");
					}
					else
					{	
						printf("\n");
						printf("输入错误,请重新输入[Y|N]:");
						y_n = 1;
					}
				}
			}
			printf("请问你是想继续玩游戏[Y],还是想退出[N]?(Y/N):");
			
			y_n = 1;
			while(y_n)
			{	
				scanf("%c",&c);
				getchar();
				//system("cls");
				if(c == 'Y'||c == 'y')
				{
					quit = 0;
					y_n = 0;
					printf("\n");
				}
				else if(c == 'N' || c == 'n')
				{	
					quit = 1;
					y_n  = 0;
					printf("\n");
					printf("\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t************\n");
					printf("\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t*  答题:%d  *\n",all_count);
					printf("\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t*  答对:%d  *\n",right_count);
					printf("\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t************\n");
					printf("\t\t\t\t游戏退出成功!!!\n\n\n\n\n");
				}
				else
				{	
					printf("\n");
					printf("输入错误,请选择:");
					y_n = 1;
				}
			}
		}
		else
		{	
			quit = 1;
			printf("\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t************\n");
			printf("\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t*  答题:%d  *\n",all_count);
			printf("\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t*  答对:%d  *\n",right_count);
			printf("\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t************\n");
			printf("\t\t\t\t游戏退出成功!!!\n\n\n\n\n");
			return 0;
		}
	}
	return 0;
}

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值