算了90分钟的一道题...
程序代码:
/* 1. 给定等式 A B C D E 其中每个字母代表一个数字,且不同数字对应不 D F G 同字母。编程求出这些数字并且打出这个数字的 + D F G 算术计算竖式。 ─────── X Y Z D E 思路是:先将简单的几个数字推出来, b = 9 f = 5 g = 0 y = 1 ,其他的数用循环一个个地组合, 从2~8,然后去掉相同的。最好判断是否合题意。 */ # include <stdio.h> # include <conio.h> void acount (void) { int a, b = 9, c, d, e, f = 5, g = 0, x, y = 1, z; for (a = 2; a < 9; a++) //第一层循环 for (c = 2; c < 9; c++) //第二层循环 if (a == c || a == 5 ) //判断是否重复 continue; // 如果重复则跳过 else for (d = 2; d < 9; d++) // 第三层循环 if (d == a || d == c || d == 5) continue; else for (e = 2; e < 9; e++) if (e == a || e == c || e == d || e == 5 ) continue ; else for (x = 2; x < 9; x++) if (x == a || x == c || x == d || x == e || x == 5) continue; else { z=45-a-b-c-d-e-f-g-x-y; //求出z if (a*10000+b*1000+c*100+d*10+e + d*100+f*10+g+d*100+f*10+g == x*10000+y*1000+z*100+d*10+e && z != e) //判断是否合题意 { printf(" %d %d %d %d %d\n", a, b, c, d, e); //按格式输出 printf(" %d %d %d\n", d, f, g); printf("+ %d %d %d\n", d, f, g); printf("_____________________________\n"); printf(" %d %d %d %d %d\n", x, y, z, d, e); printf("\n"); } } } int main (void) { acount(); //执行函数 getch(); return 0; } /* vc++6.0 ------------------- 2 9 7 8 6 8 5 0 + 8 5 0 _______________ 3 1 4 8 6 ------------------- */