解题思路:
递归解题
注意事项:
只有一个字符也要先输出换行,改了很多遍一直有一个测试数据格式错误,问题就出在这
参考代码:
#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 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复