解题思路:我们的目标是将输入字符串中的字符位置进行颠倒,也就是让原本在首位的字符挪到末尾,原本在末尾的字符挪到首位,依次类推
注意事项:

字符位置颠倒操作


确定交换范围:
利用循环来实现字符的两两交换从而达到颠倒的目的。循环条件设为 i < len / 2,这是因为只需交换字符串的前半部分和后半部分对应位置的字符即可完成整个字符串的颠倒。例如,对于长度为 6 的字符串,交换第 0 个和第 5 个字符、第 1 个和第 4 个字符、第 2 个和第 3 个字符就完成了颠倒,所以不需要对整个字符串从头到尾依次交换,那样会造成重复交换且浪费时间,只需要循环交换前一半长度的字符位置就行。

交换字符的具体实现:
在循环内部,使用一个临时变量(例如 temp)来辅助完成交换操作。先把 str[i] 的值暂存到 temp 中,然后将 str[len - i - 1] 的值赋给 str[i],最后再把暂存在 temp 中的值赋给 str[len - i - 1],通过这样三步操作,就完成了 str[i] 和 str[len - i - 1] 这两个对应位置字符的交换。每一轮循环都进行这样的交换,随着循环变量 i 的不断递增,就能逐步将字符串前半部分和后半部分对应的字符全部交换,实现整个字符串的颠倒。

输出颠倒后的字符串


最后使用 printf("%s\n", str); 将已经完成字符位置颠倒的字符串输出到标准输出,%s 格式化说明符会按照字符串的格式输出 str 数组中的字符内容,直到遇到字符串结束标志 '\0',同时添加换行符 \n 来保证输出格式符合题目要求,完成整个字符串颠倒功能的实现。


//首先引入了 <stdio.h> 用于标准输入输出操作(例如使用 scanf 读取输入和 printf 输出结果)

//引入 <string.h> 是为了使用 strlen 函数来获取字符串的长度。

#include <stdio.h>

#include <string.h>


int main() {

    char str[255];

    scanf("%s", str);

    int len = strlen(str);

    for (int i = 0; i < len / 2; i++) {

        char temp = str[i];

        str[i] = str[len - i - 1];

        str[len - i - 1] = temp;

    }

    printf("%s\n", str);

    return 0;

}

/*

主函数部分:

定义了一个字符数组 str 用来存储输入的字符串,通过 scanf("%s", str); 语句从标准输入读取字符串(注意这里使用 %s 格式化字符串来读取,并且要保证输入的字符串长度小于数组的大小,题目要求输入字符串长度小于 255,这里的 str 数组正好满足这个要求)。

接着使用 strlen 函数获取输入字符串 str 的实际长度,并将其存储在变量 len 中。

然后使用一个 for 循环来进行字符位置的颠倒操作。循环条件 i < len / 2 是因为只需要交换字符串前半部分和后半部分对应的字符就能实现整个字符串的颠倒,例如对于长度为 7 的字符串,交换第 0 个和第 6 个字符、第 1 个和第 5 个字符、第 2 个和第 4 个字符即可完成颠倒,中间位置(第 3 个字符,索引为 len / 2 向下取整的位置)不用交换。在循环内部,通过一个临时变量 temp 来暂存当前要交换的其中一个字符,然后进行交换操作,即将 str[i] 和 str[len - i - 1] 的值互换。

最后使用 printf("%s\n", str); 将颠倒后的字符串输出到标准输出,并且在末尾添加换行符,使输出格式符合要求,然后 return 0; 结束程序,表示程序正常退出。  */


点赞(0)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论