2025-02-27 学习记录--C/C++-PTA 7-31 字符串循环左移

时间:2025-03-01 15:53:21
#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,表示程序正常结束 }