计算C中整数中特定数字的出现次数

时间:2014-09-26 15:35:59

标签: c count integer

我遇到了一些麻烦......我正在尝试输入一个数字,然后是一个多个数字的整数。我试图计算整数中第一个数字出现的次数。 现在,我制作了这个非常简单的代码,向您展示我实际上要做的事情。问题是,这段代码只比较了两个整数,并告诉我它们是否相同。请注意,我对C编程非常缺乏经验,因此这个问题......

int main(){

    int numberOne;
    int numberTwo;
    int count = 0;

    scanf("%d", &numberOne);
    scanf("%d", &numberTwo);

    if(numberOne == numberTwo){
        count++;
    }

    printf("Amount of equals found: %d", count);

return 0;
}

现在,如果我有以下输入:'1 1021023234',则输出为:'找到的等于的数量:0' 输出应该是(在这种情况下)'输出将是找到的等于的数量:2'

我希望你们能给我一些提示。

4 个答案:

答案 0 :(得分:0)

自己编写代码。以下是提示:

由于您只需要一个输入,请从程序中删除numbertwo并执行以下操作:

  1. numberone%10会给出用户输入的第一位数字。将其分配给变量one

  2. 如果用户输入(numberone)< 10,请打印first digit is found 1 time in input并退出该计划。

  3. 使用while循环并将numberone>=10置于其condition.check if(numberone%10==one)中,如果为true,则为增量变量count。加 numberone/10之后。

  4. 打印上一个printf并结束程序

答案 1 :(得分:0)

你可以将它们读作整数,但你无法按照你的方式进行比较。为了比较它们,你需要从数字中提取每个数字并进行比较。

temp = numbertwo % 10; //this gives the digit in the unit place
if(temp == numberone)
    count++;
numbertwo = numbertwo / 10; //this now removes the last digit that has already been compared

将上述代码保持在循环中,直到numbertwo变为零。它会按你的意愿工作

另一种方法是将整数读作字符串。

char* numbertwo;
char = malloc(20);
fgets(numbertwo, 20, stdin);

然后比较for循环中的整数

答案 2 :(得分:0)

如果我理解正确,那么你需要以下

#include <stdio.h>

int main(void) 
{
    unsigned int numberOne;
    unsigned int numberTwo;
    unsigned int x;
    unsigned int base;
    size_t n;

    printf( "Enter first number: " );
    scanf( "%u", &numberOne );

    printf( "Enter second number: " );
    scanf( "%u", &numberTwo );

    x = numberOne;
    base = 1;
    do { base *= 10; } while ( x /= 10 );

    n = 0;

    do { n += numberOne == numberTwo % base; } while ( numberTwo /= 10 );

    printf( "Amount of equals found: %u", n );

    return 0;
}

对于数字1276512612,输出为

Amount of equals found: 2

答案 3 :(得分:0)

您可以使用以下字符串进行尝试..

#include<stdio.h>
#include<string.h>
main()
{
char int1[100];
char int2[100];
int cnt=0;
scanf("%s",int1);
scanf("%s",int2);
char *p;
while(p=strstr(s1,s2))   //searches for the string s2 in s1 and if found, returns the address to the pointer p//
{
cnt++
s1=p+strlen(s2);   //now s1 points to the next location from the end of string s2 in s1//
}
printf("Amout of equals found:%d\n",cnt");
}