题目:请编写函数char*?fun(char?*tr,int?m),实现将输入的字符串每个字符“循环左移”m位。
????例如:输入"ABCDE",则循环左移2位应输出"CDEAB",若输入"1234567",则循环左移3位输出"4567123"。
????在主函数中实现输入,调用函数fun,然后输出。
char *fun1(char *str,int m){
for (int j = 0; j < m; j++) {
for (int i = 0;; i++) {
static char temp = 0;
if (i == 0) {
temp = str[i];
}
if (str[i + 1] != '\0') {
str[i] = str[i + 1];
} else {
str[i] = temp;
break;
}
}
}
return str;//注意返回值是char*类型
}
char *fun2(char *str,int m){
int i,j,len;
int temp[m];
len = strlen(str);
if(m == len) return str;
for(i=0;i<m;i++){
temp[i]=str[i];
}
for(i=0;i<len-m;i++){
str[i]=str[m+i];
}
for(j=0;j<m;j++){
str[i++]=temp[j];
}
return str;
}
int main(void){
char s[100];
int m;
printf("Please input string: ");
scanf("%s", s);
printf("Enter m:");
scanf("%d", &m);
if (m > strlen(s)){
printf("\nData error.\n");
return 0;
}
printf("Result is: %s\n", fun1(s, m));
// printf("Result is: %s\n", fun2(s, m));
return 0;
}
?
|