【问题标题】:How to manipulate the decimals in an integer? CS50 Luhn's Algorithm如何处理整数中的小数? CS50 卢恩算法
【发布时间】:2020-04-12 00:11:42
【问题描述】:

我想将数组的所有数字相加并从中得到总和。我正在努力解决的问题是我必须将我从输入中得到的数字乘以这使得一个数组有可能在一个数组中有两位数。 示例编号为 8346761。 挑战要求我取所有其他数字 (6,6,3),然后将它们相乘 (12,12,6) 并将第一个数字相加,例如 (1+2+1+2+6)=12。我只知道如何做 12+12+6=30 并且在这个特定部分寻求帮助。 我是编程新手,而且堆栈溢出,所以如果我做错了什么,请告诉我,以便我可以解决它。谢谢你

#include <cs50.h>
#include <stdio.h>

int main(void)
{
    long long cardNum = get_long_long("What is your credit card number?\n");


    printf("Number: %lld\n", cardNum);
    long long cardNumz = cardNum; 


    long long Multnumbers[20];
    cardNum /= 10;
    for (long long i=0; i < 20; i++) 
    {

        Multnumbers[i] = cardNum % 10;
        Multnumbers[i] *= 2;
        cardNum /= 100;

    }
    int sum = 0;

    int loop;
    for(loop = 0; loop < 20; loop++)
    {

      printf("%lld ", Multnumbers[loop]);

    }
     printf("\n");

    long long number=Multnumbers[0];
    for (long long rz=1;rz<11;rz++)
    {
        number = number*10+Multnumbers[rz];
    }
    printf("Big multiple number is %lld\n ", number);


 long long Nonmultnumbers[20];

    for (long long i=0; i < 20; i++) 
    {

        Nonmultnumbers[i] = cardNumz % 10;
        cardNumz /= 100;

    }
    int loopn;
    for(loopn = 0; loopn < 20; loopn++)

      printf("Non multnumbers%lld ", Nonmultnumbers[loopn]);
    printf("\n");

【问题讨论】:

    标签: c cs50 luhn


    【解决方案1】:

    如果我理解正确,您想在两位数 (12) 中取数字 (1 和 2) 来计算总和。最简单的方法可能是将这些数字除以 10 来计算第一位。并使用余数运算符计算第二个数字。

    第一位数字的计算。 (只要数字是整数,这个除法就不会给出 1.2)。

    int n = 12 / 10 // n will be 1 (1st digit).
    

    计算第二个数字。使用余数运算符,%

    int rem = 12 % 10 // rem will be 2 (2nd digit).
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-31
      • 1970-01-01
      • 2012-11-18
      • 2012-12-03
      • 2021-11-29
      • 2012-04-07
      相关资源
      最近更新 更多