1. 给定等式 A B C D E 其中每个字母代表一个数字,且不同数字对应不 D F G 同字母。编程求出这些数字并且打出这个数字的 + D F G 算术计算竖式。 ─────── X Y Z D E main (){ int A,B,C,D,E,F,G,X,Y,Z; if (A!=B&&!A!=C&&A!=D&&A!=E&&A!=F&&A!=G&&A!=X&&A!=Y&&A!=Z) if (B!=C&&B!=D&&B!=E&&B!=F&&B!=G&&B!=X&&B!=Y&&B!=Z) if (C!=D&&C!=E&&C!=F&&C!=G&&C!=X&&C!=Y&&C!=Z) if (D!=E&&D!=F&&D!=G&&D!=X&&D!=Y&&D!=Z) if (E!=F&&E!=G&&E!=X&&E!=Y&&E!=Z) if (F!=G&&F!=X&&F!=Y&&F!=Z) if (G!=X&&G!=Y&&G!=Z) if (X!=Y&&X!=Z) if (Y!=Z) E==E+G+G; D==D+F+F; Z==C+D+D; Y==B+1; X==A+1; printf("%d,%d,%d,%d,%d,%d,%d,%d,%d,%d\n",A,B,C,D,E,F,G,X,Y,Z);}自己认为正确的方法main (){ int a,b,c,d,e,f,g,x,y,z; if (a!=b&&a!=c&&a!=d&&a!=e&&a!=f&&a!=g&&a!=x&&a!=y&&a!=z) if (b!=c&&b!=d&&b!=e&&b!=f&&b!=g&&b!=x&&b!=y&&b!=z) if (c!=d&&c!=e&&c!=f&&c!=g&&c!=x&&c!=y&&c!=z) if (d!=e&&d!=f&&d!=g&&d!=x&&d!=y&&d!=z) if (e!=f&&e!=g&&e!=x&&e!=y&&e!=z) if (f!=g&&f!=x&&f!=y&&f!=z) if (g!=x&&g!=y&&g!=z) if (x!=y&&x!=z) if (y!=z) e==e+g+g; d==d+f+f; z==c+d+d; y==b+1; x==a+1; printf("%d,%d,%d,%d,%d,%d,%d,%d,%d,%d\n",a,b,c,d,e,f,g,x,y,z);} /*1. 给定等式 A B C D E 其中每个字母代表一个数字,且不同数字对应不 D F G 同字母。编程求出这些数字并且打出这个数字的 + D F G 算术计算竖式。 ─────── X Y Z D E _______________________________________________________________________________*/main (){ int a,b,c,d,e,f,g,x,y,z; for (a=0;a<9;a++) for (b=0;b<9;b++) for (c=0;c<9;c++) for (d=0;d<9;d++) for (e=0;e<9;e++) for (f=0;f<9;f++) for (g=0;g<9;g++) for (x=0;x<9;x++) for (y=0;y<9;y++) for (z=0;z<9;z++) { if (a!=b&&a!=c&&a!=d&&a!=e&&a!=f&&a!=g&&a!=x&&a!=y&&a!=z) if (b!=c&&b!=d&&b!=e&&b!=f&&b!=g&&b!=x&&b!=y&&b!=z) if (c!=d&&c!=e&&c!=f&&c!=g&&c!=x&&c!=y&&c!=z) if (d!=e&&d!=f&&d!=g&&d!=x&&d!=y&&d!=z) if (e!=f&&e!=g&&e!=x&&e!=y&&e!=z) if (f!=g&&f!=x&&f!=y&&f!=z) if (g!=x&&g!=y&&g!=z) if (x!=y&&x!=z) if (y!=z) e==e+g+g; d==d+f+f; z==c+d+d; y==b+1; x==a+1; printf("%d,%d,%d,%d,%d,%d,%d,%d,%d,%d\n",a,b,c,d,e,f,g,x,y,z); 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("───────"); printf("%d,%d,%d,%d,%d\n",x ,y, z, d ,e); } }正确答案:main(){ long int a,b,c,d,e,f,g,x,y,z; for(a=1;a<=9;a++) for(b=0;b<=9;b++) {if(a==b)continue; for(c=0;c<=9;c++) {if(c==a||c==b)continue; for(d=1;d<=9;d++) {if(d==a||d==b||d==c)continue; for(e=0;e<=9;e++) {if(e==a||e==b||e==c||e==d)continue; for(f=0;f<=9;f++) {if(f==a||f==b||f==c||f==d||f==e)continue; for(g=0;g<=9;g++) {if(g==a||g==b||g==c||g==d||g==e||g==f)continue; for(x=1;x<=9;x++) {if(x==a||x==b||x==c||x==d||x==e||x==f||x==g)continue; for(y=0;y<=9;y++) {if(y==a||y==b||y==c||y==d||y==e||y==f||y==g||y==x)continue; for(z=0;z<=9;z++) {if(z==a||z==b||z==c||z==d||z==e||z==f||z==g||z==x||z==y)continue; if (10000*a+1000*b+100*c+10*d+e+2*(100*d+10*f+g)==10000*x+1000*y+100*z+10*d+e) {printf("%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld\n\n",a,b,c,d,e,f,g,x,y,z);goto bh;} } } } } } } } } } bh:printf(" %1ld%1ld%1ld%1ld%1ld\n",a,b,c,d,e); printf(" %1ld%1ld%1ld\n",d,f,g); printf(" + %1ld%1ld%1ld\n",d,f,g); printf("-----------------\n"); printf(" %1ld%1ld%1ld%1ld%1ld\n",x,y,z,d,e);}____________________________________ 方法2: /*程序简单了,用到了随机函数的技巧,但运行时间比较长*/#include <stdlib.h> #include <stdio.h> main(){int p[10],i,j; do {for(i=0;i<10;i++) {bh:p[i]=random(10); for(j=0;j<i;j++) if(p[i]==p[j])goto bh; } if(10000L*p[0]+1000*p[1]+100*p[2]+10*p[3]+p[4]+2*(100*p[3]+10*p[5]+p[6])==10000L*p[7]+1000*p[8]+100*p[9]+10*p[3]+p[4]) {for(i=0;i<10;i++) printf("%4d",p[i]); printf("\n\n"); goto bh1; } } while(1);bh1:printf(" %1d%1d%1d%1d%1d\n",p[0],p[1],p[2],p[3],p[4]); printf(" %1d%1d%1d\n",p[3],p[5],p[6]); printf(" + %1d%1d%1d\n",p[3],p[5],p[6]); printf("-----------------\n"); printf(" %1d%1d%1d%1d%1d\n",p[7],p[8],p[9],p[3],p[4]);}

评论