共有回帖数  0  个 
	 
	
	
	
     
          
          
               
				
			 
				
					 
 
            
				   - 
						
						
							 
									花了我好久好久的时间,若各位能找出错误,允许不回帖! 
#include "stdio.h" 
#include "math.h" 
#include "time.h" 
void main() 
{  
  void first();  
  void second(); 
  int third();  
  time_t t; 
  int close=0; 
  char get; 
  clrscr(); 
  srand((unsigned) time(&t)); 
  for(;;) 
  { 
    clrscr(); 
    printf("24 POINTS SYSTEM v2.2n"); 
    printf("MADE BY DANTE WANGn"); 
    printf("Jul.28th 2006nn"); 
    printf("Please choose mode!nn"); 
    printf("1. Game Moden"); 
    printf("2. Count Moden"); 
    printf("3. Quitnn"); 
    get=getch(); 
    switch(get) 
    { 
      case '1': first(); break; 
      case '2': second();break; 
      case '3': close=third(); break; 
      default: printf("Please input 1, 2 or 3!n"); getch(); 
    } 
    if(close)  
      break; 
  } 
} 
void first() 
{ 
  int jdgsgn(int a,int b,int c,int d); 
  int n[4],i; 
  char ch[100],ch1[100]; 
  int check(char *p); 
  int exam2(char *p,int a,int b,int c,int d); 
  void sign(int a,int b,int c,int d); 
  double figure(char *p); 
  void draw(int *p); 
  for(;;) 
  { 
    for(i=0;i4;i++) 
    { 
      n=rand()%13+1; 
    } 
    draw(n); 
    if(!jdgsgn(n[0],n[1],n[2],n[3])) 
    { 
      printf("No answer!"); 
      getch(); 
      continue; 
    } 
    gets(ch); 
    if(!strcmp(strlwr(ch),"quit")) 
    break; 
    else 
    { 
      strcpy(ch1,ch); 
      if(!check(ch)&&!exam2(ch,n[0],n[1],n[2],n[3])&&fabs(figure(ch1)-24)=0.000001) 
      { 
printf("nGood job!n"); 
getch(); 
      } 
      else 
      { 
printf("nWrong!nnAnswer: "); 
sign(n[0],n[1],n[2],n[3]); 
getch(); 
      } 
    } 
  } 
} 
void second() 
{ 
  int n[4],i; 
  char c[4][10]; 
  int exam(char *p); 
  void sign(int a,int b,int c,int d); 
  double recog(char *p); 
  clrscr(); 
  printf("Input 0 to leave.nn"); 
  for(;;) 
  { 
    for(i=0;i4;i++) 
    { 
      scanf("%s",&c); 
      if(exam(c)) 
      { 
printf("GRAMMER ERROR!n"); 
i--; 
continue; 
      } 
      n=(int)recog(c); 
      if(n==0) 
break; 
    } 
    if(n[0]&&n[1]&&n[2]&&n[3]) 
      sign(n[0],n[1],n[2],n[3]); 
    else 
      break; 
  } 
} 
int third() 
{ 
  printf("Thanks for using this software!nn"); 
  printf("If you have any advices or suggestions,nn"); 
  printf("welcome to send email to wyc890618@163.com.nn"); 
  getch(); 
  return(1); 
} 
void sign(int a,int b,int c,int d) 
{ 
  char *change(int x); 
  double figure(char *p); 
  int i[4],n,n1,n2,n3,n4,s1,s2,s3,t,flag=0; 
  char s[4][2]={"+","-","*","/"},p[64]={0},p1[64]={0}; 
  i[0]=a; 
  i[1]=b; 
  i[2]=c; 
  i[3]=d; 
  for(n1=0;n14;n1++) 
  { 
    for(n2=0;n24;n2++) 
    { 
      if(n2==n1) 
continue; 
      for(n3=0;n34;n3++) 
      { 
if(n3==n2||n3==n1) 
  continue; 
for(n4=0;n44;n4++) 
{ 
  if(n4==n3||n4==n2||n4==n1) 
    continue; 
  for(s1=0;s14;s1++) 
  { 
    for(s2=0;s24;s2++) 
    { 
      for(s3=0;s34;s3++) 
      { 
strcat(p,change(i[n1])); 
strcat(p,s[s1]); 
strcat(p,change(i[n2])); 
strcat(p,s[s2]); 
strcat(p,change(i[n3])); 
strcat(p,s[s3]); 
strcat(p,change(i[n4])); 
strcpy(p1,p); 
if(fabs(figure(p1)-24)=0.000001) 
{ 
  printf("%sn",p); 
  flag++; 
  break; 
} 
*p=' '; 
if(s1/2==1&&(s2/2==0||s3/2==0)) 
{ 
  strcat(p,change(i[n1])); 
  strcat(p,s[s1]); 
  strcat(p,"("); 
  strcat(p,change(i[n2])); 
  strcat(p,s[s2]); 
  strcat(p,change(i[n3])); 
  strcat(p,s[s3]); 
  strcat(p,change(i[n4])); 
  strcat(p,")"); 
  strcpy(p1,p); 
  if(fabs(figure(p1)-24)=0.000001) 
  { 
    printf("%sn",p); 
    flag++; 
    break; 
  } 
  *p=' '; 
} 
if(s1/2==0&&s2/2==1) 
{ 
  strcat(p,"("); 
  strcat(p,change(i[n1])); 
  strcat(p,s[s1]); 
  strcat(p,change(i[n2])); 
  strcat(p,")"); 
  strcat(p,s[s2]); 
  strcat(p,change(i[n3])); 
  strcat(p,s[s3]); 
  strcat(p,change(i[n4])); 
  strcpy(p1,p); 
  if(fabs(figure(p1)-24)=0.000001) 
  { 
    printf("%sn",p); 
    flag++; 
    break; 
  } 
  *p=' '; 
} 
if(s2/2==0&&s1/2==1) 
{ 
  strcat(p,change(i[n1])); 
  strcat(p,s[s1]); 
  strcat(p,"("); 
  strcat(p,change(i[n2])); 
  strcat(p,s[s2]); 
  strcat(p,change(i[n3])); 
  strcat(p,")"); 
  strcat(p,s[s3]); 
  strcat(p,change(i[n4])); 
  strcpy(p1,p); 
  if(fabs(figure(p1)-24)=0.000001) 
  { 
    printf("%sn",p); 
    flag++; 
    break; 
  } 
  *p=' '; 
} 
if((s1/2==0||s2/2==0)&&s3/2==1) 
{ 
  strcat(p,"("); 
  strcat(p,change(i[n1])); 
  strcat(p,s[s1]); 
  strcat(p,change(i[n2])); 
  strcat(p,s[s2]); 
  strcat(p,change(i[n3])); 
  strcat(p,")"); 
  strcat(p,s[s3]); 
  strcat(p,change(i[n4])); 
  strcpy(p1,p); 
  if(fabs(figure(p1)-24)=0.000001) 
  { 
    printf("%sn",p); 
    flag++; 
    break; 
  } 
  *p=' '; 
} 
if(s1/2==0&&s2/2==1&&s3/2==0) 
{ 
  strcat(p,"("); 
  strcat(p,change(i[n1])); 
  strcat(p,s[s1]); 
  strcat(p,change(i[n2])); 
  strcat(p,")"); 
  strcat(p,s[s2]); 
  strcat(p,"("); 
  strcat(p,change(i[n3])); 
  strcat(p,s[s3]); 
  strcat(p,change(i[n4])); 
  strcat(p,")"); 
  strcpy(p1,p); 
  if(fabs(figure(p1)-24)=0.000001) 
  { 
    printf("%sn",p); 
    flag++; 
    break; 
  } 
  *p=' '; 
} 
      } 
      if(flag) 
break; 
    } 
    if(flag) 
      break; 
  } 
  if(flag) 
    break; 
} 
if(flag) 
  break; 
      } 
      if(flag) 
break; 
    } 
    if(flag) 
      break; 
  } 
  if(flag==0) 
  printf("No answer!n"); 
} 
char *change(int x) 
{ 
  static char a[64]; 
  char *c; 
  c=a+63; 
  *c=' '; 
  c--; 
  for(;;c--) 
  { 
    if(x=10) 
    { 
      *c=x%10+'1'-1; 
      x=x/10; 
    } 
    else 
    { 
      *c=x+'1'-1; 
      break; 
    } 
  } 
  return©; 
} 
double figure(char *p) 
{ 
  int judge(char *p); 
  int judge2(char *p); 
  void add(char *p); 
  void pick(char *p); 
  double recog(char *p); 
  char *c=p,*c1,c2[64]; 
  int sign,kuoh=0,flag2=0; 
  double result,chu; 
  add(p); 
  for(sign=0;*c!=' ';c++) 
  { 
    if(*c=='+'||*c=='-'||*c=='*'||*c=='/'||*c=='('||*c==')') 
    { 
      sign++; 
      break; 
    } 
 } 
  if(sign==0) 
    return(recog(p)); 
  else 
  { 
    c=p; 
    for(;*c!=' ';c++) 
    { 
      if(*c=='(') 
kuoh++; 
      if(*c==')') 
kuoh--; 
      if(!judge2©) 
      { 
if(*c=='+'&&kuoh==0) 
{ 
  *c=' '; 
  result=figure(p)+figure(c+1); 
  flag2++; 
  break; 
} 
if(*c=='-'&&kuoh==0) 
{ 
  *c=' '; 
  result=figure(p)-figure(c+1); 
  flag2++; 
  break; 
} 
      } 
      if(!judge©) 
      { 
if(*c=='*'&&kuoh==0) 
{ 
  *c=' '; 
  result=figure(p)*figure(c+1); 
  flag2++; 
  break; 
} 
if(*c=='/'&&kuoh==0) 
{ 
  *c=' '; 
  chu=figure(c+1); 
  if(chu==0) 
  { 
    result=99999; 
  } 
  else 
  { 
    result=figure(p)/chu; 
  } 
  flag2++; 
  break; 
} 
      } 
    } 
    if(flag2) 
      return(result+0); 
    else 
    { 
      pick(p); 
      result=figure(p); 
      return(result+0); 
    } 
  } 
} 
int judge(char *p) 
{ 
  char *c=p; 
  int kuoh=0,flag=0; 
  for(c++;*c!=' ';c++) 
  { 
    if(*c=='(') 
    kuoh++; 
    if(*c==')') 
    kuoh--; 
    if(kuoh==0&&(*c=='+'||*c=='-'||*c=='*'||*c=='/')) 
    { 
      flag++; 
      break; 
    } 
  } 
  return(flag); 
} 
int judge2(char *p) 
{ 
  char *c=p; 
  int kuoh=0,flag=0; 
  for(c++;*c!=' ';c++) 
  { 
    if(*c=='(') 
    kuoh++; 
    if(*c==')') 
    kuoh--; 
    if(kuoh==0&&(*c=='+'||*c=='-')) 
    { 
      flag++; 
      break; 
    } 
  } 
  return(flag); 
} 
void add(char *p) 
{ 
  char *c=p,b[64]; 
  int flag=0; 
  for(;*c!=' ';c++) 
  { 
    if((*c=='-'||*c=='+')&&(*(c+1)='0'&&*(c+1)='9')) 
      flag++; 
    if((*c='0'&&*c='9'||*c=='.')&&(*(c+1)=='*'||*(c+1)=='/'||*(c+1)=='+'||*(c+1)=='-')) 
    { 
      flag++; 
      break; 
    } 
    if((*c='0'&&*c='9'||*c=='.')&&*(c+1)==')') 
    { 
      break; 
    } 
  } 
  if(flag==2) 
    flag=1; 
  else 
    flag=0; 
  if(flag) 
  { 
    c=p; 
    for(;*c!=' ';c++) 
    { 
      if(*(c+1)='0'&&*(c+1)='9') 
      { 
if(*c=='+'||*c=='-') 
{ 
  strcpy(b,c); 
  *c='('; 
  strcpy(c+1,b); 
} 
break; 
      } 
    } 
    c+=2; 
    for(;*c!=' ';c++) 
    { 
      if((*c'0'||*c'9')&&*c!='.') 
      { 
strcpy(b,c); 
*c=')'; 
strcpy(c+1,b); 
break; 
      } 
    } 
  } 
} 
void pick(char *p) 
{ 
  char *c=p; 
  if(*c=='('&&*(c+strlen©-1)==')') 
  { 
    strcpy(c,c+1); 
    *(c+strlen©-1)=' '; 
  } 
} 
double recog(char *p) 
{ 
  char *c=p; 
  int flag=0,number; 
  double quan,ans=0; 
  for(;;c++) 
  { 
    if(*c=='.') 
    { 
      flag++; 
      number=c-p; 
    } 
    if(*c!='.'&&(*c'0'||*c'9')) 
      break; 
  } 
  if(flag==0) 
  { 
    for(quan=1,c--;c=p;c--,quan*=10) 
    ans+=(*c-'1'+1)*quan; 
  } 
  else 
  { 
    for(c--,quan=pow(10,number-(c-p));c=p;c--) 
    { 
      if(*c=='.') 
continue; 
      else 
      { 
ans+=(*c-'1'+1)*quan; 
quan*=10; 
      } 
    } 
  } 
  return(ans); 
} 
int exam(char *p) 
{ 
  double recog(char *p); 
  char *c=p; 
  int number=0; 
  for(;*c!=' ';c++) 
  { 
    if(*c'9'||*c'0') 
      number++; 
    if(number) 
      break; 
  } 
  if(!number) 
  { 
    if(recog(p)13||recog(p)0) 
number++; 
  } 
  return(number); 
} 
void draw(int *p) 
{ 
  time_t t; 
  int n; 
  clrscr(); 
  printf("Press "quit" to leave."); 
  srand((unsigned) time(&t)); 
  for(n=0;n4;n++) 
  { 
    gotoxy(1+7*n,3); 
    printf("xdaxc4xc4xc4xc4xbf"); 
    gotoxy(1+7*n,4); 
    printf("xb3%c   xb3",rand()%4+3); 
    gotoxy(1+7*n,5); 
    printf("xb3    xb3"); 
    gotoxy(1+7*n,6); 
    switch(*(p+n)) 
    { 
      case 1: 
printf("xb3   Axb3"); 
break; 
      case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:case 10: 
printf("xb3%4dxb3",*(p+n)); 
break; 
      case 11: 
printf("xb3   Jxb3"); 
break; 
      case 12: 
printf("xb3   Qxb3"); 
break; 
      case 13: 
printf("xb3   Kxb3"); 
    } 
    gotoxy(1+7*n,7); 
    printf("xc0xc4xc4xc4xc4xd9"); 
    gotoxy(1,9); 
  } 
} 
int jdgsgn(int a,int b,int c,int d) 
{ 
  char *change(int x); 
  double figure(char *p); 
  int i[4],n,n1,n2,n3,n4,s1,s2,s3,t,flag=0; 
  char s[4][2]={"+","-","*","/"},p[64]={0},p1[64]={0}; 
  i[0]=a; 
  i[1]=b; 
  i[2]=c; 
  i[3]=d; 
  for(n1=0;n14;n1++) 
  { 
    for(n2=0;n24;n2++) 
    { 
      if(n2==n1) 
continue; 
      for(n3=0;n34;n3++) 
      { 
if(n3==n2||n3==n1) 
  continue; 
for(n4=0;n44;n4++) 
{ 
  if(n4==n3||n4==n2||n4==n1) 
    continue; 
  for(s1=0;s14;s1++) 
  { 
    for(s2=0;s24;s2++) 
    { 
      for(s3=0;s34;s3++) 
      { 
strcat(p,change(i[n1])); 
strcat(p,s[s1]); 
strcat(p,change(i[n2])); 
strcat(p,s[s2]); 
strcat(p,change(i[n3])); 
strcat(p,s[s3]); 
strcat(p,change(i[n4])); 
strcpy(p1,p); 
if(fabs(figure(p1)-24)=0.000001) 
{ 
  flag++; 
  break; 
} 
*p=' '; 
if(s1/2==1&&(s2/2==0||s3/2==0)) 
{ 
  strcat(p,change(i[n1])); 
  strcat(p,s[s1]); 
  strcat(p,"("); 
  strcat(p,change(i[n2])); 
  strcat(p,s[s2]); 
  strcat(p,change(i[n3])); 
  strcat(p,s[s3]); 
  strcat(p,change(i[n4])); 
  strcat(p,")"); 
  strcpy(p1,p); 
  if(fabs(figure(p1)-24)=0.000001) 
  { 
    flag++; 
    break; 
  } 
  *p=' '; 
} 
if(s1/2==0&&s2/2==1) 
{ 
  strcat(p,"("); 
  strcat(p,change(i[n1])); 
  strcat(p,s[s1]); 
  strcat(p,change(i[n2])); 
  strcat(p,")"); 
  strcat(p,s[s2]); 
  strcat(p,change(i[n3])); 
  strcat(p,s[s3]); 
  strcat(p,change(i[n4])); 
  strcpy(p1,p); 
  if(fabs(figure(p1)-24)=0.000001) 
  { 
    flag++; 
    break; 
  } 
  *p=' '; 
} 
if(s2/2==0&&s1/2==1) 
{ 
  strcat(p,change(i[n1])); 
  strcat(p,s[s1]); 
  strcat(p,"("); 
  strcat(p,change(i[n2])); 
  strcat(p,s[s2]); 
  strcat(p,change(i[n3])); 
  strcat(p,")"); 
  strcat(p,s[s3]); 
  strcat(p,change(i[n4])); 
  strcpy(p1,p); 
  if(fabs(figure(p1)-24)=0.000001) 
  { 
    flag++; 
    break; 
  } 
  *p=' '; 
} 
if((s1/2==0||s2/2==0)&&s3/2==1) 
{ 
  strcat(p,"("); 
  strcat(p,change(i[n1])); 
  strcat(p,s[s1]); 
  strcat(p,change(i[n2])); 
  strcat(p,s[s2]); 
  strcat(p,change(i[n3])); 
  strcat(p,")"); 
  strcat(p,s[s3]); 
  strcat(p,change(i[n4])); 
strcpy(p1,p); 
  if(fabs(figure(p1)-24)=0.000001) 
  { 
    flag++; 
    break; 
  } 
  *p=' '; 
} 
if(s1/2==0&&s2/2==1&&s3/2==0) 
{ 
  strcat(p,"("); 
  strcat(p,change(i[n1])); 
  strcat(p,s[s1]); 
  strcat(p,change(i[n2])); 
  strcat(p,")"); 
  strcat(p,s[s2]); 
  strcat(p,"("); 
  strcat(p,change(i[n3])); 
  strcat(p,s[s3]); 
  strcat(p,change(i[n4])); 
  strcat(p,")"); 
  strcpy(p1,p); 
  if(fabs(figure(p1)-24)=0.000001) 
  { 
    flag++; 
    break; 
  } 
  *p=' '; 
} 
      } 
      if(flag) 
break; 
    } 
    if(flag) 
      break; 
  } 
  if(flag) 
    break; 
} 
if(flag) 
  break; 
      } 
      if(flag) 
break; 
    } 
    if(flag) 
      break; 
  } 
  return(flag); 
} 
int exam2(char *p,int a,int b,int c,int d) 
{ 
  double recog(char *p); 
  int number=0,num[4],flag=0,n,m; 
  num[0]=a; 
  num[1]=b; 
  num[2]=c; 
  num[3]=d; 
  for(m=0;*p!=' ';p++,m++) 
  { 
    if(*p='0'&&*p='9'&&(*(p+1)'9'||*(p+1)'0')) 
      number++; 
    if(m0&&*p='0'&&*p='9'&&*(p-1)='0'&&*(p-1)='9') 
      continue; 
    if(*p='9'&&*p='0') 
    { 
      if(recog(p)13||recog(p)1) 
      { 
flag++; 
break; 
      } 
      else 
      { 
for(n=0;n4;n++) 
{ 
  if(recog(p)==num[n]) 
  { 
    num[n]=0; 
    break; 
  } 
} 
      } 
    } 
  } 
  if(!flag) 
  { 
    if(number!=4) 
      flag++; 
    else 
      if(num[1]||num[2]||num[3]||num[0]) 
flag++; 
  } 
  return(flag); 
} 
int check(char *p) 
{ 
  int kuoh=0,flag=0; 
  for(;*p!=' ';p++) 
  { 
    if(*p==' ') 
    { 
      flag++; 
      break; 
    } 
    if(kuoh0) 
    { 
      flag++; 
      break; 
    } 
    if(*p=='(') 
      kuoh++; 
    if(*p==')') 
      kuoh--; 
    if((*p=='+'||*p=='-'||*p=='*'||*p=='/')&&(*(p+1)=='*'||*(p+1)=='/'||*(p+1)=='+'||*(p+1)=='-')) 
    { 
      flag++; 
      break; 
    } 
    if(*p=='('&&(*(p+1)'9'||*(p+1)'0'&&*(p+1)!='-')) 
    { 
      flag++; 
      break; 
    } 
    if(*p==')'&&*(p+1)!='+'&&*(p+1)!='-'&&*(p+1)!='*'&&*(p+1)!='/'&&*(p+1)!=' ') 
    { 
      flag++; 
      break; 
    } 
  } 
  if(!flag) 
  { 
    if(kuoh!=0) 
      flag++; 
  } 
  return(flag); 
}
由于百度会将特定的字符组进行转换,比如,自动将“(c)”转换为©,请大家自行改正。 
可利用记事本替换功能。 
给大家带来的不便,请多包涵~~~��
							 
							 
							 
							  
							  
							  楼主 2016-03-03 17:14 回复
						 
						 
           
          
          
         
   
         
      
 
   
             
                  
                  
 
 
 
     
	 
  
	Copyright © 2010~2015 直线网 版权所有,All Rights Reserved.沪ICP备10039589号
	
	意见反馈 | 
	关于直线 | 
	版权声明 | 
	会员须知