c语言处理字符串算法趣题

/*串的处理
在实际的开发工作中,对字符串的处理是最常见的编程任务。本题目即是要求程序对用户输入的串进行处理。具体规则如下:
1. 把每个单词的首字母变为大写。
2. 把数字与字母之间用下划线字符(_)分开,使得更清晰
3. 把单词中间有多个空格的调整为1个空格。
例如:
用户输入:
you and me what cpp2005program
则程序输出:
You And Me What Cpp_2005_program
用户输入:
this is a 99cat
则程序输出:
This Is A 99_cat

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

要求考生把所有函数写在一个文件中。调试好后,存入与考生文件夹下对应题号的“解答.txt”中即可。相关的工程文件不要拷入。 */
//交流信箱:askrsw@https://www.360docs.net/doc/9e6783450.html,
#include
#include
#include



int main(int argc,char* argv)
{
char szBuffer[200] = {0};
char szResult[400] = {0};

int i,j,nLen;
int nMark = 0; //0表示第一个单词第一个字母
//1表示刚处理过的字符是字母
//2表示刚处理过的字符是数字
//3表示刚处理过的字符是空格

printf("Please input the strings:\n");
gets(szBuffer);

nLen = strlen(szBuffer);
for(i=0,j=0;i{
switch(nMark)
{
case 0:
{
if(szBuffer[i]>='a'&&szBuffer[i]<='z')
{
szResult[j++] = szBuffer[i]-'a'+'A';
nMark = 1;
}
else if(szBuffer[i]>='0'&&szBuffer[i]<='9')
{
szResult[j++] = szBuffer[i];
nMark = 2;
}
else if(szBuffer[i]==' ')
{
szResult[j++] = szBuffer[i];
nMark = 0;
}
else
{
printf("Error");
exit(1);
}
}
break;
case 1:
{
if(szBuffer[i]>='a'&&szBuffer[i]<='z')
{
szResult[j++] = szBuffer[i];
nMark = 1;
}
else if(szBuffer[i]>='0'&&szBuffer[i]<='9')
{
szResult[j++] = '_';
szResult[j++] = szBuffer[i];
nMark = 2;
}
else if(szBuffer[i]==' ')
{
szResult[j++] = szBuffer[i];
nMark = 3;
}
else
{
printf("Error");
exit(1);
}
}
break;
case 2:
{
if(szBuffer[i]>='a'&&szBuffer[i]<='z')
{
szResult[j++] = '_';
szResult[j++] = szBuffer[i];
nMark = 1;
}
else if(szBuffer[i]>='0'&&szBuffer[i]<='9')
{
szResult[j++] = szBuffer[i];
nMark = 2;
}
else if(szBuffer[i]==' ')
{
szResult[j++] = szBuffer[i];
nMark = 3;
}
else
{
printf("Error");
exit(1);
}
}
break;
case 3:
{
if(szBuffer[i]>='a'&&szBuffer[i]<='z')
{

szResult[j++] = szBuffer[i]-'a'+'A';
nMark = 1;
}
else if(szBuffer[i]>='0'&&szBuffer[i]<='9')
{
szResult[j++] = szBuffer[i];
nMark = 2;
}
else if(szBuffer[i]==' ')
{
nMark = 3;
}
else
{
printf("Error");
exit(1);
}
}
break;
default:
break;
}
}

printf("%s",szResult);

return 0;
}

相关文档
最新文档