Description
正整数A的“DA(为1位整数)部分”定义为由A中所有DA组成的新整数PA。例如:给定A = 3862767,DA = 6,则A的“6部分”PA是66,因为A中有2个6。
现给定A、DA、B、DB,请编写程序计算PA + PB。
Input
输入在一行中依次给出A、DA、B、DB,中间以空格分隔,其中0 < A, B < 1010。
Output
在一行中输出PA + PB的值。
Sample Input Copy
3862767 6 13530293 3 3862767 1 13530293 8
Sample Output Copy
399 0
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
using namespace std;
int main()
{
char a[20], b[20];
char da,db;
while(scanf("%s %c %s %c", a,&da,b,&db) != EOF)
{ //scanf()输入加空格和不加空格
int m = strlen(a);
int n = strlen(b);
char pa[20] = {0};
char pb[20] = {0};//即是存储相加的两个数字
int s = 0;
int t = 0;
int sum = 0;
for(int i = 0; i < m; i++)
{
if(a[i] == da)
{
pa[s] = a[i];
s++;
}
}
for(int j = 0; j < n; j++)
{
if(b[j] == db)
{
pb[t] = b[j];
t++;
}
}
sum = atoi(pa) + atoi(pb);
cout << sum << endl;
}
return 0;
}
注:
本题头文件加了一个stdio.h,在devc++ 中运行需要添加,vc++6.0不需要,可能和编译器有关
有一个问题:就是这个题有一条语句 while(scanf("%s %c %s %c", a,&da,b,&db) != EOF) 和 while(scanf("%s%c%s%c", a,&da,b,&db) != EOF) 有区别 " " 内的加空格和不加空格结果不同,前者对后者错不知道为什么。