我正在编写一个C程序,用于计算用户输入的奇数位数。
EG。
请输入电话号码:12345
countOddDigits():3
int countOddDigits(int num);
int main()
{
int number;
printf("Please enter the number: \n");
scanf("%d", &number);
printf("countOddDigits(): %d\n", countOddDigits(number));
return 0;
}
int countOddDigits(int num)
{
int result = 0, n;
while(num != 0){
n = num % 10;
if(n % 2 != 0){
result++;
}
n /= 10;
}
return result;
}
代码无效。 有人能告诉我哪里出错了吗?
答案 0 :(得分:1)
循环变量不正确。你的外环是
while (num !=0)
但 num 变量永远不会减少;最后的语句递减 n 变量。我的猜测是你要初始化
int n = num;
while (n != 0 )
{ ...
n/= 10;
}
答案 1 :(得分:1)
您的代码中存在一些错误。这是您的代码的工作版本:
#include <stdio.h>
int countOddDigits(int n);
int main()
{
int number;
printf("Please enter the number: \n");
scanf("%d", &number);
printf("countOddDigits(): %d\n", countOddDigits(number));
return 0;
}
int countOddDigits(int n)
{
int result = 0;
while(n != 0){
if(n % 2 != 0)
result++;
n /= 10;
}
return result;
}
n
和num
混合在一起 - 不需要两个变量。n%=10
只会导致错误 - 您需要检查最后一位if(n%2!=0)
,然后转到下一位n/=10
,这就是全部。