例子都过了也只过了例子,我这个代码问题出在哪里
这是题目
#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;
}