将一行字符串整理为规范文本

来源:互联网 发布:网络二手车平台靠谱吗 编辑:程序博客网 时间:2024/05/22 10:23

这个程序写来写去,感觉思路不是很清楚,写完了吧,思路好像有,但是总是觉得不太好,很冗余,累赘的感觉!

哎,越往后,程序写的越慢,越不会写了!

加油,Andy-刘!

/************************************/*学生:刘中华/*日期:2014-1-10/*功能:将一行字符整理为规范文本输出/****************************************/#include<iostream>using namespace std;void part_word(char a[]);void main(){char s[]="you are my super   ! superstar ,";part_word(s);}void part_word(char a[]){int i=0,j=0,m,n=0,k[20],p;//k用来存最长单词的位置char b[20],c[20][20];bool word=false;while(a[i]!='\0'){if(a[i]==' '||a[i]==','||a[i]=='.'||a[i]==';'||a[i]=='!') {word=false;//输入为空格不构成单词}else word=true;if(word==true)//现在开始构成单词{b[j]=a[i];j++;//只有当开始构成单词后,j才不为零,j表示了单词字符个数}if(j!=0&&word==false)//j!=0表示开始构成单词了,再次遇到空格,则表示一个单词结束了{for(m=0;m<j;m++){k[n]=j;//k[n]存放每行单词的字符数cout<<b[m];c[n][m]=b[m];//将单词都存在二位数组里,每行存一个单词}j=0;n++;cout<<endl;}if(a[i]==','||a[i]=='.'||a[i]==';'||a[i]=='!') {c[n][0]=a[i];k[n]=1;//最开始就是忽略了这里的长度,但是打印出来的始终是“?”,按道理,没有长度的话,就是随机数,就是瞎打了,cout<<n<<c[n][0]<<"*********";//具体为什么是?,说不清楚,反正就是得不到正确结果n++;}i++;//开始下一个字符的判断}for(m=0;m<n;m++)//行数为n{for(p=0;p<k[m];p++)cout<<c[m][p];cout<<endl;}for(m=0;m<n;m++){for(p=0;p<k[m];p++)cout<<c[m][p];if(c[m+1][0]==','||c[m+1][0]=='.'||c[m+1][0]==';'||c[m+1][0]=='!'||c[m+1][0]=='?')//如果下一行第一个字母是标点就直接打印,在打空格{cout<<c[m+1][0]<<" ";m++;//是标点,直接打印出来,再打空格,然后跳过标点行}elsecout<<" ";}cout<<endl;}

0 0
原创粉丝点击