Qhl20110321 @ 2022-08-22 20:53:22
#include<bits/stdc++.h>
using namespace std;
int main(){
int s=0,h;
char n[14];
for(int i=0;i<13;i++){
scanf("%c",&n[i]);
}
for(int i=1;i<=12;i++){
if(n[i-1]!='-'){
}else{
s=s+n[i]*i;
}
}
h=s%11;
if(h==n[13]){
cout<<"Right";
}else if(h==int(n[13])-78){
cout<<"Right";
}else{
for(int i=0;i<12;i++){
cout<<n[i];
}
cout<<h;
}
return 0;
}
by SamHJD @ 2022-08-22 21:16:01
#include<bits/stdc++.h>
using namespace std;
int main(){
int s=0,h;
char n[14];
for(int i=0;i<13;i++){
scanf("%c",&n[i]);
}
int num=1;
for(int i=1;i<=12;i++){
if(n[i-1]=='-'){
}else{
s=s+((n[i-1]-'0')*num);
num+=1;
}
}
h=s%11;
if(h==10 && n[12]=='X'){
cout<<"Right";
}
else if(h==n[12]-'0'){
cout<<"Right";
}else{
for(int i=0;i<12;i++){
cout<<n[i];
}
if(h!=10){
cout<<h;
}else{
cout<<'X';
}
}
return 0;
}
1.字符不能运算
2.字符串不能和int类型比较
3.加一个h为10的特判
4.char类型的数字转int可以用 n[i]-’0‘ 实现
5.计算s的时候有一点问题,不是乘i
这道题确实细节多,容易踩坑
by 荒泷一斗 @ 2022-08-26 13:43:39
那我呢,发自己的吧....
#include<bits/stdc++.h>
using namespace std;
int main()
{
char ch[100]={0};
int sum,i;
while(scanf("%s",ch)!=EOF)
{
i=0;
sum=0;
sum=sum+(ch[i]-'0');
for(i=2;i<5;i++)
{
sum=sum+((ch[i]-'0')*i);
}
for(i=6;i<11;i++)
{
sum=sum+((ch[i]-'0')*(i-1));
}
sum=sum%11;
if(sum==10)
{
if(ch[12]=='X')printf("Right\n");
else
{
ch[12]='X';
printf("%s\n",ch) ;
}
}
else if(sum==(ch[12]-'0'))
printf("Right\n");
else
{
ch[12]=(char)(sum+'0');
printf("%s\n",ch);
}
}
return 0;
}