5/10博客

来源:互联网 发布:主力持仓量指标源码 编辑:程序博客网 时间:2024/06/03 23:40

A代表0-9中的前五个,Z是后五个,还原下列乘试:

                      AZA

               *     AAZ

             _______________

                  AAAA

               AAZZ

            ZAA

___________________________

           ZAZAA

程序:

#include <stdio.h>



int main()
{
    int i;
    int j;
    int k;
    int m;
    int n;
    int l;
    int x;
    int y;
    int z;
    int p;
    int q;
    int a[3];
    int b[3];
    int c[4];
    int d[4];
    int e[3];
    int f[5];
    
    for (i = 150; i < 495; i++)                   //例举AZA
for (j = 105; j < 450; j++)              //例举AAZ
{
   p = i;
   q = j;
   for (k = 0, l = 100; k < 3; k++)               // 分解AZA,将其分为3个个位数
   {
a[k] = p/l;
                p %= l;
l /= 10;
   }
   for (k = 0, l = 100; k < 3; k++)             //分解AAZ,将其分为3个个位数
   {
b[k] = q/l;
                q %= l;
l /= 10;
   }
   x = i * b[2];                                            //分别用AAZ的个,十,百位乘AZA得X,Y,Z
   y = i * b[1] * 10;
   z = i * b[0] * 100;
   for (k = 0, l = 1000; k < 4; k++)            //用同样的方法分解X.Y,Z
   {
       c[k] = x/l;
x %= l;
l /= 10;
   }
   for (k = 0, l = 10000; k < 4; k++)
   {
       d[k] = y/l;
y %= l;
l /= 10;
   }
   for (k = 0, l = 10000; k < 3; k++)
   {
       e[k] = z/l;
z %= l;
l /= 10;
   }
   x = i * b[2];                               //因为之前对X,Y,Z进行变化,再次对X,Y,Z赋值
   y = i * b[1] * 10;
   z = i * b[0] * 100;
            m = x + y + z;                            //ZAZAA是X,Y,Z之和
            for (k = 0, l = 10000; k < 5; k++)                分解ZAZAA
   {
       f[k] = m/l;
m %= l;
l /= 10;
   }
            m = x + y + z;                              //再次对ZAZAA赋值


   if (jud(a[0]) == 0 && jud(a[1]) == 1 && jud(a[2]) == 0 &&           //用自定义jud函数对各个数进行判断A,Z
jud(b[0]) == 0 && jud(b[1]) == 0 && jud(b[2]) == 1 &&

jud(c[0]) == 0 && jud(c[1]) == 0 && jud(c[2]) == 0 && jud(c[3]) == 0 &&                                                     jud(d[0]) == 0 && jud(d[1]) == 0 && jud(d[2]) == 1 && jud(d[3]) == 1 &&

jud(e[0]) == 1 && jud(e[1]) == 0 && jud(e[2]) == 0 && 
jud(f[0]) == 1 && jud(f[1]) == 0 && jud(f[2]) == 1 && jud(f[3]) == 0 && jud(f[4]) == 0)
   {
printf("   %d\n", i);
printf("*  %d\n", j);
printf("_______________\n");
printf("  %d\n", x);
printf(" %d\n", y/10);
printf(" %d\n", z/100);
printf("_______________\n");
printf(" %d\n", m);
   }





}


return 0;
}


int jud(int a)              //对AZ进行判断,为A输出0,为Z输出1
{
if (a >= 0 && a <= 4)
return 0;
else
return 1;

}

此题主要是将各个数进行分解较为繁杂,容易出错。

要注意判断条件。

0 0
原创粉丝点击