下学期第二周实验报告3(2)
2012-03-04 11:13
218 查看
实验目的:规范文本。(1)行首的第一个字符不能为空格。 (2)两个单词间只能有1个空格且必须有1个空格。 (3)标点符号前面是单词中的最后一个字母,后面有且只能有一个空格。
项目代码:
[b]运行结果:
项目代码:
#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 == ' ' && str[n + 1] == ' ') { for(int m = n; m <= j; m++) { str[m + 1] = str[m + 2]; } } }while(str == ' ' && 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 == ',' && 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; }
[b]运行结果: