下学期第二周实验报告3(2)

实验目的:规范文本。(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;
} 


运行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值