如何计算重复的整数

时间:2016-09-14 14:34:07

标签: c

我想计算int中相同使用数量的数量。

if循环不起作用的原因是什么?

#include <stdio.h>

int main(void){

    unsigned int digit;
    unsigned int n;
    int current_digit;

     scanf("%u", &digit);
     scanf("%u", &n);


     int i = 0;

    while(current_digit != n) {

        current_digit = n % 10;
        n /= 10;
             printf("%i", current_digit);
             if (current_digit == digit){
              i++;

         }

    }

     printf("%d", i);
}

我希望if循环检查digit中使用的时间n。但if循环无法正常工作。

示例:digit = 1 n = 11111然后结果应为5,因为1在n中使用了5次,但输出为4

2 个答案:

答案 0 :(得分:1)

你&#34;覆盖&#34;当您使用digit分配原始digit = n % 10(您正在寻找的那个)时。如果您考虑变量的命名,可以使用searched_digitcurrent_digit,然后检查为if (current_digit == searched_digit)

(不可否认,这些详细的变量名称不是惯用的C,但如果您只是在学习,请不要使用含糊不清或含糊不清的命名来增加复杂性。)

此外,while条件需要一些工作,digit != n可能永远不会错误...尝试循环,直到没有更多数字。

答案 1 :(得分:0)

您正在编写代码以撤消您要求scanf()为您执行的操作,将文本数字组合成数字。相反,如果你使用未转换的文本,它会更简单:

#include <stdio.h>

int main () {

    char character, string[1024];

    (void) scanf("%c", &character);
    (void) scanf("%s", string);

    int count = 0;

    for (char *pointer = string; *pointer != '\0'; ++pointer) {

        if (*pointer == character) {
            count++;
        }
    }

    printf("%d\n", count);

    return 0;
}

<强> USAGE

> ./a.out
1 11111
5
>

这可能无法解决您的问题,但如果是这样,那么问题可能比您所描述的更多(例如,字母出现在数据中,因此您需要scanf()来帮助隔离数字等。)