#include
#include
int main()
{
int DA,DB,A,B;
int PA=0;
int PB=0;
int i=0;
int j=0;
scanf("%d %d %d %d",&A,&DA,&B,&DB);
while(1)
{
if(A%10==DA)
{
PA=PA+DA*(int)pow(10,i);
i=i+1;
}
A=A/10;
if(B%10==DB)
{
PB=PB+DB*(int)pow(10,j);
j=j+1;
}
B=B/10;
if(A==B)
{break;}
}
printf("%d\n",PA+PB);
return 0;
}
问题:
为啥要while(1)呢???
if(A==B)
{break;}
看不懂啊???
改了一稿试一下
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main()
{
int DA,DB,A,B;
int PA=0;
int PB=0;
int i=0;
int j=0;
scanf("%d %d %d %d",&A,&DA,&B,&DB);
while(A>0)
{
if(A%10 == DA)
PA = PA*10 + A%10;
A = A/10;
}
while(B>0)
{
if(B%10 == DB)
PB = PB*10 + B%10;
B = B/10;
}
printf("%d",PA+PB);
return 0;
}
用if(A==B)结束循环是不对的,A和B的尾数不一定相等。
应该逐位找A中的DA,找出后就往PA上移位累加。PB一个道理。
运行结果:
代码:
#include<stdio.h>
int main()
{
int DA, DB, A, B;
int PA = 0;
int PB = 0;
int i = 0;
int j = 0;
scanf("%d %d %d %d", &A, &DA, &B, &DB);
while (A)
{
if (A % 10 == DA)
{
PA = PA * 10 + DA;
}
A /= 10;
}
while (B)
{
if (B % 10 == DB)
{
PB = PB * 10 + DB;
}
B /= 10;
}
printf("%d\n", PA + PB);
return 0;
}