【C语言】【面试题】【笔试题】使用有限空间,不使用库函数,逆置“student a am i”
2016-05-30 15:02
531 查看
#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;//数组和指针结合使用,把数组的首地址给指针变量pstart char *pend = arr + my_strlen(arr) - 1;//把数组最后一个元素的地址给指针变量pend char *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; }
相关文章推荐
- 【C语言】【笔试题】C语言main函数参数含义
- 【C语言】【面试题】【笔试题】对于宏的使用,if endif #define _DEBUG_ ifdef _DEBUG_
- 【C语言】【面试题】【笔试题】对于宏的使用,if endif #define _DEBUG_ ifdef _DEBUG_
- 【C语言】【面试题】【笔试题】对于char 类型用%u与%d输出结果解析
- 【C语言【面试题】【笔试题】题目:在字符串中找出第一个只出现一次的字符。
- 【C语言】【面试题】【笔试题】.字符串替换空格:请实现一个函数,把字符串中的每个空格替换成“%20”。
- 【C语言】【面试题】每瓶汽水1元,两个空瓶可以置换一瓶汽水,现在有20元,最多能喝多少瓶汽水
- 【C语言】【面试题】每瓶汽水1元,两个空瓶可以置换一瓶汽水,现在有20元,最多能喝多少瓶汽水
- 【C语言】【笔试题】【面试题】实现一个函数,可以左旋字符串中的k个字符
- 【C语言】【笔试题】【面试题】实现一个函数,可以左旋字符串中的k个字符
- 【C语言】【笔试题】【面试题】判断一个字符串是否为另外一个字符串旋转之后的字符串
- 【C语言】【笔试题】模拟实现strstr函数
- 【C语言】【笔试题】模拟实现strstr函数
- 【C语言】【面试题】【笔试题】调整数组使奇数全部都位于偶数前面
- 【C语言】编写一个折半查找函数
- 【C语言】有一个分数序列 2/1+3/2+5/3+8/5+13/8+… 求出这个数列前 20 项的和。
- 【C语言】球体从100米下落问题
- 【C语言】猴子吃桃问题
- 【C语言】【笔试题】两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同
- 用C和C++编写输出乘法口诀表