我找到输入的每两个数字的两位数之和的函数在C中不起作用?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (3)

正如标题所示,我试图找到输入函数的数字中每两位数的两位数的总和。第一个数字将是倒数第二个。例如,输入58423应该返回2 * 2(4),8 * 2(16-> 1 + 6 = 7) - > 4 + 7 = 11.我的工作完全不像那样,似乎随机返回数字。功能如下。

我正在使用n%10将获得n的最右边数字的事实,并且(n / 10)%10将获得n的下一个最右边的数字,依此类推,其中n是输入的数字。

int everyOther(long num) //(n / 10) % 10 will get you the next rightmost 
digit
{
    int incrementer = 1;
    int total = 0;
    long shifter = 1;
    int a = 0;
    while(true)
    {
        shifter = shifter *100;
        if(num/shifter == 0) 
        {
            break; // will have reached the end of the number if this is 
//true
        }
        a = 2* ((num / shifter) % 10); // every other digit right to left 
//starting from the second to last, multiplied by two
        total = total + (a/10 + a%10); //sum of the above product's 
//digits
        incrementer++;

    }
    return total;
}
提问于
用户回答回答于

你有两个错误。

首先,你只需要shifter = 100 * shifter;每个循环做一次。在每次迭代中,您希望shifter是前一次迭代的100倍。所以只需乘以100一次。你可以摆脱incrementer。这是多余的。

其次,您的示例显示添加16的数字以获得7.但由于某种原因,您注释掉了代码来执行此操作。

int everyOther (long num)
{
    int shifter = 10; // dividing by 10 gets us the hundreds digit
    int total = 0;
    int a = 0;
    while (num/shifter > 0)
    {
        a = 2 * ((num / shifter) % 10);
        total += (a/10 + a%10);
        shifter *= 100; // move two digits over
    }
    return total;
}

所属标签

可能回答问题的人

  • 嗨喽你好

    7 粉丝480 提问8 回答
  • uncle_light

    5 粉丝518 提问7 回答
  • Richel

    4 粉丝0 提问6 回答
  • 人生的旅途

    10 粉丝484 提问6 回答

扫码关注云+社区

领取腾讯云代金券