本题要求编写函数,将输入字符串的前3个字符移到最后。
void Shift( char s[] )
{ char a[20];
int i,j=0,k,t;
t=strlen(s);
strcpy(a,s);
if(t==3)
return s;
else
for(i=0;i<t-3;i++)
{
a[i]=s[i+3];
}
for(i=t-3;i<t;i++)
{
a[i]=s[j];
j++;
}
return a;
}
在pta出现没用转换的
把旧的数组分别赋值到新的数组
将输入字符串的前3个字符移到最后。
能用库函数就简单了。
void Shift(char s[])
{
char a[3];
int t;
t = strlen(s);
if(t <= 3)
return;
memcpy(a,s,3);
strcpy(s,s+3);
memcpy(s+t-3,a,3);
}
两种方法
#include <stdio.h>
#include <string.h>
void Shift( char s[] )
{
for(int i=0;i<3;i++)
{
char tem=s[0];
int j;
for(j=0;s[j]!='\0';j++)
s[j]=s[j+1];
s[j-1]=tem;
//puts(s);
}
}
void Shift2( char s[] )
{
char tem[250];
int i;
for(i=3;s[i]!='\0';i++)
tem[i-3]=s[i];
for(int j=0;j<3;j++)
tem[i-1-j]=s[3-j-1];
for(int j=0;j<i+1;j++)
s[j]=tem[j];
}
int main()
{
char t[250];
char t2[250];
gets(t);
strcpy(t2,t);
Shift(t);
puts(t);
Shift2(t2);
puts(t2);
return 0;
}