C++学习笔记(二)----关于cin和++

在学C++ Primer这本书,看到第六章,决定选个习题来做做,习题6.12--

编写一个小程序,从标准输入读入一系列string对象,寻找连续重复出现的单词.程序应该找出满足以下条件的单词的输入位置:该单词的后面紧跟着再次出现自己本身.跟踪重复次数最多的单词及其重复次数.输出重复次数的最大值,若没有单词重复则输出说明信息.例如,如果输入是:

how,now now now brown cow cow

则输出应说明“now”这个单词出现了三次.

为简单起见,我使用了长度为10的字符数组,只是这样就对单词长度有了限制.我是这样做的.

 

    char a,b[10],c[10],d[10];
    
int i=0,j=0,s=0,t=0,k=0;
    
while(cin.get(a))//cin会自动忽略空格和回车,所以这里使用cin.get()方法
    {
        
if(a!=','&&a!=' '&&a!='\n')
            b[i
++]=a;//输入下一个单词
        else if(i>0)//遇到逗号停下比较,并且忽略多余的逗号
        {
            
if(i!=j)//两个单词长度不同
            {
                j
=0;
                
while(j<i)
                    c[j]
=b[j++];//将原来c中的单词替换成刚输入的新单词
                s=0;//当前重复次数置0
            }
            
else
            {
                
int m=0;
                
while(m<i)
                {
                    
if(b[m]!=c[m++])//两个单词不相同
                    {
                        m
=0;
                        
while(m<i)
                              c[m]
=b[m++];//将原来c中的单词替换成刚输入的新单词,j不变
                        s=0;//当前重复次数置0
                        break;//跳出未执行完的while循环
                    }
                    
else if(m==i)//两个单词相同,体现了"++"的好处.
                    {
                        s
++;
                          
if(s>t)
                        {
                            k
=0;
                            
while(k<i)
                                d[k]
=c[k++];//新的重复次数最多的单词
                            t=s;//连续出现的次数-1
                        }
                    }
                }
            }
        i
=0;
        }    
        
if(a=='\n')
            
break;//退出循环
    }
    i
=0;
    
if(t>0)
    {
        cout
<<"单词";
        
while(i<k)
            cout
<<d[i++];
        cout
<<"连续出现了"<<t+1<<"次."<<endl;
    }
    
else
    {
        cout
<<"没有任何单词连续出现超过1次."<<endl;
    }

 

写完之后看了参考答案…看得心都有点凉,原来可以直接cin>>string……

不过还是学到一些东西哈~

1.cin会自动忽略空格和回车,cin.get()方法就不会.

2.发现了“++”运算符的特殊用处.

3.没有特地为”第一次”写语句(变量初始化不算的话).

posted on 2011-03-29 19:16  Barryhe  阅读(1070)  评论(0编辑  收藏  举报

导航