PAT乙级1006题感想

来源:互联网 发布:云裳恋衣淘宝店 编辑:程序博客网 时间:2024/06/05 00:34

初学C++,很多东西搞得云里雾里。这题很简单,但是做的很不好。


题目如下:

正整数A的“DA(为1位整数)部分”定义为由A中所有DA组成的新整数PA。例如:给定A = 3862767,DA = 6,则A的“6部分”PA是66,因为A中有2个6。
刚开始对string了解很不好,在做比较时,代码写的很蠢。
不管蠢不蠢,我搞清楚了A.at(i)返回的是char类型,char类型和string类型不能直接比较,即:A.at(it) == Da这样的写法是错误的。
后来知道可以这样写:
#include <iostream>#include <cstdio>#include <stdlib.h>using namespace std;int main(){    string A,B;    int Da,Db;    int ra=0,rb=0;    cin>>A>>Da>>B>>Db;    for( int i=0 ; i<A.length() ; i++ )    {        if( A.at(i)-'0' == Da )            ra = ra*10 + Da;    }    for( int i=0 ; i<B.length() ; i++ )    {        if( B.at(i)-'0' == Db )            rb = rb*10 + Db;    }    cout<<ra+rb;}
由于A.at(i)返回的是char类型,那么在比较的时候直接比较ascll码就可以了。
最开始我使用的char* A,B;但是此问题在于输入的数据数量未知,无法进行终止操作符“\0”的输入
0 0