//编写一个函数reverse_string(char*string),实现将参数字符串中的倒叙 // 如 char arr[]="abcdef"变为"fedcba" // //方法一,循环法 //#include<stdio.h> //my_strlen(char* str) //{ // int count = 0; // while (*str != 0); // { // count++; // str++; // } // return count; //} //void reverse_string(char* str)//void为不需要返回值void (char为字符串类型 *str是取地址) //{ // int left = 0; // int right = my_strlen(str) - 1; // while (left < right) // { // char tmp = str[left]; // str[left] = str[right]; // str[right] = tmp; // left++; // right--; // } //} //int main() //{ // char arr[] = "abcdef"; // reverse_string(arr);//定义函数 // printf("%s\n", arr);//打印结果为fedcba // return 0; //} //方法二:取地址法 //#include<stdio.h> //my_strlen(char* str) //{ // int count = 0; // while (*str != 0); // { // count++; // str++; // } // return count; //} //void reverse_string(char* str)//void为不需要返回值void (char为字符串类型 *str是取地址) //{ // int left = 0; // int right = my_strlen(str) - 1; // while (left < right) // { // char tmp = *(str + left); // *(str + left) = *(str + right); // *(str + right) =tmp; // left++; // right--; // } //} //int main() //{ // char arr[] = "abcdef"; // reverse_string(arr);//定义函数 // printf("%s\n", arr);//打印结果为fedcba // return 0; //} //方法三:递归法 #include<stdio.h> my_strlen(char* str) { int count = 0; while (*str != 0); { count++; str++; } return count; } void reverse_string(char* str)//void为不需要返回值void (char为字符串类型 *str是取地址) { char tmp = *str;//把a从地址中拿出来 int len = my_strlen(str);//求地址并求字符串长度 *str = *(str + len - 1);//把原来的f即*(str+len-1)拿出,放在*str位置,即最前面 *(str + len - 1) = '\0';//将\0拿出 if (my_strlen(str + 1) >= 2)//判断条件 { reverse_string(str + 1); } } int main() { char arr[] = "abcdef"; reverse_string(arr);//定义函数 printf("%s\n", arr);//打印结果为fedcba return 0; }