【C语言】【面试题】【笔试题】使用有限空间,不使用库函数,逆置“student a am i”

来源:互联网 发布:外星人源码屋 编辑:程序博客网 时间:2024/06/06 14:29
#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <stdlib.h>#include <assert.h>void reverse_arr(char *left, char *right){assert(left);assert(right);while (left < right){char tmp = *left;*left = *right;*right = tmp;left++;right--;}}int my_strlen(const char *str){int count = 0;while (*str++){count++;}return count;}void reverse(char arr[]){char *pstart = arr;//数组和指针结合使用,把数组的首地址给指针变量pstartchar *pend = arr + my_strlen(arr) - 1;//把数组最后一个元素的地址给指针变量pendchar *pcur = NULL;//用来做中间变量,传递地址的if (arr == NULL || arr[0] == '\0')//判断首地址是否为空,字符串是否为空,如果是直接结束{return;}reverse_arr(pstart, pend);//逆置数组while (*arr)//控制数组里面的内容,遍历判断{pcur = arr;while (*arr != '\0'&&*arr != ' ')//找空格确定一个整体的单词,然后逆置{arr++;}pend = arr - 1;reverse_arr(pcur, pend);if (*arr == ' ')arr++;}}int main(){char arr[] = "student a am i";reverse(arr);printf("%s\n", arr);system("pause");return 0;}


0 0
原创粉丝点击