用C++设计一个类来表示ISBN

2024-12-02 16:16:58
推荐回答(1个)
回答1:

#include
#include
using namespace std;

class ISBN{
public:
void set_isbn(string s){
isbnNum=s;}
string get_isbn()const{return isbnNum;}
bool check_isbn(string s);
private:
string isbnNum;
};

bool ISBN::check_isbn(string s){
int a[10];
int sum=0;
for(int i=0,j=0;s[i]!='\0';i++)
{
if(s[i]>='0'&&s[i]<='9'||s[i]=='x')
{a[j]=s[i]-'0';j++;} //注意!!! j 和 i 不一样:i 是在string s中从头变到尾(i=0 to \0)
} //而 j 是在数组 a 中从开始变到结尾(j=0 to 9)
if(a[9]=='x'-'0') a[9]=10;
for(int i=0;i<9;i++)
{
sum+=(1+i)*a[i];
}
if(a[9]==sum%11) return true;
else return false;
}

int main(){
string str;
ISBN num;
bool tag;

for(char response='y';response=='y';)
{
cout<<"输入ISBN(包括\"-\"):\n\t";
cin >>str;
num.set_isbn(str);
cout<<"当前输入ISBN为:\n\t"
< ";
cin >>response;
//response=tolower(response); //转换为可判断类型
}
system("PAUSE");
return 0;
}