2301_79864519 2023-10-19 09:39 采纳率: 94.7%
浏览 4
已结题

这个编程不会写,网上大多数类似的但是输出结果却不一样,如何让标点符号不动

编写一个程序,将一个字符串中的所有单词都进行反转输出。

示例输入:
输入一个字符串: Hello, World!

预期输出:
反转后的字符串为: olleH, dlroW!

  • 写回答

2条回答 默认 最新

  • 专业研究祖传Bug编写术 全栈领域新星创作者 2023-10-19 10:13
    关注

    首先将字符串中的所有字母和非字母字符(即单词和标点符号)分开,然后反转每个单词,最后将所有单词和标点符号重新组合在一起。

    #include <stdio.h>  
    #include <string.h>  
      
    // Function to reverse a string  
    void reverse(char* str, int start, int end) {  
        while (start < end) {  
            char temp = str[start];  
            str[start] = str[end];  
            str[end] = temp;  
            start++;  
            end--;  
        }  
    }  
      
    // Function to separate words and punctuation from the input string  
    void processString(char* str) {  
        int len = strlen(str);  
        int start = 0;  
        for (int i = 0; i < len; i++) {  
            if (str[i] == ' ' || str[i] == '.' || str[i] == ',' || str[i] == '!' || str[i] == '?') {  
                // If the character is a punctuation mark, reverse the characters between the start of the word and the punctuation mark  
                reverse(str, start, i - 1);  
                start = i + 1;  
            }  
        }  
        // Reverse the characters in the last word  
        reverse(str, start, len - 1);  
    }  
      
    int main() {  
        char str[100];  
        printf("请输入一个字符串: ");  
        fgets(str, 100, stdin);  // 从stdin读取输入的字符串  
        str[strcspn(str, "\n")] = 0;  // 移除字符串结尾的'\n'  
      
        processString(str);  
      
        printf("反转后的字符串为: %s\n", str);  
        return 0;  
    }
    

    在这个程序中,processString函数负责处理字符串中的每个单词并反转它们。该函数使用一个循环遍历字符串中的每个字符。如果字符是空格或者标点符号('.',',','!'或'?'),那么它将反转从单词开始到当前字符之前的所有字符。然后,它将更新单词的开始位置为当前字符之后的下一个字符。在循环结束后,它将反转最后一个单词中的所有字符。这样,每个单词都会被反转,而标点符号的位置将保持不变。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 10月27日
  • 已采纳回答 10月19日
  • 创建了问题 10月19日

悬赏问题

  • ¥30 STM32 INMP441无法读取数据
  • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
  • ¥15 用visualstudio2022创建vue项目后无法启动
  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥500 把面具戴到人脸上,请大家贡献智慧
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
  • ¥15 各位 帮我看看如何写代码,打出来的图形要和如下图呈现的一样,急
  • ¥30 c#打开word开启修订并实时显示批注
  • ¥15 如何解决ldsc的这条报错/index error
  • ¥15 VS2022+WDK驱动开发环境