正整数A的“DA(为1位整数)部分”定义为由A中所有DA组成的新整数PA。例如:给定A = 3862767,DA = 6,则A的“6部分”PA是66,因为A中有2个6。
现给定A、DA、B、DB,请编写程序计算PA + PB。
输入格式:
输入在一行中依次给出A、DA、B、DB,中间以空格分隔,其中0 < A, B < 1010。
输出格式:
在一行中输出PA + PB的值。
输入样例1:3862767 6 13530293 3输出样例1:
399输入样例2:
3862767 1 13530293 8输出样例2:
0
算法:
- 声明字符串a和b,字符da和db,字符指针ptr_a,ptr_b,整型变量part_a,part_b。
- 初始化ptr_a等于a的地址,ptr_b等于b的地址,part_a=0,part_b=0。
- 读取数据,分别存储于a、da、b、db。
- 如果ptr_a所指的字符等于字符串结束符,则跳到第七步。
- 如果ptr_a所指字符等于da,则part_a=part_a*10+da-'0'。
- ptr_a等于ptr_a加一。回到第四步。
- 如果ptr_b所指字符等于结束符,则跳到第十步。
- 如果ptr_b所指字符等于db,则part_b=part_b*10+db-'0'。
- ptr_b等于ptr_b加一。回到第七步。
- 输出part_a和part_b之和。
- 算法结束。
注意:在判断指针所指对象是否是结束符是不要忘了加上解引用号。声明char* v1, v2;时,实际上v1是指针,v2是字符变量。不要误以为v1、v2都是指针!
#include <stdio.h>
#define N 15
int main(int argc, const char * argv[]) {
char a[N], b[N], da, db;
char* ptr_a=a;
char* ptr_b=b;
int part_a=0, part_b=0;
scanf("%s %c %s %c", a, &da, b, &db);
while(*ptr_a!='\0'){
if(*ptr_a==da){
part_a=part_a*10+da-'0';
}
ptr_a++;
}
while(*ptr_b!='\0'){
if(*ptr_b==db){
part_b=part_b*10+db-'0';
}
ptr_b++;
}
printf("%d", part_a+part_b);
return 0;
}