那天参加某公司(应公司要求不可透露名称)的招聘笔试,题目是:给出一个字符串及所要移动的位数steps,编写一个函数实现字符串的循环右移,题目中给出了函数的定义,当时的感觉是自己做的挺不错的,但是实际上机之后才发现自己还是没有把数组的边界和字符数组指针相关的内容弄清楚,也可能是因为当时时间仓促吧,最终实现代码如下,欢迎各位高手提出意见……
#include <stdio.h>
#include <stdlib.h>
void loopMove(char *pStr,int steps)
{
int length=0,i=0;
char *sub=pStr,*str;
while (*pStr!='\0')
{
length++;
pStr++;
}
pStr--;
if (steps>length)
steps=steps-length;
str=(char *)malloc(steps);
for (i=0;i<steps;i++)
str[i]=sub[length-steps+i];
for (i=0;i<length-steps;i++)
sub[length-i-1]=sub[length-steps-i-1];
for (i=0;i<steps;i++)
sub[i]=str[i];
}
int main()
{
char a[]="abcdef";
loopMove(a,7);
printf("%s\n",a);
return 0;
}
关于这段程序的时间复杂度和空间复杂度,由于没有循环的嵌套,所以时间复杂度应该为O(n),对于空间复杂度,由于引进了str用于临时存储要移出去的字符,所以空间复杂度应该为steps(steps<length)或者steps-length(steps>length),最大不超过要移位的字符串的长度……
分享到:
相关推荐
### C语言实现字符串循环右移 #### 背景与目标 在计算机科学中,字符串操作是非常常见的任务之一。其中,字符串的循环移动是一种特殊的字符串操作方式,它涉及到将字符串中的字符按照特定的方式重新排列。本篇文章...
首先,让我们来解决字符串循环右移的问题。方法一:利用已有的字符串函数。我们可以使用strcpy函数和strlen函数来实现字符串的循环右移。下面是具体的实现代码: ```c void rightloop(char *a, int n) { char b...
本实例"单片机C语言实例数码管循环右移2.rar"主要关注如何使用C语言在单片机上实现多位数码管的动态扫描显示,具体表现为数码管上的数字不断循环右移。这里我们将深入探讨数码管的工作原理、动态扫描显示技术以及...
这个压缩包文件"单片机C语言实例-用LCD循环右移显示Welcome to China.zip"显然是一个教学资源,它包含了如何使用C语言编程来控制LCD显示器显示特定文字的实例。这个实例的目的是帮助学习者理解单片机控制LCD的基本...
本资源主要介绍了计算机二级C语言上机常考算法的程序实现,涵盖了 Newton 迭代法、冒泡排序法、最大最小值、素数判断、析取数字、选择排序法、字符串循环右移和字符串循环左移八个方面的算法实现。 一、Newton 迭代...
在本教程中,我们将深入探讨如何使用C语言控制LCD(液晶显示屏)来循环右移显示“Welcome to China”这一字符串。LCD(Liquid Crystal Display)在嵌入式系统和物联网设备中广泛用于显示文本和简单图形,是许多项目...
6) C语言之使用字符串 7) C语言之格式化输出 8) C语言之格式化输入 9) C语言之格式化输入输出整理 10) C语言之基本运算符 11) C语言之其他运算符 12) C语言之表达式和语句 循环语句 13) C语言之while循环语句 ...
8. **字符循环右移**:`right_shift_r`函数将字符数组(非字符串)中的字符向右循环移动。在C#中,可以创建新的字符数组并根据需要填充,或者在原地修改字符数组,但需要注意字符串在C#中是不可变的,因此直接修改...
在打印输出方面,C语言提供了%d和%u格式化字符串来分别处理有符号和无符号的十进制整数。%d用于有符号的整数,例如int或signed int类型,而%u则用于无符号的整数,如unsigned int。对于long型的数据,相应的格式化...
42) C语言之字符串表示和字符串I/O 43) C语言之字符串输入/输出 44) C语言之字符串处理函数 操作文件 45) C语言之文件是什么 46) C语言之用fopen() 打开文件,关闭文件 fclose() 47) C语言之getc() 和 putc 读写文件...
本文将围绕"单片机C语言源码学习参考-用LCD循环右移显示Welcome to China"这一主题,深入探讨相关的知识点。 LCD(Liquid Crystal Display)显示器是单片机系统中常用的显示设备,它能够显示文本和简单的图形信息。...
6. **循环运行**:持续执行上述步骤,形成连续的右移动画效果。 在实际编写代码时,还需要注意以下几点: - **消隐处理**:为了消除闪烁,可以设置一段延时,确保每个数码管在点亮后有足够的持续时间。 - **位...
【指针与字符串在C语言中的操作】 在C语言中,指针是程序设计中的重要概念,它允许我们直接操作内存地址,而字符串在C语言中实际上是一串字符的数组。本实验旨在帮助学生理解如何通过指针操作字符串,以及进行相关...
当文字移到LCD的最右侧时,需要重新加载原始字符串到左侧开始新的循环。 项目中的源码可能包含以下关键部分: 1. LCD初始化函数:设置控制信号和显示参数。 2. LCD写指令和写数据的函数:向LCD发送数据和控制命令。...
本文将深入探讨如何用C语言编写一个名为`rightrot`的函数,该函数实现的功能是将输入的整数x按照二进制表示循环右移n位。 首先,我们需要理解二进制循环右移的概念。对于一个二进制数x,如果将其右移n位,最右侧的n...
- 实现字符串循环右移的函数,利用LCD的命令设置字符位置,并依次向左移动字符位置。 - 添加延时函数,控制字符移动的速度。 3. **仿真测试**: - 将编译好的程序加载到Proteus中的5152单片机模型上。 - 运行...
编写一个函数`fun`,功能为实现字符串循环右移的功能。具体来说,给定一个字符串`w`以及一个整数`m`,函数需要将字符串`w`的前`m`个字符移动到字符串的末尾,并保持其他字符的相对位置不变。例如,当字符串`w=...
- 使用循环和索引可以方便地对字符串进行操作,如反转字符串。 3. **位运算**: - 虽然本程序没有直接使用位运算符,但其核心思想在于展示如何通过字符串操作实现类似位运算的效果。 - 可以通过字符串表示的二...
此外,还会有用于显示字符串并实现循环右移的循环结构和延时函数。 "Last Loaded ex82.DBK"和"ex82.DSN"可能是开发环境中的项目文件或备份,它们可能包含了编译器、调试器或集成开发环境(IDE)的相关设置和状态。...
总结来说,Python提供了多种方式来实现字符串的向右移动,从基于C语言思想的循环移动元素,到Python特有的列表方法和字符串切片。在实际应用中,应根据具体需求和性能考虑选择合适的方法。这些方法不仅展示了Python...