Arien @ 2023-09-07 16:24:34
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int i=0,j=0,sum=0,t=0;
char a[14]={0};
for(i=0;i<13;i++){
scanf("%c",&a[i]);
if(a[i]=='-'){
continue;
}else{
j++;
sum +=(int)a[i]*j;
}
}
getchar();
t=sum%11;
if(t==10){
a[13]='X';
}
if((int)a[13]==t){
printf("Right");
}else{
a[13]=t;
printf("%s",a);
}
return 0;
}
by nnbnwd @ 2023-09-09 13:00:22
可能是判断出了问题
0-670-82162-X
这是测试点2的输入与输出,据题意输入与输出不能相同
by nnbnwd @ 2023-09-09 13:11:55
有没可能这个int把他转换为ASCII编码了
if((int)a[13]==t){
printf("Right");
}else{
a[13]=t;
printf("%s",a);
}
by nnbnwd @ 2023-09-09 13:14:29
导致他算错输出别的数,或者不输出right
by nnbnwd @ 2023-09-09 13:20:54
这么做的话是s[i]应减去'0',可以使他恢复整型1~9几个数字因为(int('1'))=49,减去‘0’等于49-48(零的ASCII值),10的话就特判
by nnbnwd @ 2023-09-09 13:23:59
循环那用这段
if(s[i]!='-'){
j++;
sum+=j*(s[i]-'0');
}
by nnbnwd @ 2023-09-09 13:26:13
后面判断用
if(h==10){
a[13]='X';
}
else{
a[13]=h+'0';
}
by nnbnwd @ 2023-09-09 13:33:12
这里弄反了
if((int)a[13]==t){
printf("Right");
应为
if(t==a[13]){
printf("Right");
by nnbnwd @ 2023-09-09 14:08:36
我帮你改了亿下,c语言全错 c++全对
尴尬的局面,可能因为我学的c++吧
by nnbnwd @ 2023-09-09 14:19:31
int main(){
char a[14],ch;
cin>>a;
int sum=0,j=0;
for(int i=0;i<11;i++){
if(a[i]!='-'){
j++;
sum+=j*(a[i]-'0');
}
}
sum%=11;
if(sum==10){
ch='X';
}else{
ch=sum+'0';
}
if(ch==a[12]){
cout<<"Right"<<endl;
}else{
a[12]=ch;
cout<<a;
}
return 0;
}
by nnbnwd @ 2023-09-09 14:30:36
真服了