我在这段代码上花了一天时间来计算偶数和零和奇数
从long数据类型我使用函数发送数据。这是代码
#include <iostream>
using namespace std;
void digitCount(long long int &num);
int main ()
{
long long int num;
cout <<"Enter any No. " <<endl;
cin >>num;
cout <<endl;
digitCount(num);
return 0;
}
void digitCount(long long int &num)
{
int e = 0, z = 0, o = 0, x = 0;
for (int i = 0; i <= num; i++)
{
x= num % 10;
if(x == 0)
{
++z;
num = num / 10;
}
else if(x%2==1)
{
++o;
num = num / 10;
}
else
{
++e;
num = num / 10;
}
}
cout << "No of zeros Digits = " << z<< endl;
cout << "No of odd Digits = " << o << endl;
cout << "No of Even Digits = " << e << endl;
}
问题是,当我计算奇数时,有一个错过的数字
例如我输入时:12345
结果是
no of even : 2
no of odd : 2 (should be 3)
no of zero : 0
这里的问题是:
编写一个函数,该函数将参数作为整数(作为长整数值)并返回奇数,偶数和零数字的数字。还要编写一个程序来测试你的功能。使用传递参考方法。
答案 0 :(得分:3)
而不是for
循环,你应该使用:
while (num > 0)
您不断更改num
,当它变为1时(在您的12345示例中),i
为3.我还修改了您的digitcount
以展示一些不错的格式可读代码。
void digitCount(long long int &num) {
int e(0), z(0), o(0), x(0);
while (num > 0) {
x = num % 10;
if (x == 0) {
z++;
}
else if (x % 2 == 1) {
o++;
}
else {
e++;
}
num /= 10;
}
cout << "No of zeros Digits = " << z << endl;
cout << "No of odd Digits = " << o << endl;
cout << "No of Even Digits = " << e << endl;
}
如果您认为这可以解决您的问题&amp;&amp;是最好的答案,请点击此答案旁边的复选标记。感谢