旋转字符及其判断

本文介绍了如何使用C语言实现字符数组的左旋操作,并提供了一个判断两个字符串是否为旋转关系的算法。通过具体代码示例,展示了字符旋转的实现细节及判断逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

旋转字符


# include<stdio.h>

void rotation_left(char arr[20],int k,int sz)
{
char tem[20];
int i=0,j=0,l=sz-k,a=0;
for(i=0;i<k;i++)
{
tem[i]=arr[i];//将arr从0到k的字符一一赋给tem


}
for(j=0;j<l;j++)
{
arr[j]=arr[j+k];//将k开始往后的字符一一前挪
}
for(l=sz-k,a=0;l<sz;l++,a++)
{
arr[l]=tem[a];//将由arr赋给tem的字符一一放在arr的后面
}
}
int main()
{
char arr[20];
int k=0;
int sz=0;
scanf("%s %d",&arr,&k);
sz=strlen(arr);
rotation_left(arr,k,sz);
printf("%s\n",arr);
return 0;
}

旋转字符的判断
# include<stdio.h>
int rotation_left_right(char arr1[20],char arr2[20],int sz)
{
int i=0,j=0,k=0;
for(i=0;i<sz;i++)
{
if((i>0)&&(arr1[i]=arr2[1]))//寻找arr1中与arr2的第一个字符相同的字符
{
for(i,j=0;i<sz;j++,i++)//判断arr1自i开始的字符是否与arr2从第一个到sz-i个字符一一相同
{
if(arr1[i]!=arr2[j])
break;
}
if(i=sz)
{
for(j,k=0;j<sz;j++,k++)//判断arr2从j开始的字符是否与arr1从第0到i的字符一一相同
{
if(arr1[k]!=arr2[j])
break;

}
}
}
if(j=sz)
return 1;
else
return 0;
}
}
int main()
{
char arr1[20],arr2[20];
int sz=0,sz2=0,a=0;
scanf("%s %s",&arr1,&arr2);
sz=strlen(arr1);
sz2=strlen(arr2);;
if(sz==sz2)
{
a=rotation_left_right( arr1,arr2,sz);
if(a=1)
printf("arr2是arr1旋转后的字符串");

else
printf("arr2不是arr1旋转后的字符串");


}
else
printf("arr2不是arr1旋转后的字符串");
return 0;


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值