【背景】
编写一个函数StringTransfer(char *s, int n)。
该函数实现的功能为:
输入一个字符串s,要求将元素左移n位,往左移位溢出的元素需要向字符串尾部填充。
(本题取自2019级广西师范大学计信学院硕士研究生复试笔试试题)
【源码运行环境】
操作系统:Windows 10
编译环境:Dev C++ (基于C99)
【思路】
题干中,函数定义已经给出,需求大体如下给定参数1:字符串s, 2:移位次数n。
要实现的功能可以分解成:
1、先对整个字符串进行一次移位。
2、根据n进行递归函数构造。
【源码实现】
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | #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; } |
【总结】
程序设计基础的关键即大事化小,细分切分。将整体需求转换成一个一个小需求。再针对小需求进行实现,则大问题便可以迎刃而解。