为什么过不了,求大佬指点

P1055 [NOIP2008 普及组] ISBN 号码

可能是判断出了问题 0-670-82162-X 这是测试点2的输入与输出,据题意输入与输出不能相同
by wyd54088 @ 2023-09-09 13:00:22


有没可能这个int把他转换为ASCII编码了 if((int)a[13]==t){ printf("Right"); }else{ a[13]=t; printf("%s",a); }
by wyd54088 @ 2023-09-09 13:11:55


导致他算错输出别的数,或者不输出right
by wyd54088 @ 2023-09-09 13:14:29


这么做的话是s[i]应减去'0',可以使他恢复整型1~9几个数字因为(int('1'))=49,减去‘0’等于49-48(零的ASCII值),10的话就特判
by wyd54088 @ 2023-09-09 13:20:54


循环那用这段 if(s[i]!='-'){ j++; sum+=j*(s[i]-'0'); }
by wyd54088 @ 2023-09-09 13:23:59


后面判断用 if(h==10){ a[13]='X'; } else{ a[13]=h+'0'; }
by wyd54088 @ 2023-09-09 13:26:13


这里弄反了 if((int)a[13]==t){ printf("Right"); 应为 if(t==a[13]){ printf("Right");
by wyd54088 @ 2023-09-09 13:33:12


我帮你改了亿下,c语言全错 c++全对 尴尬的局面,可能因为我学的c++吧
by wyd54088 @ 2023-09-09 14:08:36


```cpp 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 wyd54088 @ 2023-09-09 14:19:31


真服了
by wyd54088 @ 2023-09-09 14:30:36


|