2025-02-27 学习记录--C/C++-PTA 7-31 字符串循环左移
#include <stdio.h> // 包含标准输入输出库,用于使用fgets、scanf、puts等函数
#include <string.h> // 包含字符串处理库,用于使用strlen和strcspn等函数
int main() { // 主函数,程序的入口
char strs[102]; // 定义一个字符数组strs,用于存储输入的字符串,最大长度为102
int n; // 定义一个整型变量n,用于存储输入的整数
// 将输入的第一行内容放入字符数组strs中
fgets(strs, sizeof(strs), stdin); // 从标准输入读取一行内容,存储到strs中
// sizeof(strs)表示strs的最大长度
// stdin表示从标准输入读取
strs[strcspn(strs, "\n")] = '\0'; // 使用strcspn找到换行符的位置,并将其替换为字符串结束符'\0'
// 目的是去除fgets读取的换行符
scanf("%d", &n); // 从标准输入读取一个整数,存储到变量n中
for(int i = 0; i < n; i++) { // 循环n次,每次将字符串strs向左循环移动一位
int len = strlen(strs); // 获取当前字符串strs的长度
char temp = strs[0]; // 将字符串的第一个字符存储到临时变量temp中
// 目的是防止在后续移动过程中被覆盖
// 将字符串的每一项前移一位
for(int j = 0; j < len - 1; j++) { // 循环遍历字符串的每个字符
strs[j] = strs[j + 1]; // 将后一个字符赋值给前一个字符
}
strs[len - 1] = temp; // 将临时变量temp中的字符(原第一个字符)放到字符串的末尾
}
puts(strs); // 输出最终的字符串strs
return 0; // 返回0,表示程序正常结束
}