peng_yu_yan @ 2021-10-31 16:15:19
#include <cstring>
#include <iostream>
using namespace std;
int main(){char c[13];int j=1;int numb;
cin>>c;char n;
for(int i=0;i<11;i++){
if(c[i]!='-'){numb=(c[i]-'0')*j++;}}
int m=numb%11;
if(m!=10){ n=m;}
else{ n='X';}
if(c[12]==n){cout<<"Right"<<endl;}
else{c[12]=n+'0';cout<<c<<endl;}
return 0;
}
by ud2_ @ 2021-10-31 16:17:21
字符串有 13 个字符,char[13]
怎么存得下?
by peng_yu_yan @ 2021-10-31 16:23:33
@ud2_ 改过之后也不可啊
by xiongjunxiang @ 2021-10-31 16:29:07
橙名怎么还误导人呢?
没有问题
by xixike @ 2021-10-31 16:34:37
@20021222dd 一共 5 个问题。
numb
没有初值。
numb=(c[i]-'0')*j++;
这一行应该是 +=
。
if(m!=10){ n=m;}
应为 n = m + '0';
。
相应的输出的时候 c[12]=n+'0';
应为 c[12] = n;
这个我也不是很理解,字符数组开小了,开大一个就够 c[14]
by xixike @ 2021-10-31 16:36:37
反正以后数组不要正好开到数据范围,多开 10 或 20 个的。
by peng_yu_yan @ 2021-10-31 16:37:19
@xixike 谢谢大哥
by peng_yu_yan @ 2021-10-31 16:38:57
@xixike 为啥要多开
by xiongjunxiang @ 2021-10-31 16:40:03
#include <cstring>
#include <iostream>
using namespace std;
char c[13];//数组应该是全局变量
int main(){
int j=1;int numb=0;//numb要初值
cin>>c;char n;
for(int i=0;i<11;i++){
if(c[i]!='-'){numb+=/*+=*/(c[i]-'0')*j++;}}
int m=numb%11;
if(m!=10){ n=m+'0'/*移到这个位置*/;}
else{ n='X';}
if(c[12]==n){cout<<"Right"<<endl;}
else{c[12]=n;cout<<c<<endl;}
return 0;
}
by ud2_ @ 2021-10-31 16:41:33
@20021222dd
为啥要多开
C 字符串以 0 结尾,比如读入样例 1 后 c
的内容其实是 {'0', '-', '6', '7', '0', '-', '8', '2', '1', '6', '2', '-', '4', 0 }
。注意 '0'
和 0
不一样。
by xixike @ 2021-10-31 16:42:04
@20021222dd 啊,我给忘了,这位巨佬 @xiongjunxiang 写的很对,字符数组以及字符串最好放到全局变量,放函数里的话经常出现为题,具体为什么我也不清楚