2 xhyaoe321 xhyaoe321 于 2016.03.27 10:12 提问

C++新手求解:同一行声明多个变量等问题

#include
//该程序是要输入多个数字,打印出该数字及出现的次数
int main()
{
int currval=0;
int val=0;
//这两个声明,教材是作一行写的 int currval =0,val=0; 我win10下的VS2010作一行写就报错? 系统原因?编译器?

if(std::cin>>currval)
{
    int cnt=1;
    while(std::cin>>val)
    {
        if(currval==val)
        {
            ++cnt;
        }
        else
        {
            std::cout<<currval<<" occurs "<<cnt<<" times"<<std::endl;
            currval=val;
            cnt=1;
        }
    }
        std::cout<<currval<<" occurs "<<cnt<<" times"<<std::endl;
        //写完发现跟教材是一样的,但是我这一行没有执行,无法打印出最后那个数字跟它出现的次数。为什么呢?
}
return 0;

}

2个回答

bob_cap
bob_cap   2016.03.27 10:19

你是怎么让循环退出的?

xhyaoe321
xhyaoe321 抱歉,我发现最后一个数字其实还是打不出来的。。那个break我也加得不对。请指教
一年多之前 回复
xhyaoe321
xhyaoe321 我现在在while循环末尾加了个break;可以打印出最后一个数字的次数了,但还不符合只有一个数的情况。好奇的是为什么教材里不用break?
一年多之前 回复
xhyaoe321
xhyaoe321 前辈你好,我看了下,跟教材《C++ Primer》里的例子是一样的 。是不是只有当键入一个数它才循环一次,没有读到键盘输入就直接跳出循环?
一年多之前 回复
bob_cap
bob_cap   2016.03.27 18:51

这个是你要的么?

 #include <iostream>

int main()
{
    int currval=0; 
    int val=0; 
    if(std::cin>>currval)
    {
        int cnt=1;
        do{
            std::cin>>val;  //我把输入放在循环里面 用获取的字符是不是'\n'来决定是否继续循环
            if(currval==val)
            {
                ++cnt;
            }
            else
            {
                std::cout<<currval<<" occurs "<<cnt<<" times"<<std::endl;
                //下面两句是为了算每个字符连续输入的几次的么?
                //currval=val;  
                //cnt=1; 如果加这句 得到的就是连续输入的个数 不是总个数
            }
        }while(std::cin.get()!='\n');//判断该字符是否为'\n'
        std::cout<<currval<<" occurs "<<cnt<<" times"<<std::endl;
    }
    return 0;
}

我也是新手,希望对你有帮助
你看的是第几章啊,我没看找到这个例子啊

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!