C++如何计算用户输入的数字中的偶数位数
C++ How to count the number of even digits in a user entered number?
在这个问题中,我试图在用户输入的数字中找到偶数位数。我无法使用数组。该程序是一个基于菜单的程序,这是选项1。到目前为止,我想我已经把剩下的代码处理得很好了,只是这部分的数学问题让我很头疼。如果有任何帮助,我将不胜感激。
int main() {
int choice; // user input for menu options
const int evenDig = 1, // constants for menu choices
fact = 2,
quit = 3;
cout << "Welcome to playing with numbers!n";
do
{
showMenu (); // displays menu
cin >> choice;
// call getValidUserInputPosNumGT0, passing the value in choice
// as an argument
getValidUserInputPosNumGT0(choice);
if (choice == evenDig) // option 1
{
int num; // user entered number
cout << "Enter a positive number greater than zero...";
cin >> num;
numEvenDigits(num);
}
}while(choice != quit);
return 0;
}
void showMenu ()
{
cout << "1) Count the even digits in a numbern"
<< "2) Compute the factorial of a numbern"
<< "3) Quitn"
<< "Select an option (1..3).. ";
}
void getValidUserInputPosNumGT0 (int choice) // validation function
{
while ( choice < 1 || choice > 3) // input validation loop
{
cout << "Select an option (1..3).n";
cin >> choice;
}
}
int numEvenDigits (int num)
{
int even = 0; // int that will be returned as number of even numbers
if ( num > 0)
{
int rem = num % 10;
if (rem % 2 == 0)
even++;
cout << "numEvenDigits("<<num<<") = "<< even;
cout << endl;
}
else
cout << "Please enter a positive nonzero number." << endl;
}
谢谢!
由于有多种方法可以解决您想要解决的问题,我将尝试给出一些关于数学和思维过程的提示,以帮助您找到自己的解决方案,而不是提供解决方案
正如Sam Varshavchik所建议的,描述问题和解决方案,看看你在代码中做了什么,以及它是如何匹配的。
- 您使用moduluo函数的方法是正确的:
- 数字mod10="最右边的数字">
- 数字mod2,如果奇数=1,如果偶数=0
所以你已经在你的代码中成功地完成了一次
int rem = num % 10;
if (rem % 2 == 0)
even++;
其余的数字呢?-->你在的某个地方错过了一个循环
以12346为例
- 第一轮num=12346,mod 10=6,mod 2=0-->偶数++
- 下一轮?
- 重复,但使用12345
我会让你弄清楚如何拨打12345。
- 减法、除法、整数截断等
然后您将错过如何定义循环的结束。
干杯!
您需要更改一些代码
void getValidUserInputPosNumGT0 (int choice);
至
void getValidUserInputPosNumGT0 (int &choice);
因为若要修改选择,必须通过引用传递,而不是通过值传递。
和
int numEvenDigits (int num)
{
int even = 0; // int that will be returned as number of even numbers
if ( num > 0)
{
int rem = num % 10;
if (rem % 2 == 0)
even++;
cout << "numEvenDigits("<<num<<") = "<< even;
cout << endl;
}
else
cout << "Please enter a positive nonzero number." << endl;
}
至
int numEvenDigits (int num)
{
int even = 0;
if ( num > 0)
{
for (int val =num;val>0;val/=10)
{
if (val % 2 == 0)
even++;
}
cout << "numEvenDigits("<<num<<") = "<< even;
cout << endl;
}
else
cout << "Please enter a positive nonzero number." << endl;
return even;
}
或者,这与您的代码相似
int numEvenDigits (int num)
{
int even = 0,val=num,rem;
if ( num > 0)
{
while(val>0)
{
rem=val%10;
if(rem%2==0)
even++;
val/=10;
}
cout << "numEvenDigits("<<num<<") = "<< even;
cout << endl;
}
else
cout << "Please enter a positive nonzero number." << endl;
return even;
}
只需执行此操作即可在数字中找到偶数1.查找偶数位数的代码必须循环编写2.每次迭代后减少数字以移动下一个数字。记住我们从右到左数数字。
Int number, x, even=0;
Cin>> number;
While(num>=0)
{
X=num%10;
If(x%2==0)
Even++;
Num=num/10;// decrease number
}
相关文章:
- 从C++中的数字输入动态创建矩阵
- 为什么这个程序接受整数和字母数字输入并打印它们? C++ 中的 std::string 也采用整数值吗?
- 非数字输入检查
- C++和 XAML - 来自文本框的数字输入
- 该代码不会在其中显示任何数字输入.如何使它显示任何输入
- 如何从数字输入文件中查找最大数字
- C++ 将数字输入数组并输出
- 无法从字符串获取数字输入
- 输入数字输入到if语句中
- C++数字输入的输入验证
- 来自单个数字输入的Arduino读取脉冲宽度频率和占空比
- 如何区分数字输入和字母输入
- 为什么我的程序取消了更多的数字输入
- C++:运行程序时出现分段错误(将文件中的数字输入数组)
- C++:使用for循环允许用户将数字输入到数组中
- C++ - 如何将空格分隔的数字输入数组
- _wtoi返回零:输入零或非数字输入
- 数字输入的输入验证
- 为什么我随机生成的数字输入都是零
- 我需要让一个数字输入的用户输出单个数字使用c++