タイトル説明
すべての公式に出版された本には、それに対応するISBN番号があります。ISBNコードには、9桁、1つの識別コード、3つの区切り記号が含まれます。規定の形式はx-xxx-xxxxx-xです。ここで、記号-は区切り記号です(キーボードのマイナス記号)、最後の桁は識別コードです。たとえば、0-670-82162-4は標準のISBNコードです。ISBNコードの最初の桁は本の出版言語を表します(英語の場合は0など)。最初の区切り文字-出版社の後の3桁、たとえば670はバイキング出版社を表します。2番目の区切り文字の後の5桁は出版社の場合出版社の本のシリアル番号。最後の桁は識別コードです。
識別コードの計算方法は次のとおりです。
最初の桁に1を掛け、次の桁に2を掛けます...など、得られた結果mod11を使用して、余りが識別コードになります。図10に示すように、識別コードは大文字のXである。たとえば、ISBN番号0-670-82162-4の識別コード4は、次のように取得されます。9つの番号067082162の場合、左から右に1、2、...、9を掛けてから、それらを合計します。つまり、0×1 + 6×2 +……+ 2×9 = 1580×1 + 6×2 +……+ 2×9 = 158となり、158mod11の結果4を識別コードとします。
あなたの仕事は、入力されたISBN番号の識別コードが正しいかどうかを判断するプログラムを作成することです。正しい場合は、正しく出力するだけです。間違っている場合は、正しいと思われるISBN番号を出力します。
入力形式
書籍のISBN番号を表す文字シーケンス(入力がISBN番号の形式要件を満たしていることを確認してください)。
出力形式
入力ISBN番号の識別コードが正しい場合は1行、正しく出力しない場合は、指定された形式に従って正しいISBN番号(区切り文字-を含む)を出力します。
サンプル入力:
0-670-82162-4
サンプル出力:
right
サンプル入力:
0-670-82162-0
サンプル出力:
0-670-82162-4
#include<stdio.h>
int main()
{
char a[20];
int i,sum;
while(scanf("%s",a)!=EOF)
{
i=0,sum=0;
sum+=a[i]-'0';
for(i=2;i<5;i++)
{
sum+=((a[i]-'0')*i);//(a[i]-'0')表示将字符型转为整型
}
for(i=6;i<11;i++)
{
sum+=((a[i]-'0')*(i-1));
}
sum=sum%11;
if(sum==10)
{
if(a[12]=='X')
printf("right\n");
else
{
a[12]='X';
printf("%s\n",a);
}
}
else if(sum==(a[12]-'0'))
printf("right\n");
else
{
a[12]=(char)(sum+'0');//将整型的sum强制转换为字符型
printf("%s\n",a);
}
}
return 0;
}
大きな人はアドバイスを歓迎します。かわいい人がわからない場合は、q2651877067にプライベートメッセージを送信できます。QwQにお答えします。!!