您的位置:首页 > 其它

1016. 部分A+B

2016-02-10 15:47 337 查看
正整数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
, b
, 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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: