0
已解决
姜宇轩
中级天翼
中级天翼
题目链接: 酷町堂:1458
WA 0 代码:
知识点:字符串模拟
#include<bits/stdc++.h>
using namespace std;
string s;
int sum,cnt=1;
int main(){
cin>>s;
char zf=s[s.size()-1];
int t=int(zf)-48;
for(int i=0;i<s.size();i++){
if(s[i]=='-') continue;
sum+=(int(s[i])-48)*cnt;
++cnt;
}
cnt=1;
if(sum%11==t) cout<<"Right";
else{
for(int i=0;i<s.size()-1;i++){
if(s[i]=='-'&&cnt==3){
cout<<s[i];
break;
}
if(s[i]=='-') cnt++;
cout<<s[i];
}
cout<<t;
}
return 0;
}
现有思路:现将sum的值求出来,在判断是否为11的倍数,再输出。
问题,可能是判断的地方出了问题
烦请各位大佬指出错误,并告知应该改的地方,谢谢!
注:3天内采纳,对我帮助最大者采纳!
1
1
朱优扬
中级天翼
中级天翼
我跟你说一下我的思路吧:
可以先定义一个char类型的数组t(为了后面的代码写起来方便),赋值为' ','0','1','2','3','4','5','6','7','8','9','X'(第一个空格是来占位的)
1.求出sum的值(要注意判断是否是 - 哟);
2.将sum%11
3.判断字符串s的最后的位置是否和t[sum+1]相同 t[sum+1]是因为sum%11有可能是0
4.如果相同,则输出Right
否则可以将字符串s的最后一位变成正确的,再输出
朱优扬在2021-11-19 13:34:06追加了内容
这个不能复制,但是我能看出你的第一个循环的结束位置是不是有点问题?
最后一位为识别码
所以遍历到10就可以了
0-670-82162-4
4为12
-为11
所以想算出sum的值,需要遍历到"2",也就是10
朱优扬在2021-11-19 13:37:10追加了内容
你这个代码问题有点多(一时半会讲不清楚),建议你按照我的思路写一下