练习1

/**************************************************************************

  1.  给定等式  A B C D E     其中每个字母代表一个数字,且不同数字对应不
                    D F G     同字母。编程求出这些数字并且打出这个数字的
             +      D F G     算术计算竖式。

             ───────

                X Y Z D E

  分析得:
  F = 5
  G = 0
  X = A + (B + (C + D + D + 1) / 10) / 10
  Y = (B + (C + D + D + 1) / 10) %10
  Z = (C + D + D + 1) % 10
  
  ************************************************************************/

#include  

enum{A=0,B,C,D,E,F,G,X,Y,Z};

int nNum[10];

char* exp = "/
    %d %d %d %d %d/n/
        %d %d %d/n/
 +      %d %d %d/n/
───────/n/
    %d %d %d %d %d/n";

int checked()
{
 int i,j;
 for(i=0; i<=9; i++)
 {
  for(j=i+1; j<=9; j++)
   if(nNum[i] == nNum[j])
   return 0;
 }
 return 1;
}

void output()
{
 printf(exp,nNum[A],nNum[B],nNum[C],nNum[D],nNum[E],nNum[D],nNum[F],
  nNum[G],nNum[D],nNum[F],nNum[G],nNum[X],nNum[Y],nNum[Z],nNum[D],nNum[E]);
 printf("/n");
}

void main()
{
 nNum[F] = 5;
 nNum[G] = 0;

 for(nNum[A]=1; nNum[A]<=9; nNum[A]++)
 {
  for(nNum[B]=1; nNum[B]<=9; nNum[B]++)
  {
   for(nNum[C]=1; nNum[C]<=9; nNum[C]++)
   {
    for(nNum[D]=1; nNum[D]<=9; nNum[D]++)
    {
     for(nNum[E]=1; nNum[E]<=9; nNum[E]++)
     {
      nNum[X] = nNum[A] + (nNum[B] + (nNum[C] + nNum[D] + nNum[D] + 1)/10)/10;
      nNum[Y] = (nNum[B] + (nNum[C] + nNum[D] + nNum[D] + 1)/10)%10;
      nNum[Z] = (nNum[C] + nNum[D] + nNum[D] + 1)%10;
      if(checked())
      {
       output();
      }
     }
    }
   }
  }
 }
}


 

你可能感兴趣的:(我的C语言编程练习,output,c,编程)