LQ0255 串的处理文本处理

Posted 海岛Blog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LQ0255 串的处理文本处理相关的知识,希望对你有一定的参考价值。

题目来源:蓝桥杯2011初赛 Java C组H题

题目描述
在实际的开发工作中,对字符串的处理是最常见的编程任务。本题目即是要求程序对用户输入的串进行处理。具体规则如下:

把每个单词的首字母变为大写。

把数字与字母之间用下划线字符(_)分开,使得更清晰

把单词中间有多个空格的调整为 1 个空格。

输入描述
用户输入的串中只有小写字母,空格和数字,不含其它的字母或符号。每个单词间由 1 个或多个空格分隔。假设用户输入的串长度不超过 200 个字符。

输出描述
输出处理好的字符串。

输入输出样例
示例
输入

you and me what cpp2005program

输出

You And Me What Cpp_2005_program

问题分析
文本处理问题,使用字符函数来解决。

AC的C语言程序如下:

/* LQ0255 串的处理 */

#include <stdio.h>
#include <ctype.h>

#define N 200
char s[N + 1];

int main()

    while (gets(s)) 
        if (islower(s[0]))
            s[0] = toupper(s[0]);
        
        for (int i = 1; s[i]; i++)
            if (islower(s[i]) && isspace(s[i - 1]))
                s[i] = toupper(s[i]);
        
        for (int i = 0; s[i]; i++)
            if (!isspace(s[i]) && isspace(s[i + 1]))
                printf("%c ", s[i]);
            else if ((isalpha(s[i]) && isdigit(s[i + 1])) || 
                     (isdigit(s[i]) && isalpha(s[i + 1])) )
                printf("%c_", s[i]);
            else 
                if (!isspace(s[i])) printf("%c", s[i]);
            
        
        printf("\\n");
    
    
    return 0;

以上是关于LQ0255 串的处理文本处理的主要内容,如果未能解决你的问题,请参考以下文章

LQ0261 画表格文本处理

LQ0261 画表格文本处理

LQ0128 贪吃蛇长度文本处理

LQ0100 人物相关性分析文本处理

LQ0070 字符统计文本处理

LQ0038 单词分析文本处理