中兴移动的笔试题,字符串的移动

一道填空题:移动字符串内容,传入参数char *a和m,规则如下:将a中字符串的倒数m个字符移到字符串前面,其余依次像右移。例如:ABCDEFGHI,M=3,那么移到之后就是GHIABCDEF。
注意不得修改原代码

void fun(char *w, int m)
{
  int i=0; len=strlen(w);

  if(m>len)  
m = len;

  while(__________){
  _________________;
  }

  w[len-m] = '\0';

}


 

 

void convert(char *w, int m)
{
  int i=0;  
  int len=strlen(w);
    
  if(m>len)  
  m = len;
    
  while(len-m > 0 || (m=0) != 0){
  for(i=0,w[len]=w[0],++m;i<len;i++) w[i]=w[i+1];
  }
  w[len-m] = '\0';
}

int main()
{
  char w[300] = {0};
  strcpy(w,"ABCDEFGHI");
  convert(w,3);
  printf("######## w = %s\n",w);
  return 0;
}


 

下面我自己写的一个当然感觉不满足题意了,也可以参开一下

void convert(char *w, int m)
{
	char data[300];
	strcpy(data,w);
	int len = strlen(w);
	int n = len-m;
	int j = 0;

	for(int i=0;i<len;i++)
	{
		if(i<m)
		{
			w[i] = data[n];
			n++;
		}
		else
		{
			w[i] = data[j];
			j++;
		}
	}
}


 

原文地址:https://www.cnblogs.com/byfei/p/3112193.html