C++ 切换大小写以计数整数值的出现次数

C++ 切换大小写以计数整数值的出现次数,c++,C++,这是我一直在研究的另一个问题。这纯粹是出于教育目的,我知道这可能不是实现这一目标的最有效方式 目标是读取控制台/终端中的用户输入(这些是同义词吗?),并使用开关盒结构计算整数值0、1、2、3和4的出现次数 按照目前的构造,我将用户输入存储为字符值,并将每个字符与字符形式的整数进行比较(例如“0”、“1”…) 当我运行代码时,在输入一个示例(如1235000)后,我得到的所有值都为零。但是,如果我使用字符(如a000125)启动输入,程序将正确执行 这里发生了什么,我应该如何解决 #包括 使用名称

这是我一直在研究的另一个问题。这纯粹是出于教育目的,我知道这可能不是实现这一目标的最有效方式

目标是读取控制台/终端中的用户输入(这些是同义词吗?),并使用
开关盒
结构计算整数值
0
1
2
3
4
的出现次数

按照目前的构造,我将用户输入存储为字符值,并将每个字符与字符形式的整数进行比较(例如“0”、“1”…)

当我运行代码时,在输入一个示例(如
1235000
)后,我得到的所有值都为零。但是,如果我使用字符(如
a000125
)启动输入,程序将正确执行

这里发生了什么,我应该如何解决

#包括
使用名称空间std;
int main()
{
整数零=0;
整数=0;
int-twos=0;
int-threes=0;
int-fours=0;
int其他=0;
int-num;
printf(“请输入一个正整数\n”);
scanf_s(“%d”和&num);
而((num=getchar())!=EOF)
{
开关(num)
{
案例“0”:
零++;
打破
案例“1”:
1++;
打破
案例“2”:
twos++;
打破
案例“3”:
三S++;
打破
案例“4”:
fours++;
打破
违约:
其他++;
}
}
printf(“零的数量为%d\n”,零);
printf(“个数为%d\n”,个数);
printf(“两个的数量是%d\n”,两个);
printf(“三的数量是%d\n”,三);
printf(“四个的数量是%d\n”,四个);
printf(“其他字符/数字:%d\n”,其他);
返回0;
}

您将获得两次用户输入,一次是使用
scanf\u s
,一次是使用(重复调用)
getchar
。如前所述,
getchar
结果替换了
scanf_s
结果,scanf结果从未以任何方式使用过。下定决心,只使用其中一个。如果您输入一个整数,您会意识到代码比您尝试的要复杂一些,因为您没有处理字符串。@BenVoigt就是这样。问题解决了。谢谢你使我谦卑。