实验目的:规范文本。(1)行首的第一个字符不能为空格。 (2)两个单词间只能有1个空格且必须有1个空格。 (3)标点符号前面是单词中的最后一个字母,后面有且只能有一个空格。
项目代码:
#include <iostream>
#include "string.h"
using namespace std;
int main()
{
char str[200];
cin.get(str, 100, '\n');
for(int i = 0, j = 0; str[i] != '\0'; i++)
{
j++;
} //统计输入字符的个数
do
{
if(str[0] == ' ')
{
for( int k = 0; k <=j; k++)
{
str[k] = str[k + 1];
}
}
}while(str[0] == ' '); //去除行首的空格
for(int n = 0; n <= j; n++)
{
do
{
if(str[n] == ' ' && str[n + 1] == ' ')
{
for(int m = n; m <= j; m++)
{
str[m + 1] = str[m + 2];
}
}
}while(str[n] == ' ' && str[n + 1] == ' ');
} //去除连续的多个空格,仅保留一个空格
for(int p = 0; p <= j; p++)
{
if((str[p] == ' ' && str[p + 1] == ',') || (str[p] == ' ' && str[p + 1] == '.') || (str[p] == ' ' && str[p + 1] == ';') || (str[p] == ' ' && str[p + 1] == '?') || (str[p] == ' ' && str[p + 1] == '!'))
{
for(int q = p; q <= j; q++)
{
str[q] = str[q + 1];
}
}
} //保重标点符号紧跟单词的最后一个字母
for(int b = 0; b <= j; b++)
{
if((str[b] == ',' && str[b + 1] != ' ') || (str[b] == '.' && str[b + 1] != ' ') || (str[b] == ';' && str[b + 1] != ' ') || (str[b] == '?' && str[b + 1] != ' ') || (str[b] == '!' && str[b + 1] != ' '))
{
for(int c = b;c < j; j--)
{
str[j + 1] = str[j];
}
str[b + 1] = ' ';
}
} //保证标点符号后面有一个空格
cout << str << endl;
return 0;
}
运行结果: