中兴移动的笔试题,字符串的移动
一道填空题:移动字符串内容,传入参数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++; } } }