ISBN 号码例子都过了也只过了例子,我这个代码问题出在哪里

例子都过了也只过了例子,我这个代码问题出在哪里
这是题目

img


#include <iostream>
using namespace std;
char fun(char *s)//计算识别码
{
    int res = (s[0]*1+s[2]*2+s[3]*3+s[4]*4+s[6]*5+s[7]*9+s[8]*7+s[9]*8+s[10]*9)%11;
    return res + '0';
}
char s[13];
int main() {
    cin>>s;
    char a = fun(s);
    if(a=='10')
        a = 'X';
    if(s[12]==a)
    {
        cout<<"Right";
        return 0;
    }
    else
    {
        s[12]=a;
        cout<<s;
    }


    return 0;
}

请看我的博客,里面有完全一样的题目的代码

以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:

你的问题出在计算识别码的函数中,你直接把字符转成了整数进行了乘法运算。但实际上字符在计算机中存储时是以ASCII码的形式存储的,所以你需要把字符转成对应的整数,才能进行乘法运算。具体来说,你可以使用字符减去'0'得到对应的整数。修改后的代码如下:

#include <iostream>
using namespace std;
char fun(char *s) // 计算识别码
{
    int res = (s[0] - '0' + s[2] - '0' * 2 + s[3] - '0' * 3 + s[4] - '0' * 4 + s[6] - '0' * 5 + s[7] - '0' * 9 + s[8] - '0' * 7 + s[9] - '0' * 8 + s[10] - '0' * 9) % 11;
    return res + '0';
}
char s[13];
int main()
{
    cin >> s;
    char a = fun(s);
    if (a == '10')
        a = 'X';
    if (s[12] == a)
    {
        cout << "Right";
        return 0;
    }
    else
    {
        s[12] = a;
        cout << s;
    }
    return 0;
}