初学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这样的写法是错误的。
后来知道可以这样写:
由于A.at(i)返回的是char类型,那么在比较的时候直接比较ascll码就可以了。#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; }
最开始我使用的char* A,B;但是此问题在于输入的数据数量未知,无法进行终止操作符“\0”的输入