这是用于查找第二个字符串是否为第一个字符串的密码的代码。 为了找到它,我将加密移位存储在另一个变量中,然后比较字符串的所有相应字母以检查它们是否具有相等的移位。
#include<iostream>
#include<string>
using namespace std;
int main(){
int q;
cin>>q;
int cip[q],flag[q];
string s[q],t[q];
for(int i=0;i<q;i++){
cin>>s[i];
cin>>t[i];
}
for(int i=0;i<q;i++){
cip[i]=(s[i][1]+t[i][1])%26;
}
for(int i=0;i<q;i++){
for(int j=0;j<s[i].size();i++){
if((s[i][j]+t[i][j])%26==cip[i]){
flag[i]=1;
}
else flag[i]=0;;
}
}
for(int i=0;i<q;i++){
if(flag[i]==1){
cout<<cip[i];
}
else cout<<flag[i]-1;
}
}
运行时错误:分段错误
答案 0 :(得分:2)
此代码块不正确:
for(int i=0;i<q;i++){
for(int j=0;j<s[i].size();i++){
if((s[i][j]+t[i][j])%26==cip[i]){
flag[i]=1;
}
else flag[i]=0;;
}
}
线
for(int j=0;j<s[i].size();i++)
将其更改为j ++应该可以解决分段错误。