P1055 ISBN號碼問題

2021-10-07 18:37:50 字數 1356 閱讀 7674

題目描述:

每一本正式出版的圖書都有乙個

isbn

號碼與之對應,

isbn

碼包括99

位數字、

11位識別碼和

33位分隔符,其規定格式如

x-***-***xx-x

,其中符號

-就是分隔符(鍵盤上的減號),最後一位是識別碼,例如

0-670-82162-4

就是乙個標準的

isbn

碼。isbn

碼的首位數字表示書籍的出版語言,例如

00代表英語;第乙個分隔符

-之後的三位數字代表出版社,例如

670670

代表維京出版社;第二個分隔符後的五位數字代表該書在該出版社的編號;最後一位為識別碼。

識別碼的計算方法如下:

首位數字乘以

11加上次位數字乘以

22……

以此類推,用所得的結果

\bmod 11mod11

,所得的餘數即為識別碼,如果餘數為

1010

,則識別碼為大寫字母xx

。例如isbn

號碼0-670-82162-4

中的識別碼

44是這樣得到的:對

067082162這99

個數字,從左至右,分別乘以

1,2,...,91,2,...,9

再求和,即

0×1+6×2+……+2×9=1580×1+6×2+……+2×9=158

,然後取

158 \bmod 11158mod11

的結果44

作為識別碼。

你的任務是編寫程式判斷輸入的

isbn

號碼中識別碼是否正確,如果正確,則僅輸出

right

;如果錯誤,則輸出你認為是正確的

isbn

號碼。

思路:利用字元陣列處理字元資料 利

用輔助字元陣列將其中的數字部分分離出來

將字元轉換為數字計算校驗碼 按

照要求進行相應輸出

**如下:

#include int main() 

} int n = 0;

for (j = 0;j < 9;j++)

n %= 11;

if (n == s2[9] - '0')

else if (n == 10 && s2[9] == 'x')

else

if (n != 10)

printf("-%d", n);

else

printf("-x");

} return 0;

}

洛谷 P1055 ISBN號碼

每一本正式出版的圖書都有乙個isbn號碼與之對應,isbn碼包括9位數字 1位識別碼和3位分隔符,其規定格式如 x xx x 其中符號 就是分隔符 鍵盤上的減號 最後一位是識別碼,例如0 670 82162 4就是乙個標準的isbn碼。isbn碼的首位數字表示書籍的出版語言,例如0代表英語 第乙個分...

洛谷P1055 ISBN號碼

每一本正式出版的圖書都有乙個isbn號碼與之對應,isbn碼包括99位數字 11位識別碼和33位分隔符,其規定格式如x xx x,其中符號 就是分隔符 鍵盤上的減號 最後一位是識別碼,例如0 670 82162 4就是乙個標準的isbn碼。isbn碼的首位數字表示書籍的出版語言,例如00代表英語 第...

洛谷 P1055 ISBN號碼

題目描述 每一本正式出版的圖書都有乙個isbn號碼與之對應,isbn碼包括99位數字 11位識別碼和33位分隔符,其規定格式如x xx x,其中符號 就是分隔符 鍵盤上的減號 最後一位是識別碼,例如0 670 82162 4就是乙個標準的isbn碼。isbn碼的首位數字表示書籍的出版語言,例如00代...