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

Using C, get sum of every other digit not working at all

我正在尝试做一个简单的程序,如果我输入 - 为了简单起见 -

进入

5235

在屏幕上打印出来

length is 4
sum is 8

进入

54468

打印

length is 5
sum is 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. 您需要将sumlength初始化为0。否则,它们会保留垃圾值

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

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

    否则你会无限循环。

  3. 您需要交换这两行,以便它们成为:

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

    否则,在第ith次迭代中,digit会得到第i+1th位,而不是第ith位.

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


完整列表:

#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

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