#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<assert.h>
void show(char arr[], int len) //打印数组 char arr[]表示数组,int len表示数组长度
{
assert(len > 0);
int i = 0;
for (i = 0; i < len; i++)
{
printf("%c", arr[i]);
}
}
void swap(char *x, char *y)
{
*x ^= *y;
*y ^= *x;
*x ^= *y;
}
void left_reverse(char arr[], int len, int reverse_num)//左旋字符串函数, char arr[]表示数组,int len表示数组长度
{ //int reverse_num 代表左旋字符串的个数
assert(len > 0);
int i = 0;
int n = 0;
char temp;
for (n = 0; n < reverse_num; n++)
{
temp = arr[0];
for (i = 0; i < len; i++)
{
arr[i] = arr[i + 1];
}
arr[len - 1] = temp;
}
}
void right_reverse(char arr[], int len, int reverse_num)
{
assert(len > 0);
int start = 0;
int end = len - 1;
int i = 0;
int j = 1;
int end1 = len - 1;
for (i = 0; i < reverse_num; i++)
{
int start = 0;
int end = strlen(arr) - 1;
int start1 = 1;
int end1 = end;
while (start < end)
{
swap(&arr[start], &arr[end]);
start++;
end--;
}
while (start1 < end1)
{
swap(&arr[start1], &arr[end1]);
start1++;
end1--;
}
}
}
int judge(char arr[], char str[], int len, int len1)
{
assert(len > 0);
assert(len1 > 0);
if (strncmp(arr, str, len) == 0)
{
return 1;
}
else
{
return 0;
}
}
int main()
{
char array[] = "AEBCD";
char str[] = "abcde";
int len = strlen(array);
int len1;
int number = 0;
int i = 0;
printf("请输入要判断的字符串:");
scanf("%s", str);
printf("\n");
len1 = strlen(str);
printf("请输入一个字符串:");
scanf("%s", array);
printf("\n");
printf("please enter right_number:");
scanf("%d", &number);
printf("右旋之前的字符:");
show(array, len);
printf("\n");
printf("右旋之后的字符:");
right_reverse(array, len, number);
show(array, len);
printf("\n");
if (judge(array, str, len, len1))
{
printf("该字符串是另一个字符串右旋之后的字符串");
}
else
{
printf("该字符串不是另一个字符串右旋之后的字符串");
}
printf("\n");
printf("\n");
printf("请输入一个字符串");
scanf("%s", array);
printf("\n");
printf("please enter left_number:");
scanf("%d", &number);
printf("左旋之前的字符:");
show(array, len);
printf("\n");
left_reverse(array, len, number);
printf("左旋之后的字符:");
show(array, len);
printf("\n");
if (judge(array, str, len, len1))
{
printf("该字符串是另一个字符串左旋之后的字符串");
}
else
{
printf("该字符串不是另一个字符串左旋之后的字符串");
}
printf("\n");
system("pause");
return 0;
}
判断一个字符串是否为另外一个字符串左旋或右旋之后的字符串。
最新推荐文章于 2021-02-13 09:06:50 发布