写一个C语言程序,声明一个字符串,长度与内容自定。从控制台输入一个整数N,如果N大于零,则对字符串循环左移N位;如果N小于零,则对字符串循环右移N位。
时间: 2024-09-08 19:01:31 浏览: 14
以下是一个简单的C语言程序,用于实现您所描述的功能。程序中包含了字符串的声明,以及根据输入的整数N进行左移或右移的操作。
```c
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
// 函数声明
void rotateLeft(char *str, int n);
void rotateRight(char *str, int n);
int main() {
// 声明并初始化字符串
char str[] = "Hello, World!";
int N;
// 提示用户输入整数N
printf("请输入一个整数N:");
scanf("%d", &N);
// 检查N的值并进行相应操作
if (N > 0) {
// 对字符串进行左移操作
rotateLeft(str, N);
} else if (N < 0) {
// 对字符串进行右移操作
rotateRight(str, -N);
} else {
printf("N等于0,无需移动。\n");
}
// 输出移动后的字符串
printf("移动后的字符串为:%s\n", str);
return 0;
}
// 函数定义
void rotateLeft(char *str, int n) {
int len = strlen(str);
// 使n对字符串长度取模,避免无效移动
n = n % len;
// 临时存储要移动的部分
char temp[n + 1];
// 拷贝要移动的部分
memcpy(temp, str, n);
// 将剩余部分左移
memmove(str, str + n, len - n);
// 将原首部部分拷贝到字符串尾部
memcpy(str + len - n, temp, n);
// 添加字符串结束符
str[len] = '\0';
}
void rotateRight(char *str, int n) {
rotateLeft(str, strlen(str) - (n % strlen(str)));
}
```
这段代码首先包含了必要的头文件,并声明了两个辅助函数`rotateLeft`和`rotateRight`分别用于左移和右移字符串。`main`函数中首先声明并初始化了一个字符串,然后提示用户输入一个整数N,并根据N的值调用相应的函数进行字符串的移动操作。