C语言字符串反转程序:详细解析与代码示例
C语言字符串反转程序:详细解析与代码示例
问题描述
编写一个函数 invert(s),颠倒输入的字符串参数 s 后返回。在 main() 函数中测试此函数:从键盘输入一个正整数 n(n∈[1,20]), 然后再输入 n 个字符串(长度不大于 100),对于每一个字符串,然后调用 invert 函数进行颠倒字符串操作,将颠倒后的字符串打印在屏幕上。
输入形式
从键盘输入整数 n,然后再输入 n 个字符串,每行一个字符串。
输出形式
输出各个字符串颠倒以后的字符串,每个字符串之间用换行符隔开。
输入样例
3
1AdkflsddfYjkdfDD
aaaaaaaaaaAAAAAAAAAA
12345678aBc
输出样例
DDfdkjYfddslfkdA1
AAAAAAAAAAaaaaaaaaaa
cBa87654321
样例说明
因为输入 n 为 3,故输入 3 个字符串。将字符串'1AdkflsddfYjkdfDD' 首尾颠倒后的结果是'DDfdkjYfddslfkdA1';将字符串'aaaaaaaaaaAAAAAAAAAA' 首尾颠倒后的结果是'AAAAAAAAAAaaaaaaaaaa';将字符串'12345678aBc' 首尾颠倒后的结果是'cBa87654321';故输出:
DDfdkjYfddslfkdA1
AAAAAAAAAAaaaaaaaaaa
cBa87654321
代码示例
#include <stdio.h>
#include <string.h>
void invert(char *s) {
int len = strlen(s);
for (int i = 0; i < len / 2; i++) {
char tmp = s[i];
s[i] = s[len - i - 1];
s[len - i - 1] = tmp;
}
}
int main() {
int n;
scanf('%d', &n);
getchar(); // 读取n后需要先将换行符读取掉
char s[105];
for (int i = 0; i < n; i++) {
fgets(s, 105, stdin); // 读取一行字符串
invert(s); // 颠倒字符串
printf('%s', s); // 输出颠倒后的字符串
}
return 0;
}
代码解析
-
invert(char *s)函数- 该函数接收一个字符串指针
s作为参数,用于对该字符串进行反转操作。 strlen(s)用于获取字符串的长度。- 使用
for循环遍历字符串的前半部分,将每个字符与对应的后半部分字符进行交换。 - 使用
tmp变量作为临时存储空间,确保交换过程顺利完成。
- 该函数接收一个字符串指针
-
main()函数- 从键盘输入字符串数量
n。 - 使用
getchar()读取并丢弃输入后的换行符。 - 使用
for循环遍历n次,每次读取一个字符串并调用invert函数进行反转。 - 使用
printf()输出反转后的字符串。
- 从键盘输入字符串数量
总结
本文详细解释了 C语言 字符串反转程序的实现逻辑和代码示例,帮助读者理解字符串处理的基本操作。通过学习本程序,读者可以掌握基本的字符串操作技巧,并为后续学习更复杂的字符串处理打下基础。
原文地址: https://www.cveoy.top/t/topic/o0kS 著作权归作者所有。请勿转载和采集!