本题要求编写函数,将输入字符串的前3个字符移到最后。
函数接口定义:
void Shift( char s[] );
其中char s[]是用户传入的字符串,题目保证其长度不小于3;函数Shift须将按照要求变换后的字符串仍然存在s[]里。
#include <stdio.h>
#include <string.h>
#define MAXS 6
int main()
{
char s[MAXS];
scanf("%s",s);
Shift(s);
printf("%s\n", s);
return 0;
}
void Shift( char s[] )
{
int m=MAXS-3;
char a[3]={0,0,0};
int i;
for(i = 0; i < 3;i++)
a[i] = s[i];
for(i=3;s[i]; i++)
s[i-3]=s[i];
for( i = 0; i < 3;i++)
s[m++] = a[i];
}
s[m++] = a[i];
虽然++m和m++,最终结果m都+1
但是这里m++代表的是表达式,所以先把m++这个表达式赋值给数组下标,m++这个表达式的值是m,然后再自增。最后只赋值到s[5],最后一位。