CHECK_IF_int.C
上传用户:janny_wxd
上传日期:2010-02-03
资源大小:261k
文件大小:20k
源码类别:

控制台编程

开发平台:

C/C++

  1. #include<stdio.h>
  2. #include<string.h>
  3. #include<stdlib.h>
  4. //#include<time.h>
  5. #define MAX 13
  6. #define OK 1
  7. #define TRUE 1
  8. #define FALSE 0
  9. #define ERROR 0
  10. #define OVERFLOW -2
  11. #define OPSETSIZE 7
  12. #define STACK_INIF_SIZE 50
  13. #define STACKINCREMENT 10
  14. typedef int status;
  15. typedef struct sqstack{
  16. int *base;
  17. int *top;
  18. int stacksize;
  19. }sqstack;
  20. unsigned char Prior[7][7] = {     // 表3.1  算符间的优先关系
  21.      '>','>','<','<','<','>','>',
  22.   '>','>','<','<','<','>','>',
  23.   '>','>','>','>','<','>','>',
  24.   '>','>','>','>','<','>','>',
  25.   '<','<','<','<','<','=',' ',
  26.   '>','>','>','>',' ','>','>',
  27.   '<','<','<','<','<',' ','='
  28. };
  29. char OPSET[OPSETSIZE]={'+' , '-' , '*' , '/' ,'(' , ')' , '#'};
  30. int number[2][4]={2,2,1,6};
  31. enum
  32. {
  33. eNumber = 0, //操作数
  34. eOperator = 1 //算子
  35. };
  36.  /*enum MyOP
  37. {
  38. eAdd = 43,
  39. eSub = 45,
  40. eMulti = 42,
  41. eDiv = 47,
  42. eLeftParen = 40,
  43. eRightParen = 41,
  44. head_end = 35
  45. };*/
  46. int oper[7]={43,45,42,47,40,41,35};
  47.  int Operate(int a,int theta, int b) {
  48. // printf("a=%d,theta=%c,b=%dn",a,theta,b);
  49. // int max,min;
  50.  switch(theta) {
  51.       case 43: return a+b;
  52.       case 45: return a-b;
  53.       case 42: return a*b;
  54.       case 47:
  55.   {if(b==0){
  56.   printf("除数不能为0!n");
  57.   exit(ERROR);
  58.   }
  59.   if (a%b==0){
  60.   return a/b;
  61.   }
  62.   else {
  63.   //printf("不能为小数n");
  64.   return -1;
  65.  // exit(0);
  66.   }
  67.   }
  68.       default : return 0;
  69.    } 
  70. }
  71. int ReturnOpOrd(char op,char* TestOp) {
  72.    int i;
  73.    for(i=0; i< OPSETSIZE; i++) {
  74.       if (op == TestOp[i]) return i;
  75.    }
  76.    return 0;
  77. }
  78. char precede(char Aop, char Bop) {
  79. //    printf("%cn",Prior[ReturnOpOrd(Aop,OPSET)][ReturnOpOrd(Bop,OPSET)]);
  80. // printf("%c,  %cn",Aop,Bop);
  81. return Prior[ReturnOpOrd(Aop,OPSET)][ReturnOpOrd(Bop,OPSET)];
  82.    
  83. }
  84. status initstack(sqstack *s){
  85. (s)->base = (int*)malloc(STACK_INIF_SIZE*sizeof(int));
  86. if((s)->base==NULL) exit(OVERFLOW);
  87. (s)->top=(s)->base;
  88. (s)->stacksize = STACK_INIF_SIZE;
  89. // printf("initstack is finished!n");
  90. return OK;
  91. }
  92. int gettop(sqstack *s){
  93. int e;
  94. if(s->top==s->base){
  95.  printf("NULL1n");
  96.  return 0;
  97.  }
  98. e=*(s->top-1);
  99. // printf("gettop %d is OK!n",e);
  100. return e;
  101. }
  102. status push(sqstack *s,int e){
  103. if(s->top-s->base>=s->stacksize){
  104. s->base=(int*)realloc(s->base,(s->stacksize+STACKINCREMENT)*sizeof(int));
  105. if(!s->base) exit(OVERFLOW);
  106. s->stacksize+= STACKINCREMENT;
  107. }
  108. *(s->top++)=e;
  109.  //   printf("push %d is OKn",e);
  110. return OK;
  111. }
  112. status pop(sqstack *s,int *e){
  113. if(s->top==s->base){
  114. printf("出时栈栈为空!n");
  115. return ERROR;
  116. }
  117. *e=*(--s->top);
  118.  //   printf("pop %d is OK!n",*e);
  119. return OK;
  120. }
  121.  int CalcOneExpress(int expression[][2])
  122.  {
  123.     // 算术表达式求值的算符优先算法。
  124.    // 设OPTR和&&OPND分别为运算符栈和运算数栈,OP为运算符集合。
  125. int index=0,result,c,theta,a,b;
  126. sqstack  OPTR;    // 运算符栈,字符元素
  127.    sqstack  OPND;    // 运算数栈,实数元素
  128.    initstack(&OPTR);
  129.    push(&OPTR, 35);
  130.    initstack (&OPND);
  131.    c=expression[index][0];
  132.    while (c!= 35 || gettop(&OPTR)!=35){
  133. //   printf("while start!n");
  134.       if (expression[index][1]!=1) {
  135.          push(&OPND, c);
  136.  index++;
  137.  c=expression[index][0];
  138.  
  139.          } // 不是运算符则进栈
  140.      else {    
  141.  switch (precede(gettop(&OPTR), c)) { 
  142.             case '<': 
  143. // printf("case <!n");   // 栈顶元素优先权低
  144.                  push(&OPTR, c);    
  145.  index++;
  146.  c=expression[index][0];  
  147.   
  148.                  break;
  149.             case '=':   // 脱括号并接收下一字符
  150.                  pop(&OPTR, &c);     
  151.  index++;
  152.  c=expression[index][0];  
  153.   
  154.                  break;
  155.             case '>':   // 退栈并将运算结果入栈
  156.                  pop(&OPTR, &theta);
  157.                  pop(&OPND, &b);  
  158.                  pop(&OPND, &a);
  159. // printf("q->num_ch is %dn",q->num_ch);
  160.                  push(&OPND, Operate(a, theta, b)); 
  161. /*  if (q->num_ch !=35){
  162.  index++;
  163.  c=expression[index][0];
  164.  
  165.    printf("%dn",c);*/
  166. //  }
  167.                  break;
  168. default :
  169. printf("have not this oper!n");
  170. return 0;
  171.          } // switch
  172.       }//else
  173.    } // while
  174.    result=gettop(&OPND);
  175.    printf("the result is %dn",result);
  176.    return result;
  177. } // EvaluateExpression
  178. /*status CombineResult(int expression[][2],int n)
  179. {
  180. char s[15];
  181. */
  182.  int Equal24(int n)
  183.  {
  184.  if(n==24){
  185.  printf("the result is %dn",n);
  186.  return TRUE;
  187.  }
  188.  else    return FALSE;
  189.  }
  190. int CalcArray1(int iNumInput[2][4])
  191. {
  192. // a * b * c * d //7 number
  193. int expression[8][2],ii,jj,kk;
  194. int i,j,k,l,dRes;
  195.     for(i=0;i<4;i++)
  196.     {
  197.         for(j=0;j<4;j++)    
  198.         {
  199.             if(j==i)
  200.             {
  201.                 continue;
  202.             }
  203.             for(k=0;k<4;k++)
  204.             {
  205.                 if(k==i||k==j)
  206.                 {
  207.                     continue;
  208.                 }
  209.                 for(l=0;l<4;l++)
  210.                 {
  211.                     if(l==i||l==j||l==k)
  212.                     {
  213.                         continue;
  214.                     }
  215.                     expression[0][0]=iNumInput[0][i];
  216.                     expression[2][0]=iNumInput[0][j];
  217.                     expression[4][0]=iNumInput[0][k];
  218.                     expression[6][0]=iNumInput[0][l];
  219. expression[0][1]=eNumber;
  220. expression[2][1]=eNumber;
  221. expression[4][1]=eNumber;
  222. expression[6][1]=eNumber;
  223. for (ii=0;ii<4;ii++)
  224. {
  225. for (jj=0;jj<4;jj++)
  226. {
  227. for (kk=0;kk<4;kk++)
  228. {
  229. expression[1][0] = oper[ii];
  230. expression[1][1] = eOperator;
  231. expression[3][0] = oper[jj];
  232. expression[3][1] = eOperator;
  233. expression[5][0] = oper[kk];
  234. expression[5][1] = eOperator;
  235. expression[7][0] = oper[6];
  236. expression[7][1] = eOperator;
  237. dRes = CalcOneExpress(expression);
  238. if(Equal24(dRes))
  239. {
  240. // CombineResult(expression, 7);//组织结果表达式
  241. // printf("%d,%d,%d,%d,%d,%d,%dn",i,ii,j,jj,k,kk,l);
  242. // printf("%d%cn",expression[i][0],oper[ii]);
  243. printf("%d%c%d%c%d%c%dn",expression[0][0],oper[ii],expression[2][0],oper[jj],expression[4][0],oper[kk],expression[6][0]);
  244. return TRUE;
  245. }
  246. }
  247. }
  248. }//end of for oper
  249. }
  250. }
  251. }
  252. }
  253. return FALSE;
  254. }
  255. int CalcArray2(int iNumInput[2][4])
  256. {
  257. // (a * b) * c * d //9 number
  258. int expression[10][2];
  259. int ii,jj,i,j,k,l,kk;
  260. int dRes;
  261. printf("CalcArray2n");
  262.     for(i=0;i<4;i++)
  263.     {
  264.         for(j=0;j<4;j++)    
  265.         {
  266.             if(j==i)
  267.             {
  268.                 continue;
  269.             }
  270.             for(k=0;k<4;k++)
  271.             {
  272.                 if(k==i||k==j)
  273.                 {
  274.                     continue;
  275.                 }
  276.                 for(l=0;l<4;l++)
  277.                 {
  278.                     if(l==i||l==j||l==k)
  279.                     {
  280.                         continue;
  281.                     }
  282.                     expression[1][0]=iNumInput[0][i];
  283.                     expression[3][0]=iNumInput[0][j];
  284.                     expression[6][0]=iNumInput[0][k];
  285.                     expression[8][0]=iNumInput[0][l];
  286. expression[1][1]=eNumber;
  287. expression[3][1]=eNumber;
  288. expression[6][1]=eNumber;
  289. expression[8][1]=eNumber;
  290. for (ii=0;ii<4;ii++)
  291. {
  292. for (jj=0;jj<4;jj++)
  293. {
  294. for (kk=0;kk<4;kk++)
  295. {
  296. expression[2][0] = oper[ii];
  297. expression[2][1] = eOperator;
  298. expression[5][0] = oper[jj];
  299. expression[5][1] = eOperator;
  300. expression[7][0] = oper[kk];
  301. expression[7][1] = eOperator;
  302. expression[9][0] = oper[6];
  303. expression[9][1] = eOperator;
  304. expression[0][0] = oper[4];
  305. expression[0][1] = eOperator;
  306. expression[4][0] = oper[5];
  307. expression[4][1] = eOperator;
  308. dRes = CalcOneExpress(expression);
  309. if(Equal24(dRes))
  310. {
  311. // printf("ok!n");
  312. // CombineResult(expression, 7);//组织结果表达式
  313. // printf("%d,%d,%d,%d,%d,%d,%dn",i,ii,j,jj,k,kk,l);
  314. // printf("%d%cn",expression[i][0],oper[ii]);
  315. printf("%c%d%c%d%c%c%d%c%dn",oper[4],expression[1][0],oper[ii],expression[3][0],oper[5],oper[jj],expression[6][0],oper[kk],expression[8][0]);
  316. return TRUE;
  317. }
  318. }
  319. }
  320. }//end of for oper
  321. }
  322. }
  323. }
  324. }
  325. return FALSE;
  326. }
  327. int CalcArray3(int iNumInput[2][4])
  328. {
  329. // (a * b * c) * d //9 number
  330. int expression[10][2];
  331. int ii,jj,i,j,k,l,kk;
  332. int dRes;
  333. printf("CalcArray3n");
  334.     for(i=0;i<4;i++)
  335.     {
  336.         for(j=0;j<4;j++)    
  337.         {
  338.             if(j==i)
  339.             {
  340.                 continue;
  341.             }
  342.             for(k=0;k<4;k++)
  343.             {
  344.                 if(k==i||k==j)
  345.                 {
  346.                     continue;
  347.                 }
  348.                 for(l=0;l<4;l++)
  349.                 {
  350.                     if(l==i||l==j||l==k)
  351.                     {
  352.                         continue;
  353.                     }
  354.                     expression[1][0]=iNumInput[0][i];
  355.                     expression[3][0]=iNumInput[0][j];
  356.                     expression[5][0]=iNumInput[0][k];
  357.                     expression[8][0]=iNumInput[0][l];
  358. expression[1][1]=eNumber;
  359. expression[3][1]=eNumber;
  360. expression[5][1]=eNumber;
  361. expression[8][1]=eNumber;
  362. for (ii=0;ii<4;ii++)
  363. {
  364. for (jj=0;jj<4;jj++)
  365. {
  366. for (kk=0;kk<4;kk++)
  367. {
  368. expression[2][0] = oper[ii];
  369. expression[2][1] = eOperator;
  370. expression[4][0] = oper[jj];
  371. expression[4][1] = eOperator;
  372. expression[7][0] = oper[kk];
  373. expression[7][1] = eOperator;
  374. expression[9][0] = oper[6];
  375. expression[9][1] = eOperator;
  376. expression[0][0] = oper[4];
  377. expression[0][1] = eOperator;
  378. expression[6][0] = oper[5];
  379. expression[6][1] = eOperator;
  380. dRes = CalcOneExpress(expression);
  381. if(Equal24(dRes))
  382. {
  383. // printf("ok!n");
  384. // CombineResult(expression, 7);//组织结果表达式
  385. // printf("%d,%d,%d,%d,%d,%d,%dn",i,ii,j,jj,k,kk,l);
  386. // printf("%d%cn",expression[i][0],oper[ii]);
  387. printf("%c%d%c%d%c%d%c%c%dn",oper[4],expression[1][0],oper[ii],expression[3][0],oper[jj],expression[5][0],oper[5],oper[kk],expression[8][0]);
  388. return TRUE;
  389. }
  390. }
  391. }
  392. }//end of for oper
  393. }
  394. }
  395. }
  396. }
  397. return FALSE;
  398. }
  399. int CalcArray4(int iNumInput[2][4])
  400. {
  401. // (a * b * c) * d //9 number
  402. int expression[10][2];
  403. int ii,jj,i,j,k,l,kk;
  404. int dRes;
  405. printf("CalcArray4n");
  406.     for(i=0;i<4;i++)
  407.     {
  408.         for(j=0;j<4;j++)    
  409.         {
  410.             if(j==i)
  411.             {
  412.                 continue;
  413.             }
  414.             for(k=0;k<4;k++)
  415.             {
  416.                 if(k==i||k==j)
  417.                 {
  418.                     continue;
  419.                 }
  420.                 for(l=0;l<4;l++)
  421.                 {
  422.                     if(l==i||l==j||l==k)
  423.                     {
  424.                         continue;
  425.                     }
  426.                     expression[0][0]=iNumInput[0][i];
  427.                     expression[3][0]=iNumInput[0][j];
  428.                     expression[5][0]=iNumInput[0][k];
  429.                     expression[8][0]=iNumInput[0][l];
  430. expression[0][1]=eNumber;
  431. expression[3][1]=eNumber;
  432. expression[5][1]=eNumber;
  433. expression[8][1]=eNumber;
  434. for (ii=0;ii<4;ii++)
  435. {
  436. for (jj=0;jj<4;jj++)
  437. {
  438. for (kk=0;kk<4;kk++)
  439. {
  440. expression[1][0] = oper[ii];
  441. expression[1][1] = eOperator;
  442. expression[4][0] = oper[jj];
  443. expression[4][1] = eOperator;
  444. expression[7][0] = oper[kk];
  445. expression[7][1] = eOperator;
  446. expression[9][0] = oper[6];
  447. expression[9][1] = eOperator;
  448. expression[2][0] = oper[4];
  449. expression[2][1] = eOperator;
  450. expression[6][0] = oper[5];
  451. expression[6][1] = eOperator;
  452. dRes = CalcOneExpress(expression);
  453. if(Equal24(dRes))
  454. {
  455. // printf("ok!n");
  456. // CombineResult(expression, 7);//组织结果表达式
  457. // printf("%d,%d,%d,%d,%d,%d,%dn",i,ii,j,jj,k,kk,l);
  458. // printf("%d%cn",expression[i][0],oper[ii]);
  459. printf("%d%c%c%d%c%d%c%c%dn",expression[0][0],oper[ii],oper[4],expression[3][0],oper[jj],expression[5][0],oper[5],oper[kk],expression[8][0]);
  460. return TRUE;
  461. }
  462. }
  463. }
  464. }//end of for oper
  465. }
  466. }
  467. }
  468. }
  469. return FALSE;
  470. }
  471. int CalcArray5(int iNumInput[2][4])
  472. {
  473. // (a * b) * (c * d) //11 number
  474. int expression[12][2];
  475. int ii,jj,i,j,k,l,kk;
  476. int dRes;
  477. printf("CalcArray5n");
  478.     for(i=0;i<4;i++)
  479.     {
  480.         for(j=0;j<4;j++)    
  481.         {
  482.             if(j==i)
  483.             {
  484.                 continue;
  485.             }
  486.             for(k=0;k<4;k++)
  487.             {
  488.                 if(k==i||k==j)
  489.                 {
  490.                     continue;
  491.                 }
  492.                 for(l=0;l<4;l++)
  493.                 {
  494.                     if(l==i||l==j||l==k)
  495.                     {
  496.                         continue;
  497.                     }
  498.                     expression[1][0]=iNumInput[0][i];
  499.                     expression[3][0]=iNumInput[0][j];
  500.                     expression[7][0]=iNumInput[0][k];
  501.                     expression[9][0]=iNumInput[0][l];
  502. expression[1][1]=eNumber;
  503. expression[3][1]=eNumber;
  504. expression[7][1]=eNumber;
  505. expression[9][1]=eNumber;
  506. for (ii=0;ii<4;ii++)
  507. {
  508. for (jj=0;jj<4;jj++)
  509. {
  510. for (kk=0;kk<4;kk++)
  511. {
  512. expression[2][0] = oper[ii];
  513. expression[2][1] = eOperator;
  514. expression[5][0] = oper[jj];
  515. expression[5][1] = eOperator;
  516. expression[8][0] = oper[kk];
  517. expression[8][1] = eOperator;
  518. expression[11][0] = oper[6];
  519. expression[11][1] = eOperator;
  520. expression[0][0] = oper[4];
  521. expression[0][1] = eOperator;
  522. expression[6][0] = oper[4];
  523. expression[6][1] = eOperator;
  524. expression[4][0] = oper[5];
  525. expression[4][1] = eOperator;
  526. expression[10][0] = oper[5];
  527. expression[10][1] = eOperator;
  528. dRes = CalcOneExpress(expression);
  529. if(Equal24(dRes))
  530. {
  531. // printf("ok!n");
  532. // CombineResult(expression, 7);//组织结果表达式
  533. // printf("%d,%d,%d,%d,%d,%d,%dn",i,ii,j,jj,k,kk,l);
  534. // printf("%d%cn",expression[i][0],oper[ii]);
  535. printf("%c%d%c%d%c%c%c%d%c%d%cn",oper[4],expression[1][0],oper[ii],expression[3][0],oper[5],oper[jj],oper[4],expression[7][0],oper[kk],expression[9][0],oper[5]);
  536. return TRUE;
  537. }
  538. }
  539. }
  540. }//end of for oper
  541. }
  542. }
  543. }
  544. }
  545. return FALSE;
  546. }
  547. int CalcArray6(int iNumInput[2][4])
  548. {
  549. // ((a * b) * c) * d //11 number
  550. int expression[12][2];
  551. int ii,jj,i,j,k,l,kk;
  552. int dRes;
  553. printf("CalcArray6n");
  554.     for(i=0;i<4;i++)
  555.     {
  556.         for(j=0;j<4;j++)    
  557.         {
  558.             if(j==i)
  559.             {
  560.                 continue;
  561.             }
  562.             for(k=0;k<4;k++)
  563.             {
  564.                 if(k==i||k==j)
  565.                 {
  566.                     continue;
  567.                 }
  568.                 for(l=0;l<4;l++)
  569.                 {
  570.                     if(l==i||l==j||l==k)
  571.                     {
  572.                         continue;
  573.                     }
  574.                     expression[2][0]=iNumInput[0][i];
  575.                     expression[4][0]=iNumInput[0][j];
  576.                     expression[7][0]=iNumInput[0][k];
  577.                     expression[10][0]=iNumInput[0][l];
  578. expression[2][1]=eNumber;
  579. expression[4][1]=eNumber;
  580. expression[7][1]=eNumber;
  581. expression[10][1]=eNumber;
  582. for (ii=0;ii<4;ii++)
  583. {
  584. for (jj=0;jj<4;jj++)
  585. {
  586. for (kk=0;kk<4;kk++)
  587. {
  588. expression[3][0] = oper[ii];
  589. expression[3][1] = eOperator;
  590. expression[6][0] = oper[jj];
  591. expression[6][1] = eOperator;
  592. expression[9][0] = oper[kk];
  593. expression[9][1] = eOperator;
  594. expression[11][0] = oper[6];
  595. expression[11][1] = eOperator;
  596. expression[0][0] = oper[4];
  597. expression[0][1] = eOperator;
  598. expression[1][0] = oper[4];
  599. expression[1][1] = eOperator;
  600. expression[5][0] = oper[5];
  601. expression[5][1] = eOperator;
  602. expression[8][0] = oper[5];
  603. expression[8][1] = eOperator;
  604. dRes = CalcOneExpress(expression);
  605. if(Equal24(dRes))
  606. {
  607. // printf("ok!n");
  608. // CombineResult(expression, 7);//组织结果表达式
  609. // printf("%d,%d,%d,%d,%d,%d,%dn",i,ii,j,jj,k,kk,l);
  610. // printf("%d%cn",expression[i][0],oper[ii]);
  611. printf("%c%c%d%c%d%c%c%d%c%c%dn",oper[4],oper[4],expression[2][0],oper[ii],expression[4][0],oper[5],oper[jj],expression[7][0],oper[5],oper[kk],expression[10][0]);
  612. return TRUE;
  613. }
  614. }
  615. }
  616. }//end of for oper
  617. }
  618. }
  619. }
  620. }
  621. return FALSE;
  622. }
  623. int CalcArray7(int iNumInput[2][4])
  624. {
  625. // (a * b * c) * d //9 number
  626. int expression[12][2];
  627. int ii,jj,i,j,k,l,kk;
  628. int dRes;
  629. printf("CalcArray7n");
  630.     for(i=0;i<4;i++)
  631.     {
  632.         for(j=0;j<4;j++)    
  633.         {
  634.             if(j==i)
  635.             {
  636.                 continue;
  637.             }
  638.             for(k=0;k<4;k++)
  639.             {
  640.                 if(k==i||k==j)
  641.                 {
  642.                     continue;
  643.                 }
  644.                 for(l=0;l<4;l++)
  645.                 {
  646.                     if(l==i||l==j||l==k)
  647.                     {
  648.                         continue;
  649.                     }
  650.                     expression[1][0]=iNumInput[0][i];
  651.                     expression[4][0]=iNumInput[0][j];
  652.                     expression[6][0]=iNumInput[0][k];
  653.                     expression[10][0]=iNumInput[0][l];
  654. expression[1][1]=eNumber;
  655. expression[4][1]=eNumber;
  656. expression[6][1]=eNumber;
  657. expression[10][1]=eNumber;
  658. for (ii=0;ii<4;ii++)
  659. {
  660. for (jj=0;jj<4;jj++)
  661. {
  662. for (kk=0;kk<4;kk++)
  663. {
  664. expression[2][0] = oper[ii];
  665. expression[2][1] = eOperator;
  666. expression[5][0] = oper[jj];
  667. expression[5][1] = eOperator;
  668. expression[9][0] = oper[kk];
  669. expression[9][1] = eOperator;
  670. expression[11][0] = oper[6];
  671. expression[11][1] = eOperator;
  672. expression[0][0] = oper[4];
  673. expression[0][1] = eOperator;
  674. expression[3][0] = oper[4];
  675. expression[3][1] = eOperator;
  676. expression[7][0] = oper[5];
  677. expression[7][1] = eOperator;
  678. expression[8][0] = oper[5];
  679. expression[8][1] = eOperator;
  680. dRes = CalcOneExpress(expression);
  681. if(Equal24(dRes))
  682. {
  683. // printf("ok!n");
  684. // CombineResult(expression, 7);//组织结果表达式
  685. // printf("%d,%d,%d,%d,%d,%d,%dn",i,ii,j,jj,k,kk,l);
  686. // printf("%d%cn",expression[i][0],oper[ii]);
  687. printf("%c%d%c%c%d%c%d%c%c%c%dn",oper[4],expression[1][0],oper[ii],oper[4],expression[4][0],oper[jj],expression[6][0],oper[5],oper[5],oper[kk],expression[10][0]);
  688. return TRUE;
  689. }
  690. }
  691. }
  692. }//end of for oper
  693. }
  694. }
  695. }
  696. }
  697. return FALSE;
  698. }
  699. int Calc24(int number[2][4])
  700. {
  701. int find=0;
  702. //括号的几种情况
  703. //1 无括号
  704. //2 (a b) c d 同a b (c d), 下省略
  705. //3 (a b c) d
  706. //4 a (b c) d
  707. //5 (a b) (c d)
  708. //6 ((a b) c) d
  709. //7 (a (b c)) d
  710. //计算不含括号的情况
  711. /* if (CalcArray1(number))
  712. {
  713. find=1;
  714. return TRUE;
  715. }
  716. if (CalcArray2(number))
  717. {
  718. find=1;
  719. return TRUE;
  720. }
  721. if (CalcArray3(number))
  722. {
  723. find=1;
  724. return TRUE;
  725. }
  726. if (CalcArray4(number))
  727. {
  728. find=1;
  729. return TRUE;
  730. }*/
  731. if (CalcArray5(number))
  732. {
  733. find=1;
  734. return TRUE;
  735. }
  736. /* if (CalcArray6(number))
  737. {
  738. find=1;
  739. return TRUE;
  740. }
  741. if (CalcArray7(number))
  742. {
  743. find=1;
  744. return TRUE;
  745. }*/
  746. if(find==0)
  747. {
  748. printf("These numbers cannot be combined to 24n");
  749. }
  750. return FALSE;
  751. }
  752. void main (){
  753. Calc24(number);
  754. // printf("finished mainn");
  755. }
  756.