对于这样的定义:
char c = '10';
报错 [Warning] overflow in implicit constant conversion [-Woverflow]
意为常量转换溢出
char中有1~9(详见ascii码表);
有意思的两个式子:
b[c++] = a[i] - '0'; a[12] = ans+'0';
由此可知:字符串中数字加 ‘0’ 得到 ‘数字’ ;’数字‘ 减 ’0‘ 得到数字;
自解:
#include<bits/stdc++.h>
using namespace std;
int main(){
char a[13];
int b[10],c=0;
int ans;
for(int i=0;i<13;i++)
{
cin>>a[i];
if(i!=1&&i!=5&&i!=11)
b[c++] = a[i] - '0';
}
if(a[12]=='X')
b[9] = 10;
int sum=0;
for(int i=1;i<=9;i++)
sum+=i*b[i-1];
//cout<<sum;
ans = sum%11;
if(ans == b[9])
cout<<"Right";
else
{
if(ans == 10)
a[12] = 'X';
else
a[12] = ans+'0';
for(int i=0;i<13;i++)
cout<<a[i];
}
return 0;
}
//#4 6-670-82162-X Right