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 串的处理文本处理的主要内容,如果未能解决你的问题,请参考以下文章