使用C,得到根本不工作的其他数字的总和

时间:2017-07-30 23:32:39

标签: c cs50

我正在尝试做一个简单的程序,如果我输入 - 保持简单 -

输入

  

5235

在屏幕上打印

  

长度为4
  总和是8

输入

  

54468

打印

  

长度为5
  总和是10

然而,只有长度似乎有效,我不知道为什么。

我得到了用户输入的数字的总长度,并指定数字是否为奇数然后添加偶数,反之亦然,但它似乎不起作用。

#include <stdio.h>
#include <cs50.h>
int main(void)
{
  long long cc_number;
  long long x;
  long long length;
  int sum, count = 0;

  do
  {
    printf("Please Enter Credit Card Number ");
    cc_number= get_long_long();
    x= cc_number;
  }
  while (x>0);

  while (x != 0)
  {
    x= x/10;
    length++;
  }

  x= cc_number;

  while (x != 0)
  {
    x= x/10;
    int digit= (int) (x % 10);
    count++;
    if ((count % 2 == 0) && (length %2 ==1))
    {
      sum=sum+digit;
    }
    else ((count % 2 == 1) && (length %2 ==0))
    {
      sum=sum+digit;
    }
  }

  printf("the sum is %i", sum);
  printf("the length of the digits is %lli", length);
}

1 个答案:

答案 0 :(得分:0)

  1. 您需要将sumlength初始化为0。否则,他们会保留垃圾值

  2. 您接受输入的循环不正确。你需要

    do {
    
    ...} while (x <= 0);
    

    否则你无限循环。

  3. 您需要将这两行交换成:

    int digit = (int) (x % 10);
    x = x/10;
    

    否则,在i th 迭代中,digit将获得i + 1 th 数字,而不是i th 数字。

  4. else (...)语法无效。您需要else if (...)

  5. 完整列表:

    #include <stdio.h>
    int main(void)
    {
      long long cc_number;
      long long x;
      long long length = 0;
      int sum = 0, count = 0;
    
      cc_number = (x = 54560);
    
    
      while (x != 0)
      {
        x= x/10;
        length++;
      }
    
      x= cc_number;
    
      while (x != 0)
      {
        x= x/10;
        int digit= (int) (x % 10);
        count++;
        if ((count % 2 == 0) && (length %2 ==1))
        {
          sum=sum+digit;
        }
        else if((count % 2 == 1) && (length %2 ==0))
        {
          sum=sum+digit;
        }
      }
    
      printf("The sum is %i\n", sum);
      printf("The length of the digits is %lli\n", length);
    }
    

    打印出来

    $ ./a.out   
    The sum is 10
    The length of the digits is 5
    

    (我稍微修改了一下打印语句。)