【背景】
编写一个函数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;
}
【总结】
程序设计基础的关键即大事化小,细分切分。将整体需求转换成一个一个小需求。再针对小需求进行实现,则大问题便可以迎刃而解。