【背景】
编写一个函数StringTransfer(char *s, int n)。
该函数实现的功能为:
输入一个字符串s,要求将元素左移n位,往左移位溢出的元素需要向字符串尾部填充。
(本题取自2019级广西师范大学计信学院硕士研究生复试笔试试题)
【源码运行环境】
操作系统:Windows 10
编译环境:Dev C++ (基于C99)
【思路】
题干中,函数定义已经给出,需求大体如下给定参数1:字符串s, 2:移位次数n。
要实现的功能可以分解成:
1、先对整个字符串进行一次移位。
2、根据n进行递归函数构造。
【源码实现】
#include <stdio.h> void StringTransfer(char *s, int n){ int i = 0; char temp = s[i++]; if(sizeof(temp) == 0){ return; } while(s[i] != '\0'){ s[i-1] = s[i]; i++; } s[i-1] = temp; if(n > 1){ StringTransfer(s, n-1); } } int main() { char a[] = ""; StringTransfer(a, 3); printf("%s", a); return 0; }
【总结】
程序设计基础的关键即大事化小,细分切分。将整体需求转换成一个一个小需求。再针对小需求进行实现,则大问题便可以迎刃而解。