int add(int a,int b){ return a+b; }
int sub(int a,int b){ return a-b; }
int mul(int a,int b){ return a*b; }
int div(int a,int b){ return b ? a/b : 0x7fffffff; }
int mod(int a,int b){ return b ? a%b : 0x7fffffff; }
int and(int a,int b){ return a&b; }
int or(int a,int b){ return a|b; }
int xor(int a,int b){ return a^b; }

main()
{
  const int num=10;
  const int opn=8;
  int (*op[])(int,int)={add,sub,mul,div,mod,and,or,xor};
  char ops[]={'+','-','*','/','%','&','|','^'};

  for(int i=0; i<num; i++)
    for(int j=0; j<num; j++)
      for(int k=0; k<num; k++)
        for(int n=0; n<num; n++)
          for(int a=0; a<opn; a++)
            for(int b=0; b<opn; b++)
              for(int c=0; c<opn; c++)
                if(op[c](op[b](op[a](i,j),k),n)==10)
                  printf("((%d%c%d)%c%d)%c%d\n",i,ops[a],j,ops[b],k,ops[c],n);
}

c言語 
演算子は{'+','-','*','/','%','&','|','^'}; 2項演算子系なら簡単に追加可能
演算は左から順番
10と等しかったら表示する