数字中的特定位数

时间:2016-03-01 20:27:00

标签: c digit

#include <stdio.h>

int elofordul(int sz, int szj) {
    int count = 0;
    while (sz > 0) {
        int szj2 = szj % 10;
        sz = sz / 10;
        if (szj2 == szj)
            count++;
    }
    return count;
}

int main() {
    int szam, szj;
    scanf("%d", &szam);
    scanf("%d", &szj);
    printf("%d", elofordul(szam, szj));
    return 0;
}

我无法弄清楚它有什么问题。它只打印所有数字。 sz:号码,szj:数字

1 个答案:

答案 0 :(得分:1)

您的功能中存在拼写错误:szj2 = szj % 10应为szj2 = sz % 10

您应该使用英文名称作为变量和函数名称,并使用英语注释。你的变量名称令人困惑,确实引起了混乱。

您的版本中还有另一个潜在的错误:该程序应该打印1输入0 0

以下是修改后的版本:

#include <stdio.h>

int count_digit(int number, int digit) {
    int count = 0;
    for (;;) {
        if (number % 10 == digit)
            count++;
        number /= 10;
        if (number == 0)
            return count;
    }
}   

int main() {
    int number, digit;
    scanf("%d", &number);
    scanf("%d", &digit);
    printf("%d", count_digit(number, digit));
    return 0;
}