这个问题是关于国际标准书号(ISBN)的,它由13位数字组成,分为5段。例如,978-7-111-50690-4 是一个合法的书号。编写程序,提示用户输入一个字符串书号,然后检查该书号是否合法。
时间: 2024-05-09 18:17:11 浏览: 144
你好,我是 ChitGPT。感谢你的问题。
根据你的描述,下面是一个简单的Python程序,可以检查ISBN是否合法:
```python
isbn = input("请输入书号:")
isbn = isbn.replace('-', '') # 去掉横线
if len(isbn) != 13:
print("该书号不合法!")
else:
s = sum(int(isbn[i]) * (1 if i%2==0 else 3) for i in range(12))
check_digit = (10 - s % 10) % 10
if check_digit == int(isbn[-1]):
print("该书号合法!")
else:
print("该书号不合法!")
```
该程序首先让用户输入一个书号,然后去掉横线,检查书号的长度是否为13。接着,按照ISBN计算校验位,并与输入的书号的最后一位比较,如果相等,则输出“该书号合法”,否则输出“该书号不合法”。
相关问题
国际标准书号ISBN是由13位数字组成,分为5段。例如,978-7-111-50690-4是一个合法的书号。编写java程序,提示用户输入一个字符串书号,检查该书号是否合法。
```
import java.util.Scanner;
public class ISBNValidator {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入书号:");
String isbn = scanner.nextLine();
if (isValidISBN(isbn)) {
System.out.println(isbn + " 是一个合法的书号。");
} else {
System.out.println(isbn + " 不是一个合法的书号。");
}
}
public static boolean isValidISBN(String isbn) {
// 去掉中间的分隔符
isbn = isbn.replaceAll("-", "");
// ISBN必须是13位数字
if (isbn.length() != 13 || !isbn.matches("\\d+")) {
return false;
}
// 计算校验位
int checkSum = 0;
for (int i = 0; i < 12; i++) {
int digit = Integer.parseInt(isbn.substring(i, i + 1));
checkSum += (i % 2 == 0) ? digit : digit * 3;
}
int checkDigit = 10 - (checkSum % 10);
// 校验校验位
return checkDigit == Integer.parseInt(isbn.substring(12));
}
}
```
运行结果:
```
请输入书号:978-7-111-50690-4
978-7-111-50690-4 是一个合法的书号。
```
java题【问题描述】国际标准书号ISBN是由13位数字组成,分为5段,如978-7-111-50690-4是一个合法的书号。编写程序,用户输入一个字符串书号,检查该书号是否合法。
以下是Java程序代码实现:
```java
import java.util.Scanner;
public class ISBNValidator {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("请输入一个ISBN号码:");
String isbn = input.next();
// 去掉中间的横杠
isbn = isbn.replace("-", "");
// 判断是否为13位数字
if (isbn.length() != 13 || !isbn.matches("\\d+")) {
System.out.println("输入的ISBN号码不合法!");
return;
}
// 计算校验和
int sum = 0;
for (int i = 0; i < 12; i++) {
sum += (i % 2 == 0 ? 1 : 3) * (isbn.charAt(i) - '0');
}
int checkDigit = 10 - sum % 10;
if (checkDigit == 10) {
checkDigit = 0;
}
// 比较校验位和计算出的校验和
if (checkDigit != isbn.charAt(12) - '0') {
System.out.println("输入的ISBN号码不合法!");
return;
}
System.out.println("输入的ISBN号码合法!");
}
}
```
程序首先让用户输入一个字符串书号,然后将中间的横杠去掉。接着判断该书号是否为13位数字,如果不是,则输出不合法的信息。如果是,则计算校验和,根据校验和计算出校验位,并将其与输入的书号的最后一位进行比较,如果不相等,则输出不合法的信息。如果校验通过,则输出合法的信息。
阅读全文