C语言字符串反转程序:详细解析与代码示例

问题描述

编写一个函数 invert(s),颠倒输入的字符串参数 s 后返回。在 main() 函数中测试此函数:从键盘输入一个正整数 nn∈[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;
}

代码解析

  1. invert(char *s) 函数

    • 该函数接收一个字符串指针 s 作为参数,用于对该字符串进行反转操作。
    • strlen(s) 用于获取字符串的长度。
    • 使用 for 循环遍历字符串的前半部分,将每个字符与对应的后半部分字符进行交换。
    • 使用 tmp 变量作为临时存储空间,确保交换过程顺利完成。
  2. main() 函数

    • 从键盘输入字符串数量 n
    • 使用 getchar() 读取并丢弃输入后的换行符。
    • 使用 for 循环遍历 n 次,每次读取一个字符串并调用 invert 函数进行反转。
    • 使用 printf() 输出反转后的字符串。

总结

本文详细解释了 C语言 字符串反转程序的实现逻辑和代码示例,帮助读者理解字符串处理的基本操作。通过学习本程序,读者可以掌握基本的字符串操作技巧,并为后续学习更复杂的字符串处理打下基础。

C语言字符串反转程序:详细解析与代码示例

原文地址: https://www.cveoy.top/t/topic/o0kS 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录