PAT 乙级 1016 部分A+B (15分)---[求整数中某数字的个数---取模]

在这里插入图片描述

思路1:

	1.怎么进行循环?
		采用while(!=0)
	2.怎么查找相应的da,db?
		通过%10取模进行判断,再/10进行下一次循环
	3.怎么进行求和(求pa,pb)?
		每一次要*10(上升位数)+da.
#include<bits/stdc++.h>
using namespace std;
//取模找数字 
int main(){
    
    
	int a,b;
	int da,db;
	scanf("%d%d%d%d",&a,&da,&b,&db);
	int pa=0;
	int pb=0;
	//未知循环次数
	while(a!=0||b!=0){
    
    
		if(a%10==da){
    
    //找对应数字 
			pa=pa*10+da;//进行上升位数,相加 
		}
		if(b%10==db){
    
    
			pb=pb*10+db;
		}
		b/=10;
		a/=10;
	}
	printf("%d",pa+pb);
	return 0;
}

思路二:

	1.不采用取模形式
	2.采用字符串遍历,与数字比较?
		str[i]-'0'==da
#include<bits/stdc++.h>
using namespace std;
//采用字符串 
int main(){
    
    
	string a,b;
	int da,db;
	cin>>a>>da>>b>>db;
	
	int pa=0,pb=0;
	for(int i = 0; i < a.size(); i++){
    
    
		if(a[i]-'0'==da){
    
    
			pa=pa*10+da;//把pa当扩大升位
		}
	}
	for(int i = 0; i < b.size(); i++){
    
    
		if(b[i]-'0'==db){
    
    
			pb=pb*10+db;
		}
	}
	printf("%d",pa+pb);
	return 0;
}

思路三:

	1.采用字符数组char a[20]
	2.scanf("%s %c %s %c",&a,&da,&b,&db);//输入要空格
#include<bits/stdc++.h>
using namespace std;

int main(){
    
    
	char a[20],b[20];
	char da,db;
	scanf("%s %c %s %c",&a,&da,&b,&db);
	int pa=0,pb=0;
	int j=0;
	for(int i = 0; i < strlen(a); i++){
    
    
		if(a[i]==da){
    
    //把pa当作叠加对象 
			pa=pa+(da-'0')*pow(10,j++); 
		}
	} 
	j = 0;
	for(int i = 0; i < strlen(b); i++){
    
    
		if(b[i]==db){
    
    
			pb = pb + (db-'0')*pow(10,j++);
		}
	}
	printf("%d",pa+pb);
	return 0;
	
}

猜你喜欢

转载自blog.csdn.net/weixin_44926962/article/details/109558747
今日推荐