#include <bits/stdc++.h>
using namespace std;
//循环移位
void flash(char* x)
{
char t = x[0];
int len = strlen(x);
for (int i = 0; i < len; i++)
{
x[i] = x[i + 1];
}
x[len - 1] = t;
}
//判断子串
int comparison(char* a, char* b)
{
int flag = 0;
int ans = 0;
for (int i = 0; i < strlen(a); i++)
{
for (int j = 0; j < strlen(b); j++)
{
if (a[i] == b[j])
{
flag += 1;
}
}
while (i == strlen(a) - 1)
{
if (flag == strlen(b))
{
ans = 1;
}
else if (flag == strlen(a))
{
ans = 2;
}
else ans = 3;
break;
}
}
return ans;
}
int main()
{
char a[32], b[32];
cin >> a >> b;
int flag = 0;
for (int i = 0; i < strlen(a); i++)
{
flash(a);
for(int j=0;j<strlen(b);j++)
{
while(j != 0)
{
flash(b);
}
flag = comparison(a, b);
if (flag == 0 && flag != 3)
{
continue;
}
else{
cout << "true";
return 0;
}
}
}
cout << "false";
return 0;
}
你的代码错误很多,更改如下
#include <bits/stdc++.h>
using namespace std;
//循环移位
void flash(char *x)
{
char t = x[0];
int len = strlen(x);
for (int i = 0; i < len-1; i++)
{
x[i] = x[i + 1];
}
x[len - 1] = t;
}
//判断子串
int comparison(char *p, char *q)
{
int flag;
for (int i = 0; i < strlen(p); i++)
{
flag = 0;
for (int j = 0; j < strlen(q); j++)
{
if (p[i+j] == q[j])
{
flag += 1;
}
else
break;
}
if (flag == strlen(q))
return 1;
}
return 0;
}
int main()
{
char a[32], b[32];
char *p, *q;
cin >> a >> b;
p = a;
q = b;
if (strlen(a) < strlen(b))
{
p = b;
q = a;
}
for (int j = 0; j < strlen(p); j++)
{
if (j != 0)
{
flash(p);
}
if (comparison(p, q))
{
cout << "true";
return 0;
}
}
cout << "false";
return 0;
}
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!