问题描述:串的处理
在实际的开发工作中,对字符串的处理是最常见的编程任务。本题目即是要求程序对用户输入的串进行处理。具体规则如下:
1. 把每个单词的首字母变为大写。
2. 把数字与字母之间用下划线字符(_)分开,使得更清晰
3. 把单词中间有多个空格的调整为1个空格。
作者:何知令
发表时间:2017年2月10
输入:
例如:
用户输入:
you and me what cpp2005program
输出:
则程序输出:
在实际的开发工作中,对字符串的处理是最常见的编程任务。本题目即是要求程序对用户输入的串进行处理。具体规则如下:
1. 把每个单词的首字母变为大写。
2. 把数字与字母之间用下划线字符(_)分开,使得更清晰
3. 把单词中间有多个空格的调整为1个空格。
作者:何知令
发表时间:2017年2月10
输入:
例如:
用户输入:
you and me what cpp2005program
输出:
则程序输出:
You And Me What Cpp_2005_program
代码:
/*
问题描述:串的处理
在实际的开发工作中,对字符串的处理是最常见的编程任务。本题目即是要求程序对用户输入的串进行处理。具体规则如下:
1. 把每个单词的首字母变为大写。
2. 把数字与字母之间用下划线字符(_)分开,使得更清晰
3. 把单词中间有多个空格的调整为1个空格。
作者:何知令
发表时间:2017年2月10
输入:
例如:
用户输入:
you and me what cpp2005program
输出:
则程序输出:
You And Me What Cpp_2005_program
*/
#include <stdio.h>
#include <stdlib.h>
int main()
{
char str[1000];
int i,j;
int len;
gets(str);
if(str[0]>='a'&&str[0]<='z')
str[0]=str[0]-32;
for(i=0; str[i]!='\0'; i++)
{
if(str[i-1]==' '&&str[i]>='a'&&str[i]<='z')
str[i]=str[i]-32;
}
len=i;
for(i=len; i>=0; i--)
{
if(str[i]==' '&&str[i-1]==' ')
for(j=i; str[j]!='\0'; j++)
{
str[j]=str[j+1];
}
if(str[0]==' '&&str[1]==' ')
for(j=0; str[j]!='\0'; j++)
{
str[j]=str[j+2];
}
}
for(len=0; str[len]!='\0'; len++);
for(i=0; str[i]!='\0'; i++)
{
if(str[i]>='0'&&str[i]<='9'&&((str[i+1]>='a'&&str[i+1]<='z')||(str[i+1]>='A'&&str[i+1]<='Z')))
{
for(j=len; j>i; j--)
{
str[j+1]=str[j];
}
str[i+1]='_';
}
len++;
if(str[i+1]>='0'&&str[i+1]<='9'&&((str[i]>='a'&&str[i]<='z')||(str[i]>='A'&&str[i]<='Z')))
{
for(j=len; j>i; j--)
{
str[j+1]=str[j];
}
str[i+1]='_';
}
len++;
}
puts(str);
return 0;
}
程序运行结果展示:
知识点总结:字符串数组
学习心得:做得出来的有些难度的一类