数字频率程序(HackerRank)

问题描述 投票:-1回答:2

我正在尝试将给定字符串的每个字符与数字1到9进行比较,并在成功比较后增加count变量。最后,为每个数字打印计数变量的值。但是这些方法没有奏效。不知道为什么。

int main() {

    char *s;
    s = malloc(1024 * sizeof(char));
    scanf("%[^\n]", s);

    int i,j,count=0;
    for(i=0;i<=9;i++)
    {   
        for(j=0;j<strlen(s);j++)
        {
            if(s[j]==i)
            {
                count++;
            }
        }
    printf("%d ",count);
    }   
    return 0;
}
c arrays string
2个回答
0
投票
   if(s[j]==i) <<<<<<<<<
   {
        count++;
   }

您正在将字符的序数值与0到9范围内的整数进行比较。这不是您想要的。您可以使用以下方法将数字转换为int:

char c = '5';
int x = c - '0';

因此您的情况将是:

if(s[j] -'0' ==i)
{
    count++;
}

0
投票

在C中,字符值是一个数字,但不是您在此处期望的数字。当我们拥有字符“ 2”并且检查它等于一个数字时,我们实际上是在询问什么是ASCII码“ 2”,在这种情况下为50。您需要调整代码,以便将其转换为ASCII码转换成数字表示形式,所以50变为2。这很简单,只需更改您的代码即可,看起来像这样]

if((s[j] - '0') == i){

© www.soinside.com 2019 - 2024. All rights reserved.