CSP CCF 201312-2 ISBN号码 C++满分题解

2023-12-29 19:46:34

解题思路:

1.用一个int数组单独存储每个数字;用char数组存储原始标识符串,方便输出

2.计算后得到标识码,判断是否正确

#include<iostream>
using namespace std;

int main()
{
	int num[15];  //存储每个位置的数
	char arr[15];  //原始标识符 
	int pos=0;  //num存入的位置 
	
	for(int i=0;i<12;i++)
	{
		char x;
		cin>>x;
		arr[i]=x;  //存入原始字符
		int t=x-'0';
		if((t>=0&&t<=9))  //如果是数字
		{
			num[pos]=t;  //存入数字数组
			pos++;  //位置向后一位
		}
	}
	
	char isbn;  //标识码 
	cin>>isbn;  //单独输入标识码
	
	int sum=0;
	for(int i=0;i<9;i++)  //计算标识码
	{
		sum+=num[i]*(i+1);
	} 
	sum=sum%11;
	if(sum==10)
	{
		if(isbn=='X')
		{
			cout<<"Right";
		}
		else
		{
			for(int i=0;i<12;i++)
			{
				cout<<arr[i];
			}
			cout<<'X';
		}
	}
	else
	{
		int t=isbn-'0';
		if(sum==t)
		{
			cout<<"Right";
		}
		else
		{
			for(int i=0;i<12;i++)
			{
				cout<<arr[i];
			}
			cout<<sum;
		}
	}
	return 0;
}

文章来源:https://blog.csdn.net/qq_73936405/article/details/135276522
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。