程序C计算奇数位的总数

时间:2017-09-05 15:36:55

标签: c function loops

我正在编写一个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;
}

代码无效。 有人能告诉我哪里出错了吗?

2 个答案:

答案 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;
}
  1. 您正在将nnum混合在一起 - 不需要两个变量。
  2. n%=10只会导致错误 - 您需要检查最后一位if(n%2!=0),然后转到下一位n/=10,这就是全部。