ccf刷题 isbn号码 100分题解 c++

写的不够简练
字符串和数值类型的转换不够圆润
除了sstream头文件下的stringstream方法还有更加简单的利用ascall码值进行转换的方法
不过就当学习了一些处理string的方法吧
涉及到string.replace string.find string.substr
代码如下

#include <iostream>
#include <string> 
#include <sstream>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
using namespace std;
int main(int argc, char** argv) {
//	string s = "0-670-82162-0";
	string s;
	cin>>s;
	int pos1=0;
	int pos2=0;
	string ss;
	while(s.find("-",pos1)!=string::npos){
		pos1=s.find("-",pos1);
		ss+=s.substr(pos2,pos1-pos2);
		pos1=pos1+1;
		pos2=pos1;
	}
	int sum=0;
	for(int i=1;i<=9;i++){
		int x;
		string c=ss.substr(i-1,1);
		stringstream num(c);
		num>>x;
		sum+=x*i;
		num.str("");
	}
	
	int m=sum%11;
	stringstream sstr;
	sstr<<m;
	string endm = sstr.str();	
	//endm m的字符类型 
	int endnum;
	string endchar=s.substr(12,1);
	stringstream num(endchar);
	num>>endnum;
    //endnum s的字符类型 
	if(m<10){
		if(m==endnum){
			cout<<"Right";
		}else{
			string r=s.replace(12,1,endm);
			cout<<r;
		}
	}
	if(m==10){
		if(endchar=="X"){
			cout<<"Right";
		}else{
			string r=s.replace(12,1,"X");
			cout<<r;
		}
	}
	
	return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_42910523/article/details/83718887
今日推荐