作业帮 > 综合 > 作业

求一道c语言习题,是数字相加的

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/04/29 06:26:07
求一道c语言习题,是数字相加的
给定一个表达式
ABCDE+ACEXD = MBBEEX
上述表达式为一个运算,是两个五位数相加,结果等于一个六位数
要求第一个五数中,出现的数字,要和第二个五位数中的数字相同
即例如 (只是假设)如果12345是第一个五位数,则135x4要是第二个五位数(x可以为任意数字)
但是结果中,要求结果(只是假设)是m2255x(m是任意数字,x与第二个五位数中的x相同)
求出所有满足条件的五位数和六位数
输出结果的格式是
ABCDE = .,ACEXD = .and BBEEX = .是一种组合
将所有组合全部输出
.
输出结果里的BBEEX 是 MBBEEX 写错了.
是否要求每个字母代表不同的数字?
再问: 要求ABCDE = ....., ACEXD = ..... and MBBEEX

就是,第一个数字的第1位要求等于第二个数字的第1位,
第一个数字的第2位,要求等于想家结果的2,3位的数字。。。
就是找这样的数。。。
再答: 单纯地循环会造成海量的运算,可以在编程前进行分析分析下数字关系:最高位M=1,A>5(否则就不可能加成六位数)个位:E+D=X,或E+D=X+10十位:D+X=E、D+X=E+10,,或D+X+1=E、D+X+1=E+10当个位为E+D=X+10时,由D+X+1=E、D+X+1=E+10可推出2D=9或2D=19,均不和题目要求。 所以E+D=X由 D+X=E 可推出 D=0,E=X,结合百位以上可得C=0,2A=B+10;由 D+X=E+10 可推出 D=5,E+5=X,结合百位以上可得C=9,2A=B+9.据此可编写程序。#include<stdio.h> 
void main() 

 long int x1,x2,x3;
 long int a,b,c,d,e,x,m=1;
 for (a=5;a<9;a++)
   for (e=0;e<9;e++)
     { d=0;  //十位相加没进位
       x=e;
       c=0;
       b=2*a-10;
       x1=a*10000+b*1000+c*100+d*10+e;
       x2=a*10000+c*1000+e*100+x*10+d;
       x3=100000+b*10000+b*1000+e*100+e*10+x;
      if (x1+x2==x3) printf("%ld + %ld = %ld\n",x1,x2,x3);
       d=5;  //十位相加有进位

       x=e+5; if(x>10) break;
       c=9;
       b=2*a-9;
       x1=a*10000+b*1000+c*100+d*10+e;
       x2=a*10000+c*1000+e*100+x*10+d;
       x3=100000+b*10000+b*1000+e*100+e*10+x;
       if (x1+x2==x3) printf("%ld + %ld = %ld\n",x1,x2,x3);
      }
  getch();
}