解题思路:
               递归解题
注意事项:
               只有一个字符也要先输出换行,改了很多遍一直有一个测试数据格式错误,问题就出在这
参考代码:

#include<stdio.h>

#include<string.h>

// 递归函数:反转字符数组,并打印每步交换后的结果

// 参数:

//   str[]: 要反转的字符数组

//   left:  当前处理的左索引(起始为0)

//   right: 当前处理的右索引(起始为字符串末尾)

void reverseArray(char str[], int left, int right)

{

    // 递归终止条件:当左索引大于等于右索引时,无需交换,直接返回

    if(left >= right)

        return;

    // 交换字符(使用临时变量)

    char tmp = str[left]; 

    str[left] = str[right]; 

    str[right] = tmp;  

    

    // 打印当前交换后的字符串(过程输出)

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

    

    // 递归调用:左索引+1,右索引-1,处理剩余未交换的部分

    reverseArray(str, ++left, --right);

}

int main()

{

    int n;   

    char str[100];  

    scanf("%d%s", &n, str);

    // 计算字符串长度(不含结束符'\0')

    int len = strlen(str);

    // 根据n的值判断执行逻辑

    if(n == 1)

    {

        // 当n=1时:不执行反转,直接按格式输出(先空行再输出原字符串

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

    }

    else

    {

        // 当n≠1时:调用递归函数反转字符串,传入初始左右索引(0和len-1)

        reverseArray(str, 0, len - 1);

        

        // 反转完成后,按格式输出(先空行再输出最终结果)

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

    }

    return 0;

}

点赞(0)
 

0.0分

0 人评分

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

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

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

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

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

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

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

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

评论列表 共有 0 条评论

暂无评论