P1055 ISBN号码(NOIP2008普及组第一题)-C++编程解析-字符串

题目1
题目1
解题思路:
本题描述清晰,我们只需要按照题目的说明,去操作即可。利用一个数组去提取ISBN中的9位数字和1位识别码,根据识别码的计算方法,求出识别码,然后将求出的识别码和输入的识别码进行判断,如果相等,就输出Right,否则,将输入的识别码修改为我们计算出的识别码。

参考程序:

#include<iostream>
using namespace std;
int main(){
	int num[9] = {0};        
	int sum = 0;
	int identifier;       //识别码 
	string ISBN;          
	cin>>ISBN;
	//提取数字 
	for(int i = 0,j = 0;i < ISBN.length();i++){
		if(ISBN[i] >= '0' && ISBN[i] <= '9'){
			num[j] = ISBN[i] - '0';
			j++;
		}else if(ISBN[i] == 'X'){
			num[j] = 10;
		}
	}
	//计算识别码 
	for(int i = 0;i < 9;i++){
		sum += num[i] * (i+1);
	}
	identifier = sum % 11;
	//正确性判断 
	if(identifier == num[9]){
		ISBN = "Right";
	}else{
		if(identifier == 10){
			ISBN[ISBN.length()-1] = 'X';
		}else{
			ISBN[ISBN.length()-1] = identifier + '0';
		}
	}
	cout<<ISBN;
	return 0;
}

程序结果:
测试样例1-运行结果
测试样例2-运行结果
十月你好

发布了34 篇原创文章 · 获赞 4 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/xingzhe_666/article/details/102458069
今日推荐