hechuan_bibe @ 2024-10-17 11:59:46
#include<stdio.h>
#include<string.h>
int main()
{
char arr[14];
int sum = 0;
scanf("%s", arr,sizeof(arr));
int j = 1;
for (int i = 0; i < 13; i++)
{
if (arr[i] != '-')
{
sum += (arr[i]-'0') * j;
j++;
}
}
sum %= 11;
if (sum == 10)
{
sum = 'X';
}
// 比较校验位
if (arr[12] == sum) // arr[12] 是最后一个字符
{
printf("Right\n");
}
else
{
// 输出格式
for (int i = 0; i < 12; i++)
{
printf("%c", arr[i]); // 输出前12位
}
printf("%d\n", sum);
}
return 0;
}
by wuyusheng @ 2024-10-17 12:24:21
@hechuan_bibe 我写的比你短一点
#include<bits/stdc++.h>
using namespace std;
int main()
{
char a[14],c;
cin>>a;
int b=0,d=0;
for(int i=0;i<11;i++)
{
if(a[i]!='-')
{
d++;
b+=d*(a[i]-'0');
}
}
b%=11;
if(b==10) c='X';
else c=b+'0';
if(c==a[12])
cout<<"Right"<<endl;
else
{
a[12]=c;
cout<<a<<endl;
}
return 0;
}
by xywuyu @ 2024-10-17 12:26:51
#include<bits/stdc++.h>
using namespace std;
char a[10];
int main()
{long long n,j,e=0;char b,c,d,k,f;
cin>>a[1]>>b>>a[2]>>a[3]>>a[4]>>c>>a[5]>>a[6]>>a[7]>>a[8]>>a[9]>>d>>f;
for (int i=1;i<=9;++i)
{n=i;e+=(a[n]-'0')*n;}
if (e%11==10)
{k='X';
if (k==f)
cout<<"Right";
else cout<<a[1]<<b<<a[2]<<a[3]<<a[4]<<c<<a[5]<<a[6]<<a[7]<<a[8]<<a[9]<<d<<k;
}
else {j=f-'0';
if (e%11==j)
cout<<"Right";
else cout<<a[1]<<b<<a[2]<<a[3]<<a[4]<<c<<a[5]<<a[6]<<a[7]<<a[8]<<a[9]<<d<<e%11;
}
return 0;}
by hechuan_bibe @ 2024-10-17 18:04:59
@wuyusheng 谢谢这个我看了,但是b-'0’是什么意思
by wuyusheng @ 2024-10-17 21:31:06
@hechuan_bibe 是把字符转成数字