//第一次尝试:
#define
_CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> int reverse_string(char* arr) { if (arr[0] == '\0') { return 0; } else { reverse_string(arr + 1); printf("%c", arr[0]); return 0; } } int main() { char arr[10] = "0"; printf("请输入字符串个数:\n"); int n = 0; scanf("%d", &n); printf("请输入字符串:\n"); /*for (int i = 0; i < n; i++) { scanf("%c", &arr[i]); }*/ scanf("%s", arr); /*for (int i = 0; i < n; i++) { printf("%c", arr[i]); }*/ //printf("%s", arr); //char arr[] = "yevoli"; reverse_string(arr); return 0; }
//用户输入一串字符,最终打印输出逆序字符串,关键点在于字符串是以‘\0’结束,所以以这个为结束标志,使用递归就可得出结果。

 

//第二次尝试:
#define
_CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<string.h> int reverse_string(char* arr) { if (strlen(arr)<2) { return arr; } else { char ch = *arr; int len = strlen(arr) - 1; *arr = *(arr + len); *(arr + len) = '\0'; reverse_string(arr + 1); //printf("%c", arr[0]); *(arr+len) = ch; return arr; } } int main() { char arr[4] = "0"; //printf("请输入字符串个数:\n"); //int n = 0; //scanf("%d", &n); printf("请输入字符串:\n"); /*for (int i = 0; i < n; i++) { scanf("%c", &arr[i]); }*/ scanf("%s", arr); /*for (int i = 0; i < n; i++) { printf("%c", arr[i]); }*/ //printf("%s", arr); //char arr[] = "yevoli"; reverse_string(arr); printf("%s\n", arr); return 0; }
//做了一些修改,在元素逆置的时候,使用标记法和指针的特性,让交换更加简单,不需添加太多没必要元素