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我也加得不对。请指教
2 年多之前 回复
xhyaoe321
xhyaoe321 我现在在while循环末尾加了个break;可以打印出最后一个数字的次数了,但还不符合只有一个数的情况。好奇的是为什么教材里不用break?
2 年多之前 回复
xhyaoe321
xhyaoe321 前辈你好,我看了下,跟教材《C++ Primer》里的例子是一样的 。是不是只有当键入一个数它才循环一次,没有读到键盘输入就直接跳出循环?
2 年多之前 回复
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币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Java一行代码可声明多个同类变量
Java支持一句语句声明多个同类变量。Example:String a = "Hello", c = "hello"; int x = 5, y = 5;
Python3单行定义多个变量或赋值
python3 单行定义多个变量或赋值 元组拆封
c语言,定义多个指针的写法,多个指针的声明
先说明正确的多个指针声明应该为:例:int *a,*b,*c,*d; 按照常理定义变量应该为:类型 变量名 如:int a; 但是定义指针时,int *a;依照 类型 变量名 的规则来看,就像定义了一个int型的,名字为“*a”的变量,但是实际上我们声明的变量为int*型的变量a,那我们可以这样int* a;这样看起来类型就是int*了,变量为a,但是当我们int* a,b;时,看起来就是定义
从汇编层面看多个赋值语句写在一行, 用','符号分开
在看算法例题时, 发现在一个宏中出现了previous[i] = i-1, next[i] = i+1; 这样的写法 我就想知道他为啥这么写, 为啥不写成如下语句. previous[i] = i-1; next[i] = i+1; 难道有什么特别的好处么? 看调试版的反汇编实现 数组内存地址 previous[]数组内存地址 : dword ptr [ebp-2Ch]
回溯法解N皇后问题
问题描述:在n*n格的棋盘上放置彼此不受攻击的n个皇后。按照国际象棋的规则,皇后可以攻击与之在同一行或同一列或同一斜线上的棋子。n皇后问题等价于在n*n格的棋盘上放置n个皇后,任何2个皇后不放在同一行或同一列或同一斜线上。 算法描述:描述语言为Java import java.util.Scanner; /** * @author: Jarvenman * @time: 2018年1
【c语言问题系列教程之一】变量声明和初始化
一、基本类型 1.c语言整数类型的大小并没有精确的定义,而是随着编译器的类型而变化,ANSI C能保证的只是数据的最小尺寸。char>=8位,short>=16位,int>=16位,long>=32位。 2.因此,可以用typedef定义int16和int32,然后根据实际的机器环境把它们定义为int,short,long等类型。但是,标准头文件已经定义了标准名称int16_t,uint32_
数组可以一次声明多个同类型的变量,这些变量在内存中连续存储的.
常量 语法:const 类型 常量名=常量值。赋值后,在其他地方不允许赋值。 枚举 定义一种枚举类型,同时要指定这个类型的所有值。(一般和类定义在同一个级别,方便于同一个命名空间下的所 有类都可以使用这个枚举,方法中也可定义) enum  自定义名称{值1,值2,值3...值n}; 枚举作用: 限制用户不能随意赋值,只能在定义枚举时列举的值中选择相对应的值, 注意:定义枚举
规则 2.7:不允许把多个语句写在一行中,即一行只写一条语句。
declare begin     -- 初始化局部变量     i_l_variable1 := 1;     i_l_variable2 := i_variable1;     i_l_variable3 := i_l_variable1 + i_l_variable2;     -- 判断开始时间     if (dt_l_begindate > sysdate) then
C语言有关指针的变量声明中的几个易错点
Technorati 标签: 指针,typedef,const,define          我们都知道,至少听说过指针对于C语言中的重要意义,但是在使用指针时却唱唱让我们痛不欲生,这里有几个在声明指针有关的变量时易错的地方。 1. int* 和 int  * (注意空格的位置)         对于单变量声明,即一条语句中只声明一个指针变量的情况,没有区别;原因是C语言允许形式的自由性。即以下两种声明方式效果相同。 int *a; int* a;        对于一条语句中声明
Scala同时声明多个变量
val (a, b, c) = (1, 2, &quot;a&quot;)